Skip to content

feat: add hyperswap#2271

Merged
0xkr3p merged 6 commits intoDefiLlama:masterfrom
0xkr3p:feat/add-hyperswap-pools
Jan 20, 2026
Merged

feat: add hyperswap#2271
0xkr3p merged 6 commits intoDefiLlama:masterfrom
0xkr3p:feat/add-hyperswap-pools

Conversation

@0xkr3p
Copy link
Contributor

@0xkr3p 0xkr3p commented Jan 19, 2026

resolves #2264

Summary

Adds hyperswap v3 pools with reward incentives using the dedicated the subgraph and merkl rewards helper

Resources

Notes

The hyperswap v2 adapter we only get the tvl as the subgraph is dead. I am reaching out to the team to ask about the status and whether we can utilise their private api

Summary by CodeRabbit

  • New Features
    • HyperSwap V3 pools are now available with APY (1‑day and 7‑day estimates), TVL, 1d/7d volume and reward APY enrichment.
    • Added support for a new blockchain network (hyperevm, chain id 999).

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Jan 19, 2026

📝 Walkthrough

Walkthrough

Adds a new HyperSwap V3 adapter that paginates a Goldsky subgraph to collect pools, computes per-pool APY (1d and 7d estimates), filters pools under $10k TVL, enriches with Merkl reward APY, and exports apy(), timetravel: false, and url. Also adds chain ID 999 → hyperevm to Merkl config.

Changes

Cohort / File(s) Summary
HyperSwap V3 Adapter
src/adaptors/hyperswap-v3/index.js
New adapter (+~159 lines) implementing paginated GraphQL queries to Goldsky, pool aggregation, TVL filtering (>= $10k), APY calculations (1d projection and 7d estimate), token price fetching, enrichment via addMerklRewardApy, result sanitation, and exports apy(), timetravel: false, and url.
Merkl Config Update
src/adaptors/merkl/config.js
Adds network mapping entry: chain ID 999'hyperevm' (+1 line).

Sequence Diagram(s)

sequenceDiagram
    participant Adapter as HyperSwapV3 Adapter
    participant Subgraph as Goldsky Subgraph
    participant Prices as Price Fetcher
    participant Merkl as Merkl Reward Service

    Adapter->>Subgraph: Paginated GraphQL queries (fetch pools)
    Subgraph-->>Adapter: Pool pages (aggregated)
    Adapter->>Prices: Fetch token prices for pools
    Prices-->>Adapter: Token price data
    Adapter->>Merkl: Request reward APY for pools
    Merkl-->>Adapter: Reward APY data
    Adapter-->>Adapter: Compute TVL, apyBase, apyBase7d, filter (<$10k), sanitize
    Adapter-->>Client: Return final APY list (exports apy())
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

I hopped through GraphQL fields with glee, 🐇
Fetching pools from a shining tree, 🌳
Prices and rewards I stitched in rhyme,
APYs computed in perfect time,
HyperSwap blooms — a carrot for me! 🥕✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add hyperswap' is partially related to the changeset. It refers to adding Hyperswap adapters but lacks specificity about the v3 focus and omits the Merkl integration detail.
Linked Issues check ✅ Passed The PR successfully implements the core requirement from #2264 by adding Hyperswap V3 pools with APY metrics via a Goldsky subgraph, plus Merkl reward integration and basic V2 support.
Out of Scope Changes check ✅ Passed All changes are scoped to Hyperswap adapter implementation. The config addition to merkl/config.js (mapping 999 to 'hyperevm') is necessary infrastructure for the Merkl reward integration.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@llamatester
Copy link

The hyperswap-v2 adapter exports pools:

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

Nb of pools: 16
 

Sample pools:
┌─────────┬──────────────────────────────────────────────┬────────────┬────────────────┬───────────────┬────────────────────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ (index) │ pool                                         │ chain      │ project        │ symbol        │ tvlUsd             │ apyBase │ underlyingTokens                                                                               │ url                                                                                                                             │
├─────────┼──────────────────────────────────────────────┼────────────┼────────────────┼───────────────┼────────────────────┼─────────┼────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 0       │ '0xa19ea099afed76d1cf5f84c6c863365e5798a7ca' │ 'Hyperevm' │ 'hyperswap-v2' │ 'WHYPE-HFUN'  │ 263374.4802865604  │ 0       │ [ '0x5555555555555555555555555555555555555555', '0xa320d9f65ec992eff38622c63627856382db726c' ] │ 'https://app.hyperswap.exchange/#/add/v2/0x5555555555555555555555555555555555555555/0xa320d9f65ec992eff38622c63627856382db726c' │
│ 1       │ '0x056f0975f104cb5318ecc55f0c82b33a756d29c6' │ 'Hyperevm' │ 'hyperswap-v2' │ 'BUDDY-WHYPE' │ 193356.1735051003  │ 0       │ [ '0x47bb061c0204af921f43dc73c7d7768d2672ddee', '0x5555555555555555555555555555555555555555' ] │ 'https://app.hyperswap.exchange/#/add/v2/0x47bb061c0204af921f43dc73c7d7768d2672ddee/0x5555555555555555555555555555555555555555' │
│ 2       │ '0x5352ed32aeac9fe0e474a599def11d7057d5442e' │ 'Hyperevm' │ 'hyperswap-v2' │ 'PEG-USDC'    │ 121697.95836072063 │ 0       │ [ '0x28245ab01298eaef7933bc90d35bd9dbca5c89db', '0xb88339cb7199b77e23db6e890353e22632ba630f' ] │ 'https://app.hyperswap.exchange/#/add/v2/0x28245ab01298eaef7933bc90d35bd9dbca5c89db/0xb88339cb7199b77e23db6e890353e22632ba630f' │
│ 3       │ '0x5a77b0d96ad87defee407ed5244c942ff7fc5779' │ 'Hyperevm' │ 'hyperswap-v2' │ 'WHYPE-JOFF'  │ 86352.10523347527  │ 0       │ [ '0x5555555555555555555555555555555555555555', '0x62d5dd0190376c444a4b2e2e860aa392ec83ed80' ] │ 'https://app.hyperswap.exchange/#/add/v2/0x5555555555555555555555555555555555555555/0x62d5dd0190376c444a4b2e2e860aa392ec83ed80' │
│ 4       │ '0x0237b44bbd51e665d61fefec5f97bf88687ed9ca' │ 'Hyperevm' │ 'hyperswap-v2' │ 'JEFF-WHYPE'  │ 53274.98611555268  │ 0       │ [ '0x52e444545fbe9e5972a7a371299522f7871aec1f', '0x5555555555555555555555555555555555555555' ] │ 'https://app.hyperswap.exchange/#/add/v2/0x52e444545fbe9e5972a7a371299522f7871aec1f/0x5555555555555555555555555555555555555555' │
│ 5       │ '0x981f145a71da6df4a7cbe892807782c9cc9a5515' │ 'Hyperevm' │ 'hyperswap-v2' │ 'WHYPE-PRFI'  │ 43102.00473305311  │ 0       │ [ '0x5555555555555555555555555555555555555555', '0x7bbcf1b600565ae023a1806ef637af4739de3255' ] │ 'https://app.hyperswap.exchange/#/add/v2/0x5555555555555555555555555555555555555555/0x7bbcf1b600565ae023a1806ef637af4739de3255' │
│ 6       │ '0x0c278010bf21bae386b6ce4440535970a4ea5238' │ 'Hyperevm' │ 'hyperswap-v2' │ 'WHYPE-HL'    │ 40787.34469598034  │ 0       │ [ '0x5555555555555555555555555555555555555555', '0x738dd55c272b0b686382f62dd4a590056839f4f6' ] │ 'https://app.hyperswap.exchange/#/add/v2/0x5555555555555555555555555555555555555555/0x738dd55c272b0b686382f62dd4a590056839f4f6' │
│ 7       │ '0x767e9e43c6a58c9c145258c3e573580cedc56d0d' │ 'Hyperevm' │ 'hyperswap-v2' │ 'WHYPE-LILLY' │ 24753.53473814338  │ 0       │ [ '0x5555555555555555555555555555555555555555', '0xf2e6a23b1aa09565fdb3a77af7772709de3f4f95' ] │ 'https://app.hyperswap.exchange/#/add/v2/0x5555555555555555555555555555555555555555/0xf2e6a23b1aa09565fdb3a77af7772709de3f4f95' │
│ 8       │ '0x29e813b394673c285e1d347bf28290ceaeba61b9' │ 'Hyperevm' │ 'hyperswap-v2' │ 'THAW-WHYPE'  │ 24402.566605600416 │ 0       │ [ '0x1d6e7e8b14af35cb5e4141e680b493aba0f7f92c', '0x5555555555555555555555555555555555555555' ] │ 'https://app.hyperswap.exchange/#/add/v2/0x1d6e7e8b14af35cb5e4141e680b493aba0f7f92c/0x5555555555555555555555555555555555555555' │
│ 9       │ '0x97b550396163b48d947b5cc24fd957b14c23f82b' │ 'Hyperevm' │ 'hyperswap-v2' │ 'WHYPE-MILK'  │ 16796.422205508694 │ 0       │ [ '0x5555555555555555555555555555555555555555', '0xfe69bc93b936b34d371defa873686c116c8488c2' ] │ 'https://app.hyperswap.exchange/#/add/v2/0x5555555555555555555555555555555555555555/0xfe69bc93b936b34d371defa873686c116c8488c2' │
└─────────┴──────────────────────────────────────────────┴────────────┴────────────────┴───────────────┴────────────────────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

@llamatester
Copy link

The hyperswap-v3 adapter exports pools:

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

Nb of pools: 41
 

Sample pools:
┌─────────┬──────────────────────────────────────────────┬────────────┬────────────────┬────────────────┬────────────────────┬────────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────┬──────────┬─────────────────────────────────────────────────────────────────────────────────────┬───────────────────────────────────────┐
│ (index) │ pool                                         │ chain      │ project        │ symbol         │ tvlUsd             │ apyBase                │ underlyingTokens                                                                               │ poolMeta │ url                                                                                 │ volumeUsd1d                           │
├─────────┼──────────────────────────────────────────────┼────────────┼────────────────┼────────────────┼────────────────────┼────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────┤
│ 0       │ '0xbd775d95c4dc7b1040055a2f763dfc7d16313eb6' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-ΑHYPE'  │ 2638921.274265221  │ 0.00006128743456983563 │ [ '0x5555555555555555555555555555555555555555', '0xe44bd27c9f10fa2f89fdb3ab4b4f0e460da29ea8' ] │ '0.01%'  │ 'https://app.hyperswap.exchange/#/pools/0xbd775d95c4dc7b1040055a2f763dfc7d16313eb6' │ '44.31033285793890283525597884328026' │
│ 1       │ '0x3a36b04bcc1d5e2e303981ef643d2668e00b43e7' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-UBTC'   │ 1368624.4671939993 │ 12.28030425628796      │ [ '0x5555555555555555555555555555555555555555', '0x9fdbda0a5e284c32744d2f17ee5c74b284993463' ] │ '0.3%'   │ 'https://app.hyperswap.exchange/#/pools/0x3a36b04bcc1d5e2e303981ef643d2668e00b43e7' │ '153489.7248378293278913385273663005' │
│ 2       │ '0x765975e3f795ce8607497818b72493569faec961' │ 'Hyperevm' │ 'hyperswap-v3' │ 'UETH-CMETH'   │ 1193225.167513443  │ 0                      │ [ '0xbe6727b535545c67d5caa73dea54865b92cf7907', '0xe6829d9a7ee3040e1276fa75293bde931859e8fa' ] │ '0.05%'  │ 'https://app.hyperswap.exchange/#/pools/0x765975e3f795ce8607497818b72493569faec961' │ '0'                                   │
│ 3       │ '0x337b56d87a6185cd46af3ac2cdf03cbc37070c30' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-USD₮0'  │ 1185779.870776205  │ 11.17801329095991      │ [ '0x5555555555555555555555555555555555555555', '0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb' ] │ '0.05%'  │ 'https://app.hyperswap.exchange/#/pools/0x337b56d87a6185cd46af3ac2cdf03cbc37070c30' │ '726282.9126405011365901244214054748' │
│ 4       │ '0x719d7f4388cb0efb6a48f3c3266e443edce6588a' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-UETH'   │ 773932.1178046495  │ 6.380424550205214      │ [ '0x5555555555555555555555555555555555555555', '0xbe6727b535545c67d5caa73dea54865b92cf7907' ] │ '0.3%'   │ 'https://app.hyperswap.exchange/#/pools/0x719d7f4388cb0efb6a48f3c3266e443edce6588a' │ '45096.03182313332989015612492711582' │
│ 5       │ '0x56abfaf40f5b7464e9cc8cff1af13863d6914508' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-USD₮0'  │ 473991.9064155823  │ 5.463262942996012      │ [ '0x5555555555555555555555555555555555555555', '0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb' ] │ '0.3%'   │ 'https://app.hyperswap.exchange/#/pools/0x56abfaf40f5b7464e9cc8cff1af13863d6914508' │ '23648.78920182908454862066737029223' │
│ 6       │ '0x5cbe810071de393de35e574fb2830e16da794bab' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-KHYPE'  │ 270105.25100947235 │ 0.3182972401685348     │ [ '0x5555555555555555555555555555555555555555', '0xfd739d4e423301ce9385c1fb8850539d657c296d' ] │ '0.01%'  │ 'https://app.hyperswap.exchange/#/pools/0x5cbe810071de393de35e574fb2830e16da794bab' │ '23554.45368529983210724825542969139' │
│ 7       │ '0x8d64d8273a3d50e44cc0e6f43d927f78754edefb' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-STHYPE' │ 178078.579602118   │ 0.017424473319205974   │ [ '0x5555555555555555555555555555555555555555', '0xffaa4a3d97fe9107cef8a3f48c069f577ff76cc1' ] │ '0.01%'  │ 'https://app.hyperswap.exchange/#/pools/0x8d64d8273a3d50e44cc0e6f43d927f78754edefb' │ '850.1165641093705172172406928102228' │
│ 8       │ '0xe712d505572b3f84c1b4deb99e1beab9dd0e23c9' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-USDC'   │ 146869.12568048126 │ 26.901185003993135     │ [ '0x5555555555555555555555555555555555555555', '0xb88339cb7199b77e23db6e890353e22632ba630f' ] │ '0.3%'   │ 'https://app.hyperswap.exchange/#/pools/0xe712d505572b3f84c1b4deb99e1beab9dd0e23c9' │ '36081.7673178570320629515427618244'  │
│ 9       │ '0x7cac5c8ad2fb1216d3f262b2c9cd5548d0329e78' │ 'Hyperevm' │ 'hyperswap-v3' │ 'UBTC-USD₮0'   │ 105368.59032142375 │ 15.067276324839392     │ [ '0x9fdbda0a5e284c32744d2f17ee5c74b284993463', '0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb' ] │ '0.3%'   │ 'https://app.hyperswap.exchange/#/pools/0x7cac5c8ad2fb1216d3f262b2c9cd5548d0329e78' │ '14498.79147334876003796338232669895' │
└─────────┴──────────────────────────────────────────────┴────────────┴────────────────┴────────────────┴────────────────────┴────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────┴──────────┴─────────────────────────────────────────────────────────────────────────────────────┴───────────────────────────────────────┘

@llamatester
Copy link

The hyperswap-v3 adapter exports pools:

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

Nb of pools: 41
 

Sample pools:
┌─────────┬──────────────────────────────────────────────┬────────────┬────────────────┬────────────────┬────────────────────┬────────────────────────┬──────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────┬──────────┬─────────────────────────────────────────────────────────────────────────────────────┬────────────────────┬────────────────────┐
│ (index) │ pool                                         │ chain      │ project        │ symbol         │ tvlUsd             │ apyBase                │ apyBase7d            │ underlyingTokens                                                                               │ poolMeta │ url                                                                                 │ volumeUsd1d        │ volumeUsd7d        │
├─────────┼──────────────────────────────────────────────┼────────────┼────────────────┼────────────────┼────────────────────┼────────────────────────┼──────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────────────────────────────────────────────────────────────────────────┼────────────────────┼────────────────────┤
│ 0       │ '0xbd775d95c4dc7b1040055a2f763dfc7d16313eb6' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-ΑHYPE'  │ 2643758.073005402  │ 0.00006117530820345471 │ 0.001968939114124232 │ [ '0x5555555555555555555555555555555555555555', '0xe44bd27c9f10fa2f89fdb3ab4b4f0e460da29ea8' ] │ '0.01%'  │ 'https://app.hyperswap.exchange/#/pools/0xbd775d95c4dc7b1040055a2f763dfc7d16313eb6' │ 44.3103328579389   │ 10010.38207350393  │
│ 1       │ '0x3a36b04bcc1d5e2e303981ef643d2668e00b43e7' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-UBTC'   │ 1370578.875756561  │ 12.885599110128524     │ 24.786237866370094   │ [ '0x5555555555555555555555555555555555555555', '0x9fdbda0a5e284c32744d2f17ee5c74b284993463' ] │ '0.3%'   │ 'https://app.hyperswap.exchange/#/pools/0x3a36b04bcc1d5e2e303981ef643d2668e00b43e7' │ 161285.20494803376 │ 2177659.8736618096 │
│ 2       │ '0x765975e3f795ce8607497818b72493569faec961' │ 'Hyperevm' │ 'hyperswap-v3' │ 'UETH-CMETH'   │ 1188307.6493808727 │ 0                      │ null                 │ [ '0xbe6727b535545c67d5caa73dea54865b92cf7907', '0xe6829d9a7ee3040e1276fa75293bde931859e8fa' ] │ '0.05%'  │ 'https://app.hyperswap.exchange/#/pools/0x765975e3f795ce8607497818b72493569faec961' │ 0                  │ 0                  │
│ 3       │ '0x337b56d87a6185cd46af3ac2cdf03cbc37070c30' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-USD₮0'  │ 1167604.8562486032 │ 11.64670937795988      │ 28.042306610227048   │ [ '0x5555555555555555555555555555555555555555', '0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb' ] │ '0.05%'  │ 'https://app.hyperswap.exchange/#/pools/0x337b56d87a6185cd46af3ac2cdf03cbc37070c30' │ 745137.2289875124  │ 12593205.14558208  │
│ 4       │ '0x719d7f4388cb0efb6a48f3c3266e443edce6588a' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-UETH'   │ 774555.1490838018  │ 6.681703411710324      │ 18.151226395916183   │ [ '0x5555555555555555555555555555555555555555', '0xbe6727b535545c67d5caa73dea54865b92cf7907' ] │ '0.3%'   │ 'https://app.hyperswap.exchange/#/pools/0x719d7f4388cb0efb6a48f3c3266e443edce6588a' │ 47263.45006567157  │ 901226.0171245317  │
│ 5       │ '0x56abfaf40f5b7464e9cc8cff1af13863d6914508' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-USD₮0'  │ 474621.9043408472  │ 5.564641274543438      │ 12.994082415775003   │ [ '0x5555555555555555555555555555555555555555', '0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb' ] │ '0.3%'   │ 'https://app.hyperswap.exchange/#/pools/0x56abfaf40f5b7464e9cc8cff1af13863d6914508' │ 24119.6405360501   │ 395338.2141882723  │
│ 6       │ '0x5cbe810071de393de35e574fb2830e16da794bab' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-KHYPE'  │ 271500.26795357454 │ 0.31746974405550976    │ 0.9319834087749205   │ [ '0x5555555555555555555555555555555555555555', '0xfd739d4e423301ce9385c1fb8850539d657c296d' ] │ '0.01%'  │ 'https://app.hyperswap.exchange/#/pools/0x5cbe810071de393de35e574fb2830e16da794bab' │ 23614.553583074965 │ 486603.3561743783  │
│ 7       │ '0x8d64d8273a3d50e44cc0e6f43d927f78754edefb' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-STHYPE' │ 177966.490175105   │ 0.020314151267129727   │ 0.15074201842143864  │ [ '0x5555555555555555555555555555555555555555', '0xffaa4a3d97fe9107cef8a3f48c069f577ff76cc1' ] │ '0.01%'  │ 'https://app.hyperswap.exchange/#/pools/0x8d64d8273a3d50e44cc0e6f43d927f78754edefb' │ 990.4762196978738  │ 51590.438346873954 │
│ 8       │ '0xe712d505572b3f84c1b4deb99e1beab9dd0e23c9' │ 'Hyperevm' │ 'hyperswap-v3' │ 'WHYPE-USDC'   │ 147855.72586411776 │ 27.919547468411526     │ 51.00911594357173    │ [ '0x5555555555555555555555555555555555555555', '0xb88339cb7199b77e23db6e890353e22632ba630f' ] │ '0.3%'   │ 'https://app.hyperswap.exchange/#/pools/0xe712d505572b3f84c1b4deb99e1beab9dd0e23c9' │ 37699.223349220796 │ 483460.8886874191  │
│ 9       │ '0x7cac5c8ad2fb1216d3f262b2c9cd5548d0329e78' │ 'Hyperevm' │ 'hyperswap-v3' │ 'UBTC-USD₮0'   │ 106747.55218650692 │ 14.872637674706016     │ 15.425084236558787   │ [ '0x9fdbda0a5e284c32744d2f17ee5c74b284993463', '0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb' ] │ '0.3%'   │ 'https://app.hyperswap.exchange/#/pools/0x7cac5c8ad2fb1216d3f262b2c9cd5548d0329e78' │ 14498.79147334876  │ 105550.64003354643 │
└─────────┴──────────────────────────────────────────────┴────────────┴────────────────┴────────────────┴────────────────────┴────────────────────────┴──────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────┴──────────┴─────────────────────────────────────────────────────────────────────────────────────┴────────────────────┴────────────────────┘

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@src/adaptors/hyperswap-v3/index.js`:
- Around line 93-99: The code builds tokenAddresses from pools and calls
utils.getPrices but never uses the resulting prices variable; remove the dead
fetch or implement TVL calculation using the prices. Either delete the
tokenAddresses set creation and the await
utils.getPrices(Array.from(tokenAddresses)) call (and the unused prices
identifier), or instead use prices when computing pool.tvl (or similar) by
referencing prices[`${CHAIN}:${tokenId}`] in the pool formatting logic so TVL is
derived from token balances × price; update functions referencing
tokenAddresses, pools, CHAIN, and prices accordingly.

@llamatester
Copy link

The merkl adapter exports pools:

> defillama-apy-server@1.0.0 test
> jest

PASS src/adaptors/test.js
  Running merkl Test
    ✓ Check if link to the pool's page exist (1 ms)
    ✓ Check for unique pool ids (4 ms)
    ✓ 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 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (2 ms)
      ✓ Expects pool id 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x8014e0076e5393e62c49a7134070d8fccc922e46BORROW_BL-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xe0b9e069b0cb46329e7d37e87e635a84ea772fcf-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x03264f03de18e61b49c95d9adfcdfd180d2e5d85-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xeE8F4eC5672F09119b96Ab6fB59C27E1b7e44b61-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0xbeeF010f9cb27031ad51e3333f9aF9C6B1228183-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xBEEFE94c8aD530842bfE7d8B397938fFc1cb83b2-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x784f4b9b2350ba51bdb175d19f68ecd2841e0e1a-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbeeF010f9cb27031ad51e3333f9aF9C6B1228183WHITELIST_CAMPAIGN-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xa52b48680b066d23acfcb1ee16ab097e244ad500-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xdAC17F958D2ee523a2206206994597C13D831ec7-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0xdd0f28e19C1780eb6396170735D45153D261490d-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xaf88d065e77c8cC2239327C5EDb3A432268e5831-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x9ddcae44ca2b47cbd29064e723a0aab9be48f340-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xc582F04d8a82795aa2Ff9c8bb4c1c889fe7b754e-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0xBEeFFF209270748ddd194831b3fa287a5386f5bC-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x1f2c2a64e47d3a0f39867a1df46fbf4c697cf40f-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbEef047a543E45807105E51A8BBEFCc5950fcfBa-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x24dE8771bC5DdB3362Db529Fc3358F2df3A0E346-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xBEEf050ecd6a16c4e7bfFbB52Ebba7846C4b8cD4-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xD9A442856C234a39a81a089C06451EBAa4306a72-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x103222f020e98Bba0AD9809A011FDF8e6F067496-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x19b3cD7032B8C062E8d44EaCad661a0970DD8c55-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x2371e134e3455e0593363cBF89d3b6cf53740618-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x31A5684983EeE865d943A696AAC155363bA024f9-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xb576765fB15505433aF24FEe2c0325895C559FB2-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x5c0C306Aaa9F877de636f4d5822cA9F2E81563BA-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbeeff1D5dE8F79ff37a151681100B039661da518-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id d5769609a4b224d1-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x4200000000000000000000000000000000000006-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbeeff77CE5C059445714E6A3490E273fE7F2492F-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x795dfbde983ef7f2f2340c30c9c1c89d0c56377e-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xBeEFC1CDAfc5b4a649b54D07AFc6bF0f75C6F4E2BORROW_BL-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xA0804346780b4c2e3bE118ac957D1DB82F9d7484-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x7e97fa6893871A2751B5fE961978DCCb2c201E65-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x06d47F3fb376649c3A9Dafe069B3D6E35572219E-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xBEefb9f61CC44895d8AEc381373555a64191A9c4-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0xA9d17f6D3285208280a1Fd9B94479c62e0AABa64-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x1401d1271C47648AC70cBcdfA3776D4A87CE006B-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xc54b4E08C1Dcc199fdd35c6b5Ab589ffD3428a8d-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x2C6D169782bF18Cc634D076Fe639092227B82fdA-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x8eB67A509616cd6A7c1B3c8C21D48FF57df3d458-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x8d0d000ee44948fc98c9b98a4fa4921476f08b0e-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0x3048925B3EA5A8C12eeCCcb8810F5F7544dB54af-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x616a4E1db48e22028f6bbf20444Cd3b8e3273738-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xC30ce6A5758786e0F640cC5f881Dd96e9a1C5C59-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x4B6F1C9E5d470b97181786b26da0d0945A7cf027-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x5229d1f5b09b7541d372a1c275f12e2806e26bf9-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x852FF1EC21D63b405eC431e04AE3AC760e29263D-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x871aB8E36CaE9AF35c6A3488B049965233DeB7ed-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xa0E430870c4604CcfC7B38Ca7845B1FF653D0ff1-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x67e536797570b3d8919Df052484273815A0aB506-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x73Ea4fff78a427d8b9bd77216aF4c42e78E2F5b8-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xA7A78E8e98c734f87A3B07D8DB627C67001ABD02-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xc1256Ae5FF1cf2719D4937adb3bbCCab2E00A2Ca-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xE89371eAaAC6D46d4C3ED23453241987916224FC-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0x4A312Fca9b7E568ab99E4E5CcbfB409221E1Ed36-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xb0f05E4De970A1aaf77f8C2F823953a367504BA9-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x777791C4d6DC2CE140D00D2828a7C93503c67777-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x62fE596d59fB077c2Df736dF212E0AFfb522dC78-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x9a8bC3B04b7f3D87cfC09ba407dCED575f2d61D8-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xF27950C111aEEFdeD6D8C53bD7452E1b3b96aC39-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0xd63070114470f685b75B74D60EEc7c1113d33a3D-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xDCe03288F9A109150f314ED0Ca9b59a690300d9d-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xc34E7D9D5eC0626ED14B6b7cEe02fE904bec4C8D-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x2E6abcbCCeD9Af05bc3B8a4908e0c98c29A88e10-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x98C49e13bf99D7CAd8069faa2A370933EC9EcF17-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x3a2c4aAae6776dC1c31316De559598f2f952E2cB-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x6B343F7B797f1488AA48C49d540690F2b2c89751-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xDd1cDFA52E7D8474d434cd016fd346701db6B3B9-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x1e33E98aF620F1D563fcD3cfd3C75acE841204ef-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xd8c989aB5f5b2ABDc76a8D3Acec165300BF30ecD-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x606fe9a70338e798a292CA22C1F28C829F24048E-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x974c8FBf4fd795F66B85B73ebC988A51F1A040a9-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x972966bCC17f7d818De4F27Dc146Ef539c231BdF-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xAd4AA2a713fB86FBb6b60dE2aF9E32a11DB6Abf2-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 731379aaa37f154f-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x4Ff4186188f8406917293A9e01A1ca16d3cf9E59-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x9396DCbf78fc526bb003665337C5E73b699571EF-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x9B5E92fd227876b4C07a8c02367E2CB23c639DfA-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x754704Bc059F8C67012fEd69BC8A327a5aafb603-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x5F7827FDeb7c20b443265Fc2F40845B715385Ff2-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0x34eCe536d2ae03192B06c0A67030D1Faf4c0Ba43-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbeef0046fcab1dE47E41fB75BB3dC4Dfc94108E3-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x4881Ef0BF6d2365D3dd6499ccd7532bcdBCE0658-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x79FD640000F8563A866322483524a4b48f1Ed702-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xF8C100aB4b2d416609b0Ef18105eBf601b2ec84A-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x802c91d807A8DaCA257c4708ab264B6520964e44-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbeEFf443C3CbA3E369DA795002243BeaC311aB83-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x937c7868824ae53dB3b7C634de209FB7a74E362c-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x23479229e52Ab6aaD312D0B03DF9F33B46753B5e-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xB3f4D94A209045Ef35661e657Db9ADAc584141f1-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xe2221Aa07ec3266DA87763E2b1e28d07A8a4e53b-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x27D8c7273fd3fcC6956a0B370cE5Fd4A7fc65c18-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xe108fbc04852B5df72f9E44d7C29F47e7A993aDd-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0xd8A6511979D9C5D387c819E9F8ED9F3a5C6c5379-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xfd2c2A98009d0cBed715882036e43d26C4289053-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x5A32099837D89E3a794a44fb131CBbAD41f87a8C-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xe7f5e64f482a8f9dbe46ae38a3a77e6155093d48-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x4be0228d40db5ca43e4ecf93e633be4b9fc52229-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x56A76b428244a50513ec81e225a293d128fd581D-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbeef003C68896c7D2c3c60d363e8d71a49Ab2bf9-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xaf88d065e77c8cc2239327c5edb3a432268e5832-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x7c574174DA4b2be3f705c6244B4BfA0815a8B3Ed-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbeEF346d7099865208Ff331e4f648f4154DDAa05-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x0f998Fa5ecAF0f08d877D73773F76E227a5E517B-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xc080f56504e0278828A403269DB945F6c6D6E014-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xb8D89678E75a973E74698c976716308abB8a46A4-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x701907283a57FF77E255C3f1aAD790466B8CE4ef-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x9f96E4B65059b0398B922792d3fF9F10B4567533-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x9469470C9878bf3d6d0604831d9A3A366156f7EE-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x711a68a82dd80cB0435b281aF76B0B80804eFab9-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x7ceB0f01Cb7187a2EBED5661eCC4d5701d8F2350-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xf24608E0CCb972b0b0f4A6446a0BBf58c701a026-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x2bb9ad69FEBA5547b7cD57aAfe8457D40bF834af-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x5579e27129110bBC9c0eC1388aCBf7ad04771b76-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xc4173359087CE643235420b7bC610d9B0CF2B82D-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0xaCaaA891b30E13D024AB67b6EcA9c2EcBD8cf52b-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x8CB3649114051cA5119141a34C200D65dc0Faa73-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xE9cDA459bED6dcfb8AC61CD8cE08E2D52370cB06-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xedd5c6F4526ea6FDEa31E56d206e94E966257B70-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xB0f56BB0bf13ee05FeF8cD2d8DF5FfdFcAC7a74f-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbb819D845b573B5D7C538F5b85057160cfb5f313-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xe66E3A37C3274Ac24FE8590f7D84A2427194DC17-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (3 ms)
      ✓ Expects pool id 0x8e77af0efaf4a3d59f37126c77f6f0ee7b56bcb1-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbeeff07d991C04CD640DE9F15C08ba59c4FEDEb7-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xf79F51f8F473eD34f6b2b13ee74c3208286D53EB-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xFb6a09634A3C1aC05318F85321980d1208372793-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbeef088055857739C12CD3765F20b7679Def0f51-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x132E6C9C33A62D7727cd359b1f51e5B566E485Eb-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0x098697bA3Fee4eA76294C5d6A466a4e3b3E95FE6-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbEEf0c18715ACDdC14a3123a608F491319F1C28C-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x58ba69b289De313E66A13B7D1F822Fc98b970554-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xBEeF1f5Bd88285E5B239B6AAcb991d38ccA23Ac9-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x649342c6bff544d82DF1B2bA3C93e0C22cDeBa84-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x725e18142472384e45e15084e308dbeaE43381aa-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xBeEF086b8807Dc5E5A1740C5E3a7C4c366eA6ab5-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0xd564F765F9aD3E7d2d6cA782100795a885e8e7C8-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xD6664390E0485Cd609d4D04b430e84e945a51994-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x5668c53C6188BA0a311E28b54D7822771D9BDeeaBORROW_BL-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xa71D08A159258553a5Ac190d60Fa919425Ff02EA-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x143A24569a73AFB856A2ee3D554AbcA860118785-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xE1bA476304255353aEF290e6474A417D06e7b773-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x5Da17CA137f1128d4be7Ce574bc61f3ac4839Df8-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x739d8a60ED4b14E4cB6DCAEAF79d2ec0Ca092237-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xbEEf390D2e65d6E43A67875106d4A48f700F2832-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0xff527fe9c6516f9d82a3d51422ccb031d123266e-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x5D37F9B272ca7cdA2A05245b9a503746EefAC88f-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x32E616F4f17d43f9A5cd9Be0e294727187064cb3-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens
      ✓ Expects pool id 0x68Aea7b82Df6CcdF76235D46445Ed83f85F845A3-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens (1 ms)
      ✓ Expects pool id 0xaB3cb84c310186B2Fa4B4503624A5D90b5DcB22D-merkl 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,poolMeta,symbol,tvlUsd,apyReward,rewardTokens,underlyingTokens

Nb of pools: 939
 

Sample pools:
┌─────────┬─────────────────────────────────────────────────────────────┬────────────┬─────────┬──────────┬─────────────────────────────────┬───────────────────┬─────────────────────┬──────────────────────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ (index) │ pool                                                        │ chain      │ project │ poolMeta │ symbol                          │ tvlUsd            │ apyReward           │ rewardTokens                                     │ underlyingTokens                                                                                                                                              │
├─────────┼─────────────────────────────────────────────────────────────┼────────────┼─────────┼──────────┼─────────────────────────────────┼───────────────────┼─────────────────────┼──────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 0       │ '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913-merkl'          │ 'base'     │ 'merkl' │ 'LEND'   │ 'USDC'                          │ 1559112170.803875 │ 0.086951574298479   │ [ '0xBAa5CC21fd487B8Fcc2F632f3F4E8D37262a0842' ] │ [ '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' ]                                                                                                              │
│ 1       │ '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48-merkl'          │ 'ethereum' │ 'merkl' │ 'LEND'   │ 'USDC'                          │ 1233762330.003477 │ 0.2747029441216079  │ [ '0x58D97B57BB95320F9a05dC918Aef65434969c2B2' ] │ [ '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ]                                                                                                              │
│ 2       │ '0x8014e0076e5393e62c49a7134070d8fccc922e46BORROW_BL-merkl' │ 'ethereum' │ 'merkl' │ 'LEND'   │ 'sUSDe-aEthUSDe-USDe-aEthsUSDe' │ 781184061.0546588 │ 4.805262865546066   │ [ '0x3a4de44B29995a3D8Cd02d46243E1563E55bCc8b' ] │ [ '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497', '0x4F5923Fc5FD4a93352581b38B7cD26943012DECF', '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3', ... 1 more item ] │
│ 3       │ '0xe0b9e069b0cb46329e7d37e87e635a84ea772fcf-merkl'          │ 'arbitrum' │ 'merkl' │ 'LEND'   │ 'wETH'                          │ 638297522.0808376 │ 0.3045264955426751  │ [ '0x2c63f9da936624Ac7313b972251D340260A4bF08' ] │ [ '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1' ]                                                                                                              │
│ 4       │ '0x03264f03de18e61b49c95d9adfcdfd180d2e5d85-merkl'          │ 'ethereum' │ 'merkl' │ 'LEND'   │ 'aEthRLUSD'                     │ 601657716.3402582 │ 5                   │ [ '0x72eEED8043Dcce2Fe7CdAC950D928F80f472ab80' ] │ [ '0xFa82580c16A31D0c1bC632A36F82e83EfEF3Eec0' ]                                                                                                              │
│ 5       │ '0xeE8F4eC5672F09119b96Ab6fB59C27E1b7e44b61-merkl'          │ 'base'     │ 'merkl' │ 'LEND'   │ 'gtUSDCp-USDC'                  │ 451401036.3524465 │ 0.08693557082465474 │ [ '0xBAa5CC21fd487B8Fcc2F632f3F4E8D37262a0842' ] │ [ '0xeE8F4eC5672F09119b96Ab6fB59C27E1b7e44b61', '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' ]                                                                │
│ 6       │ '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB-merkl'          │ 'ethereum' │ 'merkl' │ 'LEND'   │ 'steakUSDC'                     │ 445012927.6714333 │ 0.2672780328759286  │ [ '0x58D97B57BB95320F9a05dC918Aef65434969c2B2' ] │ [ '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB' ]                                                                                                              │
│ 7       │ '0xbeeF010f9cb27031ad51e3333f9aF9C6B1228183-merkl'          │ 'base'     │ 'merkl' │ 'LEND'   │ 'steakUSDC-USDC'                │ 437921379.6983028 │ 0.0869456955603133  │ [ '0xBAa5CC21fd487B8Fcc2F632f3F4E8D37262a0842' ] │ [ '0xbeeF010f9cb27031ad51e3333f9aF9C6B1228183', '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' ]                                                                │
│ 8       │ '0xBEEFE94c8aD530842bfE7d8B397938fFc1cb83b2-merkl'          │ 'base'     │ 'merkl' │ 'LEND'   │ 'steakUSDC-USDC'                │ 417303048.6583052 │ 0.08696086981277577 │ [ '0xBAa5CC21fd487B8Fcc2F632f3F4E8D37262a0842' ] │ [ '0xBEEFE94c8aD530842bfE7d8B397938fFc1cb83b2', '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' ]                                                                │
│ 9       │ '0x784f4b9b2350ba51bdb175d19f68ecd2841e0e1a-merkl'          │ 'ethereum' │ 'merkl' │ 'LEND'   │ 'aEthPYUSD'                     │ 400733792.177249  │ 3.863737049944509   │ [ '0x0f1eb8D5568E9C1ee72E6dE7B5a9e2837A530019' ] │ [ '0x0C0d01AbF3e6aDfcA0989eBbA9d6e85dD58EaB1E' ]                                                                                                              │
└─────────┴─────────────────────────────────────────────────────────────┴────────────┴─────────┴──────────┴─────────────────────────────────┴───────────────────┴─────────────────────┴──────────────────────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
This adapter contains some pools with <10k TVL, these pools won't be shown in DefiLlama

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@src/adaptors/hyperswap-v3/index.js`:
- Around line 99-114: The 7-day APY calculation currently sums pool.poolDayData
regardless of how many days exist, potentially producing misleading apyBase7d
for new pools; update the logic around apyBase7d and volumeUSD7d to first
inspect pool.poolDayData.length (or compute days = pool.poolDayData?.length ||
0) and only compute apyBase7d when days >= 7 (set apyBase7d = null otherwise)
or, if you prefer scaling, annualize using the actual days (e.g., use
volumeUSD7d / days * 365 when days > 0) so the calculation in the block that
sets apyBase7d matches the actual available day count; touch the variables
apyBase7d, volumeUSD7d and the surrounding block that calls calculateApyBase to
implement this guard or scaling.

Comment on lines +99 to +114
const dayData = pool.poolDayData?.[0];
const volumeUSD1d = Number(dayData?.volumeUSD) || 0;

const volumeUSD7d = pool.poolDayData
? pool.poolDayData.reduce(
(sum, day) => sum + Number(day.volumeUSD || 0),
0
)
: 0;

const apyBase = calculateApyBase(volumeUSD1d, pool.feeTier, tvlUSD);

const apyBase7d =
volumeUSD7d > 0
? ((volumeUSD7d * Number(pool.feeTier)) / 1e6 / tvlUSD) * 52 * 100
: null;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Avoid misleading 7d APY when fewer than 7 days of data exist.

apyBase7d is computed even if poolDayData has fewer than 7 entries, which can skew results for newer pools. Consider gating on poolDayData.length >= 7 (or scaling by actual day count).

🔧 Proposed fix (guard on day count)
-        const volumeUSD7d = pool.poolDayData
+        const dayCount = pool.poolDayData?.length || 0;
+        const volumeUSD7d = pool.poolDayData
           ? pool.poolDayData.reduce(
               (sum, day) => sum + Number(day.volumeUSD || 0),
               0
             )
           : 0;
@@
-        const apyBase7d =
-          volumeUSD7d > 0
-            ? ((volumeUSD7d * Number(pool.feeTier)) / 1e6 / tvlUSD) * 52 * 100
-            : null;
+        const apyBase7d =
+          dayCount >= 7 && tvlUSD > 0
+            ? ((volumeUSD7d / dayCount) * 365 * (Number(pool.feeTier) / 1e6) / tvlUSD) * 100
+            : null;
🤖 Prompt for AI Agents
In `@src/adaptors/hyperswap-v3/index.js` around lines 99 - 114, The 7-day APY
calculation currently sums pool.poolDayData regardless of how many days exist,
potentially producing misleading apyBase7d for new pools; update the logic
around apyBase7d and volumeUSD7d to first inspect pool.poolDayData.length (or
compute days = pool.poolDayData?.length || 0) and only compute apyBase7d when
days >= 7 (set apyBase7d = null otherwise) or, if you prefer scaling, annualize
using the actual days (e.g., use volumeUSD7d / days * 365 when days > 0) so the
calculation in the block that sets apyBase7d matches the actual available day
count; touch the variables apyBase7d, volumeUSD7d and the surrounding block that
calls calculateApyBase to implement this guard or scaling.

@0xkr3p 0xkr3p merged commit a1e79da into DefiLlama:master Jan 20, 2026
2 checks passed
@ethachiSwap
Copy link

NEW HYPERSWAP V2 SUBGRAPH:

https://api.goldsky.com/api/public/project_cm97l77ib0cz601wlgi9wb0ec/subgraphs/hyperswap-v2/1.0.5/gn

@coderabbitai coderabbitai bot mentioned this pull request Jan 23, 2026
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.

track hyperswap pools

3 participants