Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ionic-protocol adaptor #1567

Merged
merged 2 commits into from
Oct 24, 2024
Merged

ionic-protocol adaptor #1567

merged 2 commits into from
Oct 24, 2024

Conversation

amish777
Copy link
Contributor

  • Added base and optimism market for ionic-protocol adaptor .
  • Fixed the supply and borrow calculation .
  • Added APY reward for every token .
  • Fixed apy base calculation .

@amish777 amish777 changed the title ionic adaptor ionic-protocol adaptor Oct 23, 2024
@llamatester
Copy link

Error while running ionic-protocol adapter:

> [email protected] test
> jest

Current Chain: optimism
Current Chain: mode
Reward Tokens: [
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC',
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC'
]
CHAIN optimism
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 127752409485487358
Raw formatted APR: 127752409485487358
Decimals: 18
Normalized Rate (scaled) 0.12775240948548736
Rate as Number 0.12775240948548736
Raw formatted APR: 127752409485487358
Decimals: 18
Normalized Rate (scaled) 0.12775240948548736
Rate as Number 0.12775240948548736
Percentage return 12.775240948548735
Reward Tokens: [
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC',
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC'
]
CHAIN optimism
decimals 6
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 127158799281945972
Raw formatted APR: 127158799281945972
Decimals: 6
Normalized Rate (scaled) 0.12715879928194596
Rate as Number 127158799281.94597
Raw formatted APR: 127158799281945972
Decimals: 6
Normalized Rate (scaled) 0.12715879928194596
Rate as Number 127158799281.94597
Percentage return 12.715879928194596
Reward Tokens: [
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC',
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC'
]
CHAIN optimism
decimals 6
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC',
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC'
]
CHAIN optimism
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC',
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC'
]
CHAIN optimism
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC',
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC'
]
CHAIN optimism
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC',
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC'
]
CHAIN optimism
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 312048233391285147
Raw formatted APR: 312048233391285147
Decimals: 18
Normalized Rate (scaled) 0.3120482333912851
Rate as Number 0.3120482333912851
Raw formatted APR: 312048233391285147
Decimals: 18
Normalized Rate (scaled) 0.3120482333912851
Rate as Number 0.3120482333912851
Percentage return 31.204823339128513
Reward Tokens: [
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC',
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC'
]
CHAIN optimism
decimals 8
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC',
  '0x887d1c6A4f3548279c2a8A9D0FA61B5D458d14fC'
]
CHAIN optimism
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
token 0x4200000000000000000000000000000000000006
rewards APY 12.78
token 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85
rewards APY 12.72
token 0x94b008aA00579c1307B0EF2c499aD98a8ce58e58
rewards APY 0.00
token 0x57F5E098CaD7A3D1Eed53991D4d66C45C9AF7812
rewards APY 0.00
token 0x4200000000000000000000000000000000000042
rewards APY 0.00
token 0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb
rewards APY 0.00
token 0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4
rewards APY 31.20
token 0x68f180fcCe6836688e9084f035309E29Bf0A2095
rewards APY 0.00
token 0xc40F949F8a4e094D1b49a23ea9241D289B7b2819
rewards APY 0.00
Reward Tokens: [
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA'
]
CHAIN mode
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA'
]
CHAIN mode
decimals 6
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA'
]
CHAIN mode
decimals 6
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 50618043528093391
Raw formatted APR: 50618043528093391
Decimals: 6
Normalized Rate (scaled) 0.05061804352809339
Rate as Number 50618043528.09339
Raw formatted APR: 50618043528093391
Decimals: 6
Normalized Rate (scaled) 0.05061804352809339
Rate as Number 50618043528.09339
Percentage return 5.061804352809339
Reward Tokens: [
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA'
]
CHAIN mode
decimals 8
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 32045916604101518
Raw formatted APR: 32045916604101518
Decimals: 8
Normalized Rate (scaled) 0.03204591660410152
Rate as Number 320459166.0410152
Raw formatted APR: 32045916604101518
Decimals: 8
Normalized Rate (scaled) 0.03204591660410152
Rate as Number 320459166.0410152
Percentage return 3.204591660410152
Reward Tokens: [
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA'
]
CHAIN mode
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA'
]
CHAIN mode
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 2299030396706057
Raw formatted APR: 2299030396706057
Decimals: 18
Normalized Rate (scaled) 0.002299030396706057
Rate as Number 0.002299030396706057
Raw formatted APR: 2299030396706057
Decimals: 18
Normalized Rate (scaled) 0.002299030396706057
Rate as Number 0.002299030396706057
Percentage return 0.22990303967060569
Reward Tokens: [
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA'
]
CHAIN mode
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA'
]
CHAIN mode
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 16833637891065887
Raw formatted APR: 16833637891065887
Decimals: 18
Normalized Rate (scaled) 0.016833637891065886
Rate as Number 0.016833637891065886
Raw formatted APR: 16833637891065887
Decimals: 18
Normalized Rate (scaled) 0.016833637891065886
Rate as Number 0.016833637891065886
Percentage return 1.6833637891065887
Reward Tokens: [
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA'
]
CHAIN mode
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 23212786997231229
Raw formatted APR: 23212786997231229
Decimals: 18
Normalized Rate (scaled) 0.023212786997231227
Rate as Number 0.023212786997231227
Raw formatted APR: 23212786997231229
Decimals: 18
Normalized Rate (scaled) 0.023212786997231227
Rate as Number 0.023212786997231227
Percentage return 2.3212786997231225
Reward Tokens: [
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA',
  '0x18470019bF0E94611f15852F7e93cf5D65BC34CA'
]
CHAIN mode
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 267893002088698
Raw formatted APR: 267893002088698
Decimals: 18
Normalized Rate (scaled) 0.000267893002088698
Rate as Number 0.000267893002088698
Raw formatted APR: 267893002088698
Decimals: 18
Normalized Rate (scaled) 0.000267893002088698
Rate as Number 0.000267893002088698
Percentage return 0.0267893002088698
token 0x4200000000000000000000000000000000000006
rewards APY 0.00
token 0xd988097fb8612cc24eeC14542bC03424c656005f
rewards APY 0.00
token 0xf0F161fDA2712DB8b566946122a5af183995e2eD
rewards APY 5.06
token 0xcDd475325D6F564d27247D1DddBb0DAc6fA0a5CF
rewards APY 3.20
token 0x028227c4dd1e5419d11Bb6fa6e661920c519D4F5
rewards APY 0.00
token 0x2416092f143378750bb29b79eD961ab195CcEea5
rewards APY 0.23
token 0x80137510979822322193FC997d400D5A6C747bf7
rewards APY 0.00
token 0xe7903B1F75C534Dd8159b313d92cDCfbC62cB3Cd
rewards APY 1.68
token 0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A
rewards APY 2.32
token 0x59889b7021243dB5B1e065385F918316cD90D46c
rewards APY 0.03
Current Chain: base
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 12768852010963004
Raw formatted APR: 12768852010963004
Decimals: 18
Normalized Rate (scaled) 0.012768852010963004
Rate as Number 0.012768852010963004
Raw formatted APR: 12768852010963004
Decimals: 18
Normalized Rate (scaled) 0.012768852010963004
Rate as Number 0.012768852010963004
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 79310173841898538
Raw formatted APR: 79310173841898538
Decimals: 18
Normalized Rate (scaled) 0.07931017384189853
Rate as Number 0.07931017384189853
Raw formatted APR: 79310173841898538
Decimals: 18
Normalized Rate (scaled) 0.07931017384189853
Rate as Number 0.07931017384189853
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 9.207902585286154
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 6
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 35436587964062494
Raw formatted APR: 35436587964062494
Decimals: 6
Normalized Rate (scaled) 0.035436587964062495
Rate as Number 35436587964.06249
Raw formatted APR: 35436587964062494
Decimals: 6
Normalized Rate (scaled) 0.035436587964062495
Rate as Number 35436587964.06249
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 91016351017390628
Raw formatted APR: 91016351017390628
Decimals: 6
Normalized Rate (scaled) 0.09101635101739063
Rate as Number 91016351017.39062
Raw formatted APR: 91016351017390628
Decimals: 6
Normalized Rate (scaled) 0.09101635101739063
Rate as Number 91016351017.39062
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 12.645293898145313
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 8
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 164688313359382853
Raw formatted APR: 164688313359382853
Decimals: 8
Normalized Rate (scaled) 0.16468831335938283
Rate as Number 1646883133.5938284
Raw formatted APR: 164688313359382853
Decimals: 8
Normalized Rate (scaled) 0.16468831335938283
Rate as Number 1646883133.5938284
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 16.468831335938283
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 131412871365966783
Raw formatted APR: 131412871365966783
Decimals: 18
Normalized Rate (scaled) 0.13141287136596677
Rate as Number 0.13141287136596677
Raw formatted APR: 131412871365966783
Decimals: 18
Normalized Rate (scaled) 0.13141287136596677
Rate as Number 0.13141287136596677
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 80695027651360723
Raw formatted APR: 80695027651360723
Decimals: 18
Normalized Rate (scaled) 0.08069502765136072
Rate as Number 0.08069502765136072
Raw formatted APR: 80695027651360723
Decimals: 18
Normalized Rate (scaled) 0.08069502765136072
Rate as Number 0.08069502765136072
Percentage return 21.21078990173275
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 6
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 102521549885985881
Raw formatted APR: 102521549885985881
Decimals: 6
Normalized Rate (scaled) 0.10252154988598589
Rate as Number 102521549885.98589
Raw formatted APR: 102521549885985881
Decimals: 6
Normalized Rate (scaled) 0.10252154988598589
Rate as Number 102521549885.98589
Percentage return 10.252154988598589
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 16072487558060819
Raw formatted APR: 16072487558060819
Decimals: 18
Normalized Rate (scaled) 0.01607248755806082
Rate as Number 0.01607248755806082
Raw formatted APR: 16072487558060819
Decimals: 18
Normalized Rate (scaled) 0.01607248755806082
Rate as Number 0.01607248755806082
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 168333949046795702
Raw formatted APR: 168333949046795702
Decimals: 18
Normalized Rate (scaled) 0.1683339490467957
Rate as Number 0.1683339490467957
Raw formatted APR: 168333949046795702
Decimals: 18
Normalized Rate (scaled) 0.1683339490467957
Rate as Number 0.1683339490467957
Raw formatted APR: 40162222143686203
Raw formatted APR: 40162222143686203
Decimals: 18
Normalized Rate (scaled) 0.040162222143686206
Rate as Number 0.040162222143686206
Raw formatted APR: 40162222143686203
Decimals: 18
Normalized Rate (scaled) 0.040162222143686206
Rate as Number 0.040162222143686206
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 22.45686587485427
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 29154528388023193
Raw formatted APR: 29154528388023193
Decimals: 18
Normalized Rate (scaled) 0.029154528388023192
Rate as Number 0.029154528388023192
Raw formatted APR: 29154528388023193
Decimals: 18
Normalized Rate (scaled) 0.029154528388023192
Rate as Number 0.029154528388023192
Raw formatted APR: 134777459035012055
Raw formatted APR: 134777459035012055
Decimals: 18
Normalized Rate (scaled) 0.13477745903501206
Rate as Number 0.13477745903501206
Raw formatted APR: 134777459035012055
Decimals: 18
Normalized Rate (scaled) 0.13477745903501206
Rate as Number 0.13477745903501206
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 16.393198742303525
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 67713698767463734
Raw formatted APR: 67713698767463734
Decimals: 18
Normalized Rate (scaled) 0.06771369876746373
Rate as Number 0.06771369876746373
Raw formatted APR: 67713698767463734
Decimals: 18
Normalized Rate (scaled) 0.06771369876746373
Rate as Number 0.06771369876746373
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 6.771369876746373
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 538392037900393828
Raw formatted APR: 538392037900393828
Decimals: 18
Normalized Rate (scaled) 0.5383920379003938
Rate as Number 0.5383920379003938
Raw formatted APR: 538392037900393828
Decimals: 18
Normalized Rate (scaled) 0.5383920379003938
Rate as Number 0.5383920379003938
Percentage return 53.83920379003938
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 6
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 128429673273448917
Raw formatted APR: 128429673273448917
Decimals: 6
Normalized Rate (scaled) 0.12842967327344892
Rate as Number 128429673273.44891
Raw formatted APR: 128429673273448917
Decimals: 6
Normalized Rate (scaled) 0.12842967327344892
Rate as Number 128429673273.44891
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 12.842967327344892
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 42671509525819046
Raw formatted APR: 42671509525819046
Decimals: 18
Normalized Rate (scaled) 0.042671509525819044
Rate as Number 0.042671509525819044
Raw formatted APR: 42671509525819046
Decimals: 18
Normalized Rate (scaled) 0.042671509525819044
Rate as Number 0.042671509525819044
Raw formatted APR: 75465497378409111
Raw formatted APR: 75465497378409111
Decimals: 18
Normalized Rate (scaled) 0.07546549737840912
Rate as Number 0.07546549737840912
Raw formatted APR: 75465497378409111
Decimals: 18
Normalized Rate (scaled) 0.07546549737840912
Rate as Number 0.07546549737840912
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 36082753184163543
Raw formatted APR: 36082753184163543
Decimals: 18
Normalized Rate (scaled) 0.03608275318416354
Rate as Number 0.03608275318416354
Raw formatted APR: 36082753184163543
Decimals: 18
Normalized Rate (scaled) 0.03608275318416354
Rate as Number 0.03608275318416354
Percentage return 15.42197600883917
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 81210121135970953
Raw formatted APR: 81210121135970953
Decimals: 18
Normalized Rate (scaled) 0.08121012113597095
Rate as Number 0.08121012113597095
Raw formatted APR: 81210121135970953
Decimals: 18
Normalized Rate (scaled) 0.08121012113597095
Rate as Number 0.08121012113597095
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 8.121012113597095
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 410779017139657773
Raw formatted APR: 410779017139657773
Decimals: 18
Normalized Rate (scaled) 0.41077901713965775
Rate as Number 0.41077901713965775
Raw formatted APR: 410779017139657773
Decimals: 18
Normalized Rate (scaled) 0.41077901713965775
Rate as Number 0.41077901713965775
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 42385144573162023
Raw formatted APR: 42385144573162023
Decimals: 18
Normalized Rate (scaled) 0.042385144573162024
Rate as Number 0.042385144573162024
Raw formatted APR: 42385144573162023
Decimals: 18
Normalized Rate (scaled) 0.042385144573162024
Rate as Number 0.042385144573162024
Percentage return 45.31641617128198
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 30721403003367549
Raw formatted APR: 30721403003367549
Decimals: 18
Normalized Rate (scaled) 0.03072140300336755
Rate as Number 0.03072140300336755
Raw formatted APR: 30721403003367549
Decimals: 18
Normalized Rate (scaled) 0.03072140300336755
Rate as Number 0.03072140300336755
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 3.072140300336755
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 18
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 87192824526861990
Raw formatted APR: 87192824526861990
Decimals: 18
Normalized Rate (scaled) 0.08719282452686199
Rate as Number 0.08719282452686199
Raw formatted APR: 87192824526861990
Decimals: 18
Normalized Rate (scaled) 0.08719282452686199
Rate as Number 0.08719282452686199
Percentage return 8.7192824526862
Reward Tokens: [
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5',
  '0xCc7FF230365bD730eE4B352cC2492CEdAC49383e',
  '0x3eE5e23eEE121094f1cFc0Ccc79d6C809Ebd22e5'
]
CHAIN base
decimals 6
Raw formatted APR: 0
Skipping zero formatted APR
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Raw formatted APR: 0
Skipping duplicate formatted APR: 0
Percentage return 0
token 0x4200000000000000000000000000000000000006
rewards APY 9.21
token 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
rewards APY 12.65
token 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf
rewards APY 16.47
token 0x04D5ddf5f3a8939889F11E97f8c4BB48317F1938
rewards APY 21.21
token 0xd95ca61CE9aAF2143E81Ef5462C0c2325172E028
rewards APY 10.25
token 0xCfA3Ef56d303AE4fAabA0592388F19d7C3399FB4
rewards APY 22.46
token 0xCb327b99fF831bF8223cCEd12B1338FF3aA322Ff
rewards APY 16.39
token 0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22
rewards APY 6.77
token 0x7FcD174E80f264448ebeE8c88a7C4476AAF58Ea6
rewards APY 0.00
token 0x7002458B1DF59EccB57387bC79fFc7C29E22e6f7
rewards APY 0.00
token 0x9B8Df6E244526ab5F6e6400d331DB28C8fdDdb55
rewards APY 53.84
token 0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42
rewards APY 12.84
token 0xCc7FF230365bD730eE4B352cC2492CEdAC49383e
rewards APY 15.42
token 0x2416092f143378750bb29b79eD961ab195CcEea5
rewards APY 0.00
token 0x940181a94A35A4569E4529A3CDfB74e38FD98631
rewards APY 8.12
token 0xaB36452DbAC151bE02b16Ca17d8919826072f64a
rewards APY 45.32
token 0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452
rewards APY 3.07
token 0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A
rewards APY 8.72
token 0xB79DD08EA68A908A97220C76d19A6aA9cBDE4376
rewards APY 0.00
FAIL src/adaptors/test.js
  Running ionic-protocol Test
    ✓ Check if link to the pool's page exist (1 ms)
    ✓ Check for unique pool ids
    ✓ Check project field is constant in all pools and if folder name and project field in pool objects matches the information in /protocols slug
    Check for allowed field names
      ✕ Expects pool id 0x19F245782b1258cf3e11Eda25784A378cC18c108 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (3 ms)
      ✕ Expects pool id 0x59e710215d45F584f44c0FEe83DA6d43D762D857 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (1 ms)
      ✕ Expects pool id 0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0xC462eb5587062e2f2391990b8609D2428d8Cf598 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0xA0D844742B4abbbc43d8931a6Edb00C56325aA18 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (1 ms)
      ✕ Expects pool id 0xd70254C3baD29504789714A7c69d60Ec1127375C to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (1 ms)
      ✕ Expects pool id 0x49950319aBE7CE5c3A6C90698381b45989C99b46 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x9D62e30c6cB7964C99314DCf5F847e36Fcb29ca9 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x49420311B518f3d0c94e897592014de53831cfA3 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0xfc6b82668E10AFF62f208C492fc95ef1fa9C0426 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0xa900A17a49Bc4D442bA7F72c39FA2108865671f0 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x959FA710CCBb22c7Ce1e59Da82A247e686629310 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x079f84161642D81aaFb67966123C9949F9284bf5 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (1 ms)
      ✕ Expects pool id 0xF1bbECD6aCF648540eb79588Df692c6b2F0fbc09 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x3D9669DE9E3E98DB41A1CbF6dC23446109945E3C to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (1 ms)
      ✕ Expects pool id 0x751911bDa88eFcF412326ABE649B7A3b28c4dEDe to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x9c201024A62466F9157b2dAaDda9326207ADDd29 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (1 ms)
      ✕ Expects pool id 0x9c2A4f9c5471fd36bE3BBd8437A33935107215A1 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x53b1D15b24d93330b2fD359C798dE7183255e7f2 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x50549be7e21C3dc0Db03c3AbAb83e1a78d07e6e0 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0xAec01BB498bec2Fe8f3416314D5E0Db7EC76576b to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x84341B650598002d427570298564d6701733c805 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (1 ms)
      ✕ Expects pool id 0x1De166df671AE6DB4C4C98903df88E8007593748 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x0E5A87047F871050c0D713321Deb0F008a41C495 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x9a9072302B775FfBd3Db79a7766E75Cf82bcaC0A to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0xa4442b665d4c6DBC6ea43137B336e3089f05626C to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (1 ms)
      ✕ Expects pool id 0x014e08F05ac11BB532BE62774A4C548368f59779 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0xe4c5Aeb87762789F854B3Bae7515CF00d77a1f5e to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (1 ms)
      ✕ Expects pool id 0xbd06905590b6E1b6Ac979Fc477A0AebB58d52371 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0xE00B2B2ca7ac347bc7Ca82fE5CfF0f76222FF375 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0xc63B18Fc9025ACC7830B9df05e5A0B208940a3EE to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (1 ms)
      ✕ Expects pool id 0x74109171033F662D5b898A7a2FcAB2f1EF80c201 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal (1 ms)
      ✕ Expects pool id 0x863dccAaD60A1105f4B948C67895B4F0411C4497 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x9F4089Ea33773A090ac514934517990dF04ae5a7 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0x2527e8cC363Ef3fd470c6320B22956021cacd149 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
      ✕ Expects pool id 0xb2918350826C1FB3c8b25A553B5d49611698206f to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal
    Check apy data types
      ✓ Expects pool with id 0x19F245782b1258cf3e11Eda25784A378cC18c108 to have at least one number apy field (1 ms)
      ✓ Expects pool with id 0x59e710215d45F584f44c0FEe83DA6d43D762D857 to have at least one number apy field
      ✓ Expects pool with id 0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038 to have at least one number apy field
      ✓ Expects pool with id 0xC462eb5587062e2f2391990b8609D2428d8Cf598 to have at least one number apy field
      ✓ Expects pool with id 0xA0D844742B4abbbc43d8931a6Edb00C56325aA18 to have at least one number apy field
      ✓ Expects pool with id 0xd70254C3baD29504789714A7c69d60Ec1127375C to have at least one number apy field
      ✓ Expects pool with id 0x49950319aBE7CE5c3A6C90698381b45989C99b46 to have at least one number apy field
      ✓ Expects pool with id 0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2 to have at least one number apy field
      ✓ Expects pool with id 0x9D62e30c6cB7964C99314DCf5F847e36Fcb29ca9 to have at least one number apy field
      ✓ Expects pool with id 0x49420311B518f3d0c94e897592014de53831cfA3 to have at least one number apy field
      ✓ Expects pool with id 0xfc6b82668E10AFF62f208C492fc95ef1fa9C0426 to have at least one number apy field
      ✓ Expects pool with id 0xa900A17a49Bc4D442bA7F72c39FA2108865671f0 to have at least one number apy field
      ✓ Expects pool with id 0x959FA710CCBb22c7Ce1e59Da82A247e686629310 to have at least one number apy field
      ✓ Expects pool with id 0x079f84161642D81aaFb67966123C9949F9284bf5 to have at least one number apy field
      ✓ Expects pool with id 0xF1bbECD6aCF648540eb79588Df692c6b2F0fbc09 to have at least one number apy field
      ✓ Expects pool with id 0x3D9669DE9E3E98DB41A1CbF6dC23446109945E3C to have at least one number apy field
      ✓ Expects pool with id 0x751911bDa88eFcF412326ABE649B7A3b28c4dEDe to have at least one number apy field
      ✓ Expects pool with id 0x9c201024A62466F9157b2dAaDda9326207ADDd29 to have at least one number apy field
      ✓ Expects pool with id 0x9c2A4f9c5471fd36bE3BBd8437A33935107215A1 to have at least one number apy field
      ✓ Expects pool with id 0x53b1D15b24d93330b2fD359C798dE7183255e7f2 to have at least one number apy field
      ✓ Expects pool with id 0x50549be7e21C3dc0Db03c3AbAb83e1a78d07e6e0 to have at least one number apy field
      ✓ Expects pool with id 0xAec01BB498bec2Fe8f3416314D5E0Db7EC76576b to have at least one number apy field
      ✓ Expects pool with id 0x84341B650598002d427570298564d6701733c805 to have at least one number apy field (1 ms)
      ✓ Expects pool with id 0x1De166df671AE6DB4C4C98903df88E8007593748 to have at least one number apy field
      ✓ Expects pool with id 0x0E5A87047F871050c0D713321Deb0F008a41C495 to have at least one number apy field
      ✓ Expects pool with id 0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3 to have at least one number apy field
      ✓ Expects pool with id 0x9a9072302B775FfBd3Db79a7766E75Cf82bcaC0A to have at least one number apy field
      ✓ Expects pool with id 0xa4442b665d4c6DBC6ea43137B336e3089f05626C to have at least one number apy field
      ✓ Expects pool with id 0x014e08F05ac11BB532BE62774A4C548368f59779 to have at least one number apy field (1 ms)
      ✓ Expects pool with id 0xe4c5Aeb87762789F854B3Bae7515CF00d77a1f5e to have at least one number apy field
      ✓ Expects pool with id 0xbd06905590b6E1b6Ac979Fc477A0AebB58d52371 to have at least one number apy field
      ✓ Expects pool with id 0xE00B2B2ca7ac347bc7Ca82fE5CfF0f76222FF375 to have at least one number apy field
      ✓ Expects pool with id 0xc63B18Fc9025ACC7830B9df05e5A0B208940a3EE to have at least one number apy field
      ✓ Expects pool with id 0x74109171033F662D5b898A7a2FcAB2f1EF80c201 to have at least one number apy field (1 ms)
      ✓ Expects pool with id 0x863dccAaD60A1105f4B948C67895B4F0411C4497 to have at least one number apy field
      ✓ Expects pool with id 0x9F4089Ea33773A090ac514934517990dF04ae5a7 to have at least one number apy field
      ✓ Expects pool with id 0x2527e8cC363Ef3fd470c6320B22956021cacd149 to have at least one number apy field
      ✓ Expects pool with id 0xb2918350826C1FB3c8b25A553B5d49611698206f to have at least one number apy field
    Check tvl data type
      ✓ tvlUsd field of pool with id 0x19F245782b1258cf3e11Eda25784A378cC18c108 should be number 
      ✓ tvlUsd field of pool with id 0x59e710215d45F584f44c0FEe83DA6d43D762D857 should be number 
      ✓ tvlUsd field of pool with id 0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038 should be number 
      ✓ tvlUsd field of pool with id 0xC462eb5587062e2f2391990b8609D2428d8Cf598 should be number 
      ✓ tvlUsd field of pool with id 0xA0D844742B4abbbc43d8931a6Edb00C56325aA18 should be number 
      ✓ tvlUsd field of pool with id 0xd70254C3baD29504789714A7c69d60Ec1127375C should be number 
      ✓ tvlUsd field of pool with id 0x49950319aBE7CE5c3A6C90698381b45989C99b46 should be number 
      ✓ tvlUsd field of pool with id 0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2 should be number 
      ✓ tvlUsd field of pool with id 0x9D62e30c6cB7964C99314DCf5F847e36Fcb29ca9 should be number 
      ✓ tvlUsd field of pool with id 0x49420311B518f3d0c94e897592014de53831cfA3 should be number 
      ✓ tvlUsd field of pool with id 0xfc6b82668E10AFF62f208C492fc95ef1fa9C0426 should be number 
      ✓ tvlUsd field of pool with id 0xa900A17a49Bc4D442bA7F72c39FA2108865671f0 should be number 
      ✓ tvlUsd field of pool with id 0x959FA710CCBb22c7Ce1e59Da82A247e686629310 should be number 
      ✓ tvlUsd field of pool with id 0x079f84161642D81aaFb67966123C9949F9284bf5 should be number  (1 ms)
      ✓ tvlUsd field of pool with id 0xF1bbECD6aCF648540eb79588Df692c6b2F0fbc09 should be number 
      ✓ tvlUsd field of pool with id 0x3D9669DE9E3E98DB41A1CbF6dC23446109945E3C should be number 
      ✓ tvlUsd field of pool with id 0x751911bDa88eFcF412326ABE649B7A3b28c4dEDe should be number 
      ✓ tvlUsd field of pool with id 0x9c201024A62466F9157b2dAaDda9326207ADDd29 should be number 
      ✓ tvlUsd field of pool with id 0x9c2A4f9c5471fd36bE3BBd8437A33935107215A1 should be number 
      ✓ tvlUsd field of pool with id 0x53b1D15b24d93330b2fD359C798dE7183255e7f2 should be number 
      ✓ tvlUsd field of pool with id 0x50549be7e21C3dc0Db03c3AbAb83e1a78d07e6e0 should be number  (1 ms)
      ✓ tvlUsd field of pool with id 0xAec01BB498bec2Fe8f3416314D5E0Db7EC76576b should be number 
      ✓ tvlUsd field of pool with id 0x84341B650598002d427570298564d6701733c805 should be number 
      ✓ tvlUsd field of pool with id 0x1De166df671AE6DB4C4C98903df88E8007593748 should be number 
      ✓ tvlUsd field of pool with id 0x0E5A87047F871050c0D713321Deb0F008a41C495 should be number 
      ✓ tvlUsd field of pool with id 0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3 should be number 
      ✓ tvlUsd field of pool with id 0x9a9072302B775FfBd3Db79a7766E75Cf82bcaC0A should be number 
      ✓ tvlUsd field of pool with id 0xa4442b665d4c6DBC6ea43137B336e3089f05626C should be number  (1 ms)
      ✓ tvlUsd field of pool with id 0x014e08F05ac11BB532BE62774A4C548368f59779 should be number 
      ✓ tvlUsd field of pool with id 0xe4c5Aeb87762789F854B3Bae7515CF00d77a1f5e should be number 
      ✓ tvlUsd field of pool with id 0xbd06905590b6E1b6Ac979Fc477A0AebB58d52371 should be number 
      ✓ tvlUsd field of pool with id 0xE00B2B2ca7ac347bc7Ca82fE5CfF0f76222FF375 should be number 
      ✓ tvlUsd field of pool with id 0xc63B18Fc9025ACC7830B9df05e5A0B208940a3EE should be number 
      ✓ tvlUsd field of pool with id 0x74109171033F662D5b898A7a2FcAB2f1EF80c201 should be number 
      ✓ tvlUsd field of pool with id 0x863dccAaD60A1105f4B948C67895B4F0411C4497 should be number  (1 ms)
      ✓ tvlUsd field of pool with id 0x9F4089Ea33773A090ac514934517990dF04ae5a7 should be number 
      ✓ tvlUsd field of pool with id 0x2527e8cC363Ef3fd470c6320B22956021cacd149 should be number 
      ✓ tvlUsd field of pool with id 0xb2918350826C1FB3c8b25A553B5d49611698206f should be number 
    Check other fields data types
      ✓ Expect other fields of pool with id 0x19F245782b1258cf3e11Eda25784A378cC18c108 to match thier data types
      ✓ Expect other fields of pool with id 0x59e710215d45F584f44c0FEe83DA6d43D762D857 to match thier data types (1 ms)
      ✓ Expect other fields of pool with id 0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038 to match thier data types
      ✓ Expect other fields of pool with id 0xC462eb5587062e2f2391990b8609D2428d8Cf598 to match thier data types
      ✓ Expect other fields of pool with id 0xA0D844742B4abbbc43d8931a6Edb00C56325aA18 to match thier data types (1 ms)
      ✓ Expect other fields of pool with id 0xd70254C3baD29504789714A7c69d60Ec1127375C to match thier data types
      ✓ Expect other fields of pool with id 0x49950319aBE7CE5c3A6C90698381b45989C99b46 to match thier data types
      ✓ Expect other fields of pool with id 0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2 to match thier data types
      ✓ Expect other fields of pool with id 0x9D62e30c6cB7964C99314DCf5F847e36Fcb29ca9 to match thier data types (1 ms)
      ✓ Expect other fields of pool with id 0x49420311B518f3d0c94e897592014de53831cfA3 to match thier data types
      ✓ Expect other fields of pool with id 0xfc6b82668E10AFF62f208C492fc95ef1fa9C0426 to match thier data types (3 ms)
      ✓ Expect other fields of pool with id 0xa900A17a49Bc4D442bA7F72c39FA2108865671f0 to match thier data types
      ✓ Expect other fields of pool with id 0x959FA710CCBb22c7Ce1e59Da82A247e686629310 to match thier data types
      ✓ Expect other fields of pool with id 0x079f84161642D81aaFb67966123C9949F9284bf5 to match thier data types
      ✓ Expect other fields of pool with id 0xF1bbECD6aCF648540eb79588Df692c6b2F0fbc09 to match thier data types (1 ms)
      ✓ Expect other fields of pool with id 0x3D9669DE9E3E98DB41A1CbF6dC23446109945E3C to match thier data types
      ✓ Expect other fields of pool with id 0x751911bDa88eFcF412326ABE649B7A3b28c4dEDe to match thier data types
      ✓ Expect other fields of pool with id 0x9c201024A62466F9157b2dAaDda9326207ADDd29 to match thier data types (1 ms)
      ✓ Expect other fields of pool with id 0x9c2A4f9c5471fd36bE3BBd8437A33935107215A1 to match thier data types
      ✓ Expect other fields of pool with id 0x53b1D15b24d93330b2fD359C798dE7183255e7f2 to match thier data types
      ✓ Expect other fields of pool with id 0x50549be7e21C3dc0Db03c3AbAb83e1a78d07e6e0 to match thier data types
      ✓ Expect other fields of pool with id 0xAec01BB498bec2Fe8f3416314D5E0Db7EC76576b to match thier data types (1 ms)
      ✓ Expect other fields of pool with id 0x84341B650598002d427570298564d6701733c805 to match thier data types
      ✓ Expect other fields of pool with id 0x1De166df671AE6DB4C4C98903df88E8007593748 to match thier data types
      ✓ Expect other fields of pool with id 0x0E5A87047F871050c0D713321Deb0F008a41C495 to match thier data types
      ✓ Expect other fields of pool with id 0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3 to match thier data types (1 ms)
      ✓ Expect other fields of pool with id 0x9a9072302B775FfBd3Db79a7766E75Cf82bcaC0A to match thier data types
      ✓ Expect other fields of pool with id 0xa4442b665d4c6DBC6ea43137B336e3089f05626C to match thier data types
      ✓ Expect other fields of pool with id 0x014e08F05ac11BB532BE62774A4C548368f59779 to match thier data types
      ✓ Expect other fields of pool with id 0xe4c5Aeb87762789F854B3Bae7515CF00d77a1f5e to match thier data types (1 ms)
      ✓ Expect other fields of pool with id 0xbd06905590b6E1b6Ac979Fc477A0AebB58d52371 to match thier data types
      ✓ Expect other fields of pool with id 0xE00B2B2ca7ac347bc7Ca82fE5CfF0f76222FF375 to match thier data types
      ✓ Expect other fields of pool with id 0xc63B18Fc9025ACC7830B9df05e5A0B208940a3EE to match thier data types
      ✓ Expect other fields of pool with id 0x74109171033F662D5b898A7a2FcAB2f1EF80c201 to match thier data types
      ✓ Expect other fields of pool with id 0x863dccAaD60A1105f4B948C67895B4F0411C4497 to match thier data types
      ✓ Expect other fields of pool with id 0x9F4089Ea33773A090ac514934517990dF04ae5a7 to match thier data types
      ✓ Expect other fields of pool with id 0x2527e8cC363Ef3fd470c6320B22956021cacd149 to match thier data types
      ✓ Expect other fields of pool with id 0xb2918350826C1FB3c8b25A553B5d49611698206f to match thier data types
    Check if pool has a rewardApy then rewardTokens must also exist
      ✕ The pool 0x19F245782b1258cf3e11Eda25784A378cC18c108 is expected to have a rewardTokens field
      ✕ The pool 0x59e710215d45F584f44c0FEe83DA6d43D762D857 is expected to have a rewardTokens field
      ✓ The pool 0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038 is expected to have a rewardTokens field
      ✓ The pool 0xC462eb5587062e2f2391990b8609D2428d8Cf598 is expected to have a rewardTokens field
      ✕ The pool 0xA0D844742B4abbbc43d8931a6Edb00C56325aA18 is expected to have a rewardTokens field
      ✕ The pool 0xd70254C3baD29504789714A7c69d60Ec1127375C is expected to have a rewardTokens field
      ✕ The pool 0x49950319aBE7CE5c3A6C90698381b45989C99b46 is expected to have a rewardTokens field
      ✓ The pool 0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2 is expected to have a rewardTokens field
      ✕ The pool 0x9D62e30c6cB7964C99314DCf5F847e36Fcb29ca9 is expected to have a rewardTokens field (1 ms)
      ✕ The pool 0x49420311B518f3d0c94e897592014de53831cfA3 is expected to have a rewardTokens field
      ✕ The pool 0xfc6b82668E10AFF62f208C492fc95ef1fa9C0426 is expected to have a rewardTokens field
      ✕ The pool 0xa900A17a49Bc4D442bA7F72c39FA2108865671f0 is expected to have a rewardTokens field
      ✓ The pool 0x959FA710CCBb22c7Ce1e59Da82A247e686629310 is expected to have a rewardTokens field
      ✓ The pool 0x079f84161642D81aaFb67966123C9949F9284bf5 is expected to have a rewardTokens field
      ✕ The pool 0xF1bbECD6aCF648540eb79588Df692c6b2F0fbc09 is expected to have a rewardTokens field
      ✕ The pool 0x3D9669DE9E3E98DB41A1CbF6dC23446109945E3C is expected to have a rewardTokens field (1 ms)
      ✕ The pool 0x751911bDa88eFcF412326ABE649B7A3b28c4dEDe is expected to have a rewardTokens field
      ✕ The pool 0x9c201024A62466F9157b2dAaDda9326207ADDd29 is expected to have a rewardTokens field
      ✕ The pool 0x9c2A4f9c5471fd36bE3BBd8437A33935107215A1 is expected to have a rewardTokens field (1 ms)
      ✕ The pool 0x53b1D15b24d93330b2fD359C798dE7183255e7f2 is expected to have a rewardTokens field
      ✕ The pool 0x50549be7e21C3dc0Db03c3AbAb83e1a78d07e6e0 is expected to have a rewardTokens field
      ✓ The pool 0xAec01BB498bec2Fe8f3416314D5E0Db7EC76576b is expected to have a rewardTokens field (1 ms)
      ✕ The pool 0x84341B650598002d427570298564d6701733c805 is expected to have a rewardTokens field
      ✕ The pool 0x1De166df671AE6DB4C4C98903df88E8007593748 is expected to have a rewardTokens field
      ✕ The pool 0x0E5A87047F871050c0D713321Deb0F008a41C495 is expected to have a rewardTokens field
      ✕ The pool 0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3 is expected to have a rewardTokens field
      ✓ The pool 0x9a9072302B775FfBd3Db79a7766E75Cf82bcaC0A is expected to have a rewardTokens field
      ✕ The pool 0xa4442b665d4c6DBC6ea43137B336e3089f05626C is expected to have a rewardTokens field
      ✕ The pool 0x014e08F05ac11BB532BE62774A4C548368f59779 is expected to have a rewardTokens field
      ✕ The pool 0xe4c5Aeb87762789F854B3Bae7515CF00d77a1f5e is expected to have a rewardTokens field
      ✕ The pool 0xbd06905590b6E1b6Ac979Fc477A0AebB58d52371 is expected to have a rewardTokens field
      ✓ The pool 0xE00B2B2ca7ac347bc7Ca82fE5CfF0f76222FF375 is expected to have a rewardTokens field
      ✓ The pool 0xc63B18Fc9025ACC7830B9df05e5A0B208940a3EE is expected to have a rewardTokens field
      ✓ The pool 0x74109171033F662D5b898A7a2FcAB2f1EF80c201 is expected to have a rewardTokens field
      ✓ The pool 0x863dccAaD60A1105f4B948C67895B4F0411C4497 is expected to have a rewardTokens field
      ✓ The pool 0x9F4089Ea33773A090ac514934517990dF04ae5a7 is expected to have a rewardTokens field
      ✓ The pool 0x2527e8cC363Ef3fd470c6320B22956021cacd149 is expected to have a rewardTokens field
      ✓ The pool 0xb2918350826C1FB3c8b25A553B5d49611698206f is expected to have a rewardTokens field
    Check if pool id already used by other project
      ✓ Expect duplicate ids array to be empty

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x19F245782b1258cf3e11Eda25784A378cC18c108 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x59e710215d45F584f44c0FEe83DA6d43D762D857 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xC462eb5587062e2f2391990b8609D2428d8Cf598 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xA0D844742B4abbbc43d8931a6Edb00C56325aA18 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xd70254C3baD29504789714A7c69d60Ec1127375C to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x49950319aBE7CE5c3A6C90698381b45989C99b46 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x9D62e30c6cB7964C99314DCf5F847e36Fcb29ca9 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x49420311B518f3d0c94e897592014de53831cfA3 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xfc6b82668E10AFF62f208C492fc95ef1fa9C0426 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xa900A17a49Bc4D442bA7F72c39FA2108865671f0 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x959FA710CCBb22c7Ce1e59Da82A247e686629310 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x079f84161642D81aaFb67966123C9949F9284bf5 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xF1bbECD6aCF648540eb79588Df692c6b2F0fbc09 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x3D9669DE9E3E98DB41A1CbF6dC23446109945E3C to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x751911bDa88eFcF412326ABE649B7A3b28c4dEDe to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x9c201024A62466F9157b2dAaDda9326207ADDd29 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x9c2A4f9c5471fd36bE3BBd8437A33935107215A1 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x53b1D15b24d93330b2fD359C798dE7183255e7f2 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x50549be7e21C3dc0Db03c3AbAb83e1a78d07e6e0 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xAec01BB498bec2Fe8f3416314D5E0Db7EC76576b to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x84341B650598002d427570298564d6701733c805 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x1De166df671AE6DB4C4C98903df88E8007593748 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x0E5A87047F871050c0D713321Deb0F008a41C495 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x9a9072302B775FfBd3Db79a7766E75Cf82bcaC0A to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xa4442b665d4c6DBC6ea43137B336e3089f05626C to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x014e08F05ac11BB532BE62774A4C548368f59779 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xe4c5Aeb87762789F854B3Bae7515CF00d77a1f5e to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xbd06905590b6E1b6Ac979Fc477A0AebB58d52371 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xE00B2B2ca7ac347bc7Ca82fE5CfF0f76222FF375 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xc63B18Fc9025ACC7830B9df05e5A0B208940a3EE to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x74109171033F662D5b898A7a2FcAB2f1EF80c201 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x863dccAaD60A1105f4B948C67895B4F0411C4497 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x9F4089Ea33773A090ac514934517990dF04ae5a7 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0x2527e8cC363Ef3fd470c6320B22956021cacd149 to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check for allowed field names › Expects pool id 0xb2918350826C1FB3c8b25A553B5d49611698206f to contain only allowed keys: pool,chain,project,symbol,apy,apyBase,apyReward,underlyingTokens,rewardTokens,poolMeta,url,apyBaseBorrow,apyRewardBorrow,totalSupplyUsd,totalBorrowUsd,ltv,borrowable,borrowFactor,debtCeilingUsd,mintedCoin,apyBase7d,apyRewardFake,apyRewardBorrowFake,il7d,volumeUsd1d,volumeUsd7d,apyBaseInception,tvlUsd and has: pool,chain,project,symbol,tvlUsd,totalSupplyUsd,totalBorrowUsd,apyReward,apyBase,apyTotal

    expect(received).toBe(expected) // Object.is equality

    Expected: true
    Received: false

    �[0m �[90m 47 |�[39m �[32m        pool�[39m
     �[90m 48 |�[39m �[32m      )}`�[39m�[33m,�[39m () �[33m=>�[39m {
    �[31m�[1m>�[22m�[39m�[90m 49 |�[39m         expect(�[33mObject�[39m�[33m.�[39mkeys(pool)�[33m.�[39mevery((f) �[33m=>�[39m fields�[33m.�[39mincludes(f)))�[33m.�[39mtoBe(�[36mtrue�[39m)�[33m;�[39m
     �[90m    |�[39m                                                                    �[31m�[1m^�[22m�[39m
     �[90m 50 |�[39m       })�[33m;�[39m
     �[90m 51 |�[39m     })�[33m;�[39m
     �[90m 52 |�[39m   })�[33m;�[39m�[0m

      at Object.toBe (src/adaptors/test.js:49:68)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x19F245782b1258cf3e11Eda25784A378cC18c108 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x59e710215d45F584f44c0FEe83DA6d43D762D857 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0xA0D844742B4abbbc43d8931a6Edb00C56325aA18 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0xd70254C3baD29504789714A7c69d60Ec1127375C is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x49950319aBE7CE5c3A6C90698381b45989C99b46 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x9D62e30c6cB7964C99314DCf5F847e36Fcb29ca9 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x49420311B518f3d0c94e897592014de53831cfA3 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0xfc6b82668E10AFF62f208C492fc95ef1fa9C0426 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0xa900A17a49Bc4D442bA7F72c39FA2108865671f0 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0xF1bbECD6aCF648540eb79588Df692c6b2F0fbc09 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x3D9669DE9E3E98DB41A1CbF6dC23446109945E3C is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x751911bDa88eFcF412326ABE649B7A3b28c4dEDe is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x9c201024A62466F9157b2dAaDda9326207ADDd29 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x9c2A4f9c5471fd36bE3BBd8437A33935107215A1 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x53b1D15b24d93330b2fD359C798dE7183255e7f2 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x50549be7e21C3dc0Db03c3AbAb83e1a78d07e6e0 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x84341B650598002d427570298564d6701733c805 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x1De166df671AE6DB4C4C98903df88E8007593748 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[39m�[90m 117 |�[39m           expect((pool�[33m.�[39mrewardTokens �[33m||�[39m [])�[33m.�[39mlength)�[33m.�[39mtoBeGreaterThan(�[35m0�[39m)�[33m;�[39m
     �[90m     |�[39m                                                    �[31m�[1m^�[22m�[39m
     �[90m 118 |�[39m       })�[33m;�[39m
     �[90m 119 |�[39m     })�[33m;�[39m
     �[90m 120 |�[39m   })�[33m;�[39m�[0m

      at Object.toBeGreaterThan (src/adaptors/test.js:117:52)

  ● Running ionic-protocol Test › Check if pool has a rewardApy then rewardTokens must also exist › The pool 0x0E5A87047F871050c0D713321Deb0F008a41C495 is expected to have a rewardTokens field

    expect(received).toBeGreaterThan(expected)

    Expected: > 0
    Received:   0

    �[0m �[90m 115 |�[39m       test(�[32m`The pool ${pool.pool} is expected to have a rewardTokens field`�[39m�[33m,�[39m () �[33m=>�[39m {
     �[90m 116 |�[39m         �[36mif�[39m (pool�[33m.�[39mapyReward)
    �[31m�[1m>�[22m�[3
Nb of pools: 38
 

Sample pools:
┌─────────┬──────────────────────────────────────────────┬────────┬──────────────────┬───────────────┬────────────────────┬────────────────────┬────────────────────┬───────────┬────────────────────────┬──────────────────────┐
│ (index) │                     pool                     │ chain  │     project      │    symbol     │       tvlUsd       │   totalSupplyUsd   │   totalBorrowUsd   │ apyReward │        apyBase         │       apyTotal       │
├─────────┼──────────────────────────────────────────────┼────────┼──────────────────┼───────────────┼────────────────────┼────────────────────┼────────────────────┼───────────┼────────────────────────┼──────────────────────┤
│    0    │ '0x19F245782b1258cf3e11Eda25784A378cC18c108' │ 'mode' │ 'ionic-protocol' │    'M-BTC'    │ 97311258.02448627  │ 97471552.95793054  │ 160294.93344425937 │   0.03    │ 0.00004162138287355788 │ 0.030041621382873557 │
│    1    │ '0x59e710215d45F584f44c0FEe83DA6d43D762D857' │ 'mode' │ 'ionic-protocol' │    'ezETH'    │ 6775477.556632931  │ 6795870.501272186  │ 20392.94463925436  │   0.23    │  0.05163211224457065   │ 0.28163211224457063  │
│    2    │ '0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038' │ 'mode' │ 'ionic-protocol' │    'USDC'     │   1077324.674389   │   1460720.603516   │   383395.929127    │     0     │   2.4764393496257364   │  2.4764393496257364  │
│    3    │ '0xC462eb5587062e2f2391990b8609D2428d8Cf598' │ 'base' │ 'ionic-protocol' │ 'wsuperOETHb' │ 1044026.0601553197 │ 1044026.0601553197 │         0          │     0     │           0            │          0           │
│    4    │ '0xA0D844742B4abbbc43d8931a6Edb00C56325aA18' │ 'mode' │ 'ionic-protocol' │ 'weETH.mode'  │ 908567.9244068951  │ 1143971.996749036  │ 235404.07234214083 │   2.32    │   0.6693245904344725   │  2.9893245904344723  │
│    5    │ '0xd70254C3baD29504789714A7c69d60Ec1127375C' │ 'mode' │ 'ionic-protocol' │    'WBTC'     │  889582.95992594   │ 962955.7258890601  │   73372.76596312   │    3.2    │  0.09010106193803047   │  3.2901010619380306  │
│    6    │ '0x49950319aBE7CE5c3A6C90698381b45989C99b46' │ 'mode' │ 'ionic-protocol' │   'wrsETH'    │ 862818.0973694884  │ 937522.4147385175  │ 74704.31736902906  │   1.68    │  0.09975020173107474   │  1.7797502017310747  │
│    7    │ '0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2' │ 'mode' │ 'ionic-protocol' │    'WETH'     │ 814872.2304690015  │ 4735379.856393971  │ 3920507.6259249696 │     0     │   1.4034336152450422   │  1.4034336152450422  │
│    8    │ '0x9D62e30c6cB7964C99314DCf5F847e36Fcb29ca9' │ 'base' │ 'ionic-protocol' │   'wstETH'    │ 683972.5963166126  │  801676.856162358  │ 117704.25984574537 │   3.07    │   0.3148029020348053   │  3.384802902034805   │
│    9    │ '0x49420311B518f3d0c94e897592014de53831cfA3' │ 'base' │ 'ionic-protocol' │    'WETH'     │ 668872.8026186631  │ 1916909.4752031446 │ 1248036.6725844815 │   9.21    │    6.39150937538755    │  15.60150937538755   │
└─────────┴──────────────────────────────────────────────┴────────┴──────────────────┴───────────────┴────────────────────┴────────────────────┴────────────────────┴───────────┴────────────────────────┴──────────────────────┘
This adapter contains some pools with <10k TVL, these pools won't be shown in DefiLlama
}

@slasher125
Copy link
Collaborator

whats including in apyRewards?

@amish777
Copy link
Contributor Author

It includes total IonRewards accumulated for the token

@slasher125
Copy link
Collaborator

  • are these claimable right away? what about points (we do not include these on our end)
  • also, pls fix the bug (see test output)

@amish777
Copy link
Contributor Author

yes they are claimable, theres no points
the APR is straight tokens

@llamatester
Copy link

The ionic-protocol adapter exports pools:

Test Suites: 1 passed, 1 total
Tests: 232 passed, 232 total
Snapshots: 0 total
Time: 0.326 s
Ran all test suites.

Nb of pools: 38
 

Sample pools:
┌─────────┬──────────────────────────────────────────────┬────────┬──────────────────┬───────────────┬────────────────────┬────────────────────┬────────────────────┬───────────┬────────────────────────┬──────────────────────────────────────────────────┐
│ (index) │                     pool                     │ chain  │     project      │    symbol     │       tvlUsd       │   totalSupplyUsd   │   totalBorrowUsd   │ apyReward │        apyBase         │                   rewardTokens                   │
├─────────┼──────────────────────────────────────────────┼────────┼──────────────────┼───────────────┼────────────────────┼────────────────────┼────────────────────┼───────────┼────────────────────────┼──────────────────────────────────────────────────┤
│    0    │ '0x19F245782b1258cf3e11Eda25784A378cC18c108' │ 'mode' │ 'ionic-protocol' │    'M-BTC'    │  99366722.9535046  │ 99530215.17734551  │ 163492.22384090401 │   0.03    │ 0.00004152629933251717 │ [ '0xa670d7237398238de01267472c6f13e5b8010fd1' ] │
│    1    │ '0x59e710215d45F584f44c0FEe83DA6d43D762D857' │ 'mode' │ 'ionic-protocol' │    'ezETH'    │ 6696327.052837578  │ 6716617.725970596  │ 20290.673133018045 │   0.23    │  0.05198146711635765   │ [ '0xa670d7237398238de01267472c6f13e5b8010fd1' ] │
│    2    │ '0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038' │ 'mode' │ 'ionic-protocol' │    'USDC'     │ 1082007.202546931  │ 1464582.312294755  │ 382575.10974782374 │     0     │   2.327664377398264    │ [ '0xa670d7237398238de01267472c6f13e5b8010fd1' ] │
│    3    │ '0xC462eb5587062e2f2391990b8609D2428d8Cf598' │ 'base' │ 'ionic-protocol' │ 'wsuperOETHb' │ 1040505.2907111848 │ 1040505.2907111848 │         0          │     0     │           0            │ [ '0xa670d7237398238de01267472c6f13e5b8010fd1' ] │
│    4    │ '0xA0D844742B4abbbc43d8931a6Edb00C56325aA18' │ 'mode' │ 'ionic-protocol' │ 'weETH.mode'  │  911602.288028769  │ 1147285.063444759  │ 235682.7754159901  │   2.36    │   0.6670409370121755   │ [ '0xa670d7237398238de01267472c6f13e5b8010fd1' ] │
│    5    │ '0xd70254C3baD29504789714A7c69d60Ec1127375C' │ 'mode' │ 'ionic-protocol' │    'WBTC'     │  904693.49392804   │  979306.67633908   │ 74613.18241103999  │   3.23    │   0.0900879246999775   │ [ '0xa670d7237398238de01267472c6f13e5b8010fd1' ] │
│    6    │ '0x49950319aBE7CE5c3A6C90698381b45989C99b46' │ 'mode' │ 'ionic-protocol' │   'wrsETH'    │ 850424.7086256886  │ 924098.2004203007  │  73673.4917946122  │   1.71    │  0.09985830993453071   │ [ '0xa670d7237398238de01267472c6f13e5b8010fd1' ] │
│    7    │ '0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2' │ 'mode' │ 'ionic-protocol' │    'WETH'     │ 804456.4643962873  │ 4743017.756725924  │ 3938561.2923296364 │     0     │   1.1605678476450887   │ [ '0xa670d7237398238de01267472c6f13e5b8010fd1' ] │
│    8    │ '0x9D62e30c6cB7964C99314DCf5F847e36Fcb29ca9' │ 'base' │ 'ionic-protocol' │   'wstETH'    │ 680857.5721496273  │ 798025.7701473525  │ 117168.19799772525 │    3.1    │   0.3148029020348053   │ [ '0xa670d7237398238de01267472c6f13e5b8010fd1' ] │
│    9    │ '0x49420311B518f3d0c94e897592014de53831cfA3' │ 'base' │ 'ionic-protocol' │    'WETH'     │ 655906.6467752252  │ 1941848.5697274162 │ 1285941.922952191  │   9.09    │   6.619673316397812    │ [ '0xa670d7237398238de01267472c6f13e5b8010fd1' ] │
└─────────┴──────────────────────────────────────────────┴────────┴──────────────────┴───────────────┴────────────────────┴────────────────────┴────────────────────┴───────────┴────────────────────────┴──────────────────────────────────────────────────┘
This adapter contains some pools with <10k TVL, these pools won't be shown in DefiLlama

@amish777
Copy link
Contributor Author

@slasher125 : Failed cases are fixed

image

@slasher125 slasher125 merged commit 73ed711 into DefiLlama:master Oct 24, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants