Full Code of DefiLlama/dimension-adapters for AI

master 920104dcbd5a cached
2538 files
7.6 MB
2.1M tokens
4674 symbols
1 requests
Download .txt
Showing preview only (8,416K chars total). Download the full file or copy to clipboard to get everything.
Repository: DefiLlama/dimension-adapters
Branch: master
Commit: 920104dcbd5a
Files: 2538
Total size: 7.6 MB

Directory structure:
gitextract__lkgpfkp/

├── .coderabbit.yaml
├── .github/
│   ├── CODEOWNERS
│   └── workflows/
│       ├── build-modules-and-alert.yml
│       ├── comment.yml
│       ├── commentResult.js
│       ├── getFileList.js
│       ├── test-adapter.yml
│       └── ts-check.yml
├── .gitignore
├── GUIDELINES.md
├── README.md
├── active-users/
│   ├── aptos.ts
│   ├── kyan.ts
│   └── sui.ts
├── adapters/
│   ├── types.ts
│   └── utils/
│       ├── importAdapter.ts
│       └── runAdapter.ts
├── aggregator-derivatives/
│   ├── .gitkeep
│   ├── GUIDELINES.md
│   ├── defiapp/
│   │   └── index.ts
│   ├── flat-money/
│   │   ├── helper.ts
│   │   └── index.ts
│   ├── flat-money-v1/
│   │   └── index.ts
│   ├── flat-money-v2/
│   │   └── index.ts
│   ├── kwenta/
│   │   └── index.ts
│   ├── mux-protocol-agge.ts
│   └── vooi/
│       └── index.ts
├── aggregator-options/
│   ├── GUIDELINES.md
│   ├── example.ts
│   └── grix/
│       └── index.ts
├── aggregators/
│   ├── 1delta/
│   │   └── index.ts
│   ├── 1inch-agg/
│   │   └── index.ts
│   ├── 3route/
│   │   └── index.ts
│   ├── 8dx-aggregator/
│   │   └── index.ts
│   ├── GUIDELINES.md
│   ├── aftermath-aggregator/
│   │   └── index.ts
│   ├── aggre/
│   │   └── index.ts
│   ├── akka/
│   │   └── index.ts
│   ├── allox/
│   │   └── index.ts
│   ├── anqa/
│   │   └── index.ts
│   ├── apstation/
│   │   └── index.ts
│   ├── arbitrage-inc/
│   │   └── index.ts
│   ├── atmos-aggregator.ts
│   ├── aura-agg/
│   │   └── index.ts
│   ├── avnu/
│   │   └── index.ts
│   ├── barter/
│   │   └── index.ts
│   ├── bebop/
│   │   ├── index.ts
│   │   └── jamAbi.ts
│   ├── bim/
│   │   ├── config.ts
│   │   └── index.ts
│   ├── binancewallet/
│   │   └── index.ts
│   ├── bitgetwallet/
│   │   └── index.ts
│   ├── bluefin7k-aggregator/
│   │   └── index.ts
│   ├── bountive/
│   │   └── index.ts
│   ├── bungee-dex.ts
│   ├── bytzz/
│   │   └── index.ts
│   ├── carina-aggregator/
│   │   └── index.ts
│   ├── cetus-aggregator/
│   │   └── index.ts
│   ├── chainspot/
│   │   └── index.ts
│   ├── chimpx/
│   │   └── index.ts
│   ├── conveyor/
│   │   └── index.ts
│   ├── cowswap/
│   │   └── index.ts
│   ├── cro-ag/
│   │   └── index.ts
│   ├── dedust/
│   │   └── index.ts
│   ├── defiapp/
│   │   └── index.ts
│   ├── deluthium/
│   │   └── index.ts
│   ├── dexhunter/
│   │   └── index.ts
│   ├── dexr/
│   │   └── index.ts
│   ├── dflow/
│   │   └── index.ts
│   ├── dirol/
│   │   └── index.ts
│   ├── dodo-agg/
│   │   └── index.ts
│   ├── durianfun/
│   │   └── index.ts
│   ├── dzap/
│   │   └── index.ts
│   ├── eisen/
│   │   └── index.ts
│   ├── enso/
│   │   └── index.ts
│   ├── erc-burner/
│   │   └── index.ts
│   ├── etaswap/
│   │   └── index.ts
│   ├── fibrous-finance/
│   │   └── index.ts
│   ├── flowx-aggregator/
│   │   └── index.ts
│   ├── fluxa/
│   │   └── index.ts
│   ├── gluex-protocol/
│   │   └── index.ts
│   ├── grelfswap/
│   │   └── index.ts
│   ├── groypfi/
│   │   └── index.ts
│   ├── haiku/
│   │   └── index.ts
│   ├── hallswap/
│   │   └── index.ts
│   ├── hinkal/
│   │   └── index.ts
│   ├── holdstation-agg/
│   │   └── index.ts
│   ├── houdiniswap/
│   │   └── index.ts
│   ├── hyperbloom/
│   │   └── index.ts
│   ├── hyperflow/
│   │   └── index.ts
│   ├── injex/
│   │   └── index.ts
│   ├── inoswap/
│   │   └── index.ts
│   ├── jeton/
│   │   └── index.ts
│   ├── joe-agg/
│   │   └── index.ts
│   ├── jumper-exchange/
│   │   └── index.ts
│   ├── jupiter-aggregator/
│   │   └── index.ts
│   ├── kame-aggregator/
│   │   └── index.ts
│   ├── kanalabs/
│   │   └── index.ts
│   ├── kuru/
│   │   └── index.ts
│   ├── kyberswap/
│   │   └── index.ts
│   ├── kyoag/
│   │   └── index.ts
│   ├── lamboo/
│   │   └── index.ts
│   ├── lifi/
│   │   └── index.ts
│   ├── lilswap/
│   │   └── index.ts
│   ├── liquidmesh/
│   │   └── index.ts
│   ├── liquidswap/
│   │   └── index.ts
│   ├── llamaswap/
│   │   └── index.ts
│   ├── lunar-finance/
│   │   └── index.ts
│   ├── madhouse/
│   │   └── index.ts
│   ├── magpie/
│   │   └── index.ts
│   ├── metamask.ts
│   ├── mimboku-aggregator/
│   │   └── index.ts
│   ├── minswap/
│   │   └── index.ts
│   ├── monbridgedex/
│   │   └── index.ts
│   ├── monorail.ts
│   ├── mosaic/
│   │   └── index.ts
│   ├── nanoport/
│   │   └── index.ts
│   ├── navi/
│   │   └── index.ts
│   ├── neptune-swap/
│   │   └── index.ts
│   ├── nordstern-finance/
│   │   └── index.ts
│   ├── obsidian/
│   │   └── index.ts
│   ├── odos/
│   │   └── index.ts
│   ├── okx/
│   │   └── index.ts
│   ├── oogabooga/
│   │   └── index.ts
│   ├── ooia/
│   │   └── index.ts
│   ├── openocean/
│   │   └── index.ts
│   ├── opensea/
│   │   └── index.ts
│   ├── opt-agg/
│   │   └── index.ts
│   ├── orbiter-finance/
│   │   └── index.ts
│   ├── paraswap/
│   │   └── index.ts
│   ├── rainbow-swap/
│   │   └── index.ts
│   ├── rango/
│   │   └── index.ts
│   ├── rheon/
│   │   └── index.ts
│   ├── rubic/
│   │   └── index.ts
│   ├── scallop/
│   │   └── index.ts
│   ├── stackit/
│   │   └── index.ts
│   ├── superboring/
│   │   └── index.ts
│   ├── superswap/
│   │   └── index.ts
│   ├── sushiswap-agg.ts
│   ├── swap-coffee/
│   │   └── index.ts
│   ├── swapgpt/
│   │   └── index.ts
│   ├── swing/
│   │   └── index.ts
│   ├── symphony/
│   │   └── index.ts
│   ├── tephra/
│   │   └── index.ts
│   ├── tideswap/
│   │   └── index.ts
│   ├── titan/
│   │   └── index.ts
│   ├── titan-exchange/
│   │   └── index.ts
│   ├── tondiamonds/
│   │   └── index.ts
│   ├── udex-agg/
│   │   └── index.ts
│   ├── unizen/
│   │   └── index.ts
│   ├── venum/
│   │   └── index.ts
│   ├── vetrade/
│   │   └── index.ts
│   ├── virtus/
│   │   └── index.ts
│   ├── wolfswap/
│   │   └── index.ts
│   ├── wowmax/
│   │   └── index.ts
│   ├── yield-yak/
│   │   └── index.ts
│   └── zrx/
│       └── index.ts
├── bridge-aggregators/
│   ├── GUIDELINES.md
│   ├── babydoge-bridge/
│   │   └── index.ts
│   ├── bim/
│   │   └── index.ts
│   ├── bitgetwallet/
│   │   └── index.ts
│   ├── brotocol/
│   │   └── index.ts
│   ├── bungee-bridge/
│   │   └── index.ts
│   ├── dzap/
│   │   └── index.ts
│   ├── garden/
│   │   └── index.ts
│   ├── jumper.exchange/
│   │   └── index.ts
│   ├── lifi/
│   │   └── index.ts
│   ├── lunar-finance-bridge/
│   │   └── index.ts
│   ├── mynth/
│   │   └── index.ts
│   ├── okx/
│   │   └── index.ts
│   ├── opensea/
│   │   └── index.ts
│   ├── orbiter-finance/
│   │   └── index.ts
│   ├── rango/
│   │   └── index.ts
│   ├── rubic/
│   │   └── index.ts
│   ├── sharpe-bridge/
│   │   └── index.ts
│   ├── socket/
│   │   ├── contracts.ts
│   │   └── index.ts
│   ├── stableflow/
│   │   └── index.ts
│   ├── swing/
│   │   └── index.ts
│   ├── virtus/
│   │   └── index.ts
│   └── xy-finance/
│       └── index.ts
├── cli/
│   ├── buildModules.ts
│   ├── compareModules.js
│   ├── interactive.js
│   ├── migrateDeadProjects.ts
│   ├── moduleStats.js
│   ├── testAdapter.ts
│   └── utils.ts
├── dexs/
│   ├── 0x-limit.ts
│   ├── 0x-otc.ts
│   ├── 0x-rfq.ts
│   ├── 10kswap/
│   │   └── index.ts
│   ├── 1776meme/
│   │   └── index.ts
│   ├── 1dex/
│   │   └── index.ts
│   ├── 4swap/
│   │   └── index.ts
│   ├── ArbitrumExchange-v2.ts
│   ├── ArbitrumExchange-v3.ts
│   ├── FeeFree/
│   │   └── index.ts
│   ├── GUIDELINES.md
│   ├── ICDex/
│   │   └── index.ts
│   ├── MantisSwap/
│   │   └── index.ts
│   ├── Scopuly/
│   │   └── index.ts
│   ├── SecuredFinance/
│   │   └── index.ts
│   ├── SmarDex/
│   │   ├── abis.ts
│   │   ├── config.ts
│   │   ├── index.ts
│   │   └── usdn-volume.ts
│   ├── SubstanceX/
│   │   └── index.ts
│   ├── aark/
│   │   └── index.ts
│   ├── aborean/
│   │   ├── index.ts
│   │   └── utils.ts
│   ├── aborean-cl/
│   │   └── index.ts
│   ├── acala-swap/
│   │   └── index.ts
│   ├── adrena/
│   │   └── index.ts
│   ├── aerodrome/
│   │   ├── index.ts
│   │   └── utils.ts
│   ├── aerodrome-slipstream/
│   │   └── index.ts
│   ├── aevo/
│   │   └── index.ts
│   ├── aftermath-fi-amm/
│   │   └── index.ts
│   ├── aftermath-fi-perp/
│   │   └── index.ts
│   ├── agdex/
│   │   └── index.ts
│   ├── airswap/
│   │   └── index.ts
│   ├── alex/
│   │   └── index.ts
│   ├── allbridge-classic/
│   │   └── index.ts
│   ├── alpha-arcade/
│   │   └── index.ts
│   ├── alphaq/
│   │   └── index.ts
│   ├── alphasec-spot.ts
│   ├── alphix.ts
│   ├── althea-dex.ts
│   ├── ambient/
│   │   └── index.ts
│   ├── amigo.ts
│   ├── amped-derivatives.ts
│   ├── amped-swap.ts
│   ├── angstrom/
│   │   ├── helper/
│   │   │   ├── asset.ts
│   │   │   ├── binaryDecoder.ts
│   │   │   ├── index.ts
│   │   │   ├── pair.ts
│   │   │   ├── pool.ts
│   │   │   ├── type/
│   │   │   │   └── type.ts
│   │   │   └── utils.ts
│   │   └── index.ts
│   ├── anome/
│   │   └── index.ts
│   ├── antarctic/
│   │   └── index.ts
│   ├── anyhedge/
│   │   └── index.ts
│   ├── ape-church/
│   │   └── index.ts
│   ├── apestore/
│   │   └── index.ts
│   ├── apex-omni/
│   │   └── index.ts
│   ├── apollox/
│   │   └── index.ts
│   ├── aptos-caliber-prop-amm/
│   │   └── index.ts
│   ├── aqua-network/
│   │   └── index.ts
│   ├── arctic/
│   │   └── index.ts
│   ├── arena-launch.ts
│   ├── ash-perp/
│   │   └── index.ts
│   ├── ashswap/
│   │   └── index.ts
│   ├── aster-spot.ts
│   ├── astro-perp.ts
│   ├── astrolescent/
│   │   └── index.ts
│   ├── astroport-v2/
│   │   └── index.ts
│   ├── atmos-dex/
│   │   └── index.ts
│   ├── atmos-studio.ts
│   ├── aux-exchange/
│   │   └── index.ts
│   ├── avantis/
│   │   └── index.ts
│   ├── axial/
│   │   └── index.ts
│   ├── b402/
│   │   └── index.ts
│   ├── babydoge-algebra.ts
│   ├── balanced/
│   │   └── index.ts
│   ├── balancer-v1.ts
│   ├── balancer-v2.ts
│   ├── balancer-v3/
│   │   └── index.ts
│   ├── bancor-v2_1.ts
│   ├── bancor-v3.ts
│   ├── barterswap/
│   │   └── index.ts
│   ├── baryon/
│   │   └── index.ts
│   ├── baseswap-v2.ts
│   ├── baseswap-v3.ts
│   ├── basin/
│   │   ├── helper.ts
│   │   └── index.ts
│   ├── beamex-beamex-perps.ts
│   ├── beamex-beamex-swap.ts
│   ├── beamswap-classic.ts
│   ├── beamswap-stable-amm.ts
│   ├── bean-exchange/
│   │   └── index.ts
│   ├── beethoven-x/
│   │   └── index.ts
│   ├── beets-v3/
│   │   └── index.ts
│   ├── beezie.ts
│   ├── believe/
│   │   └── index.ts
│   ├── betterswap/
│   │   └── index.ts
│   ├── bifrost-dex.ts
│   ├── bigpump/
│   │   └── index.ts
│   ├── bisonfi/
│   │   └── index.ts
│   ├── bisq/
│   │   └── index.ts
│   ├── bitcoin-bridge/
│   │   └── index.ts
│   ├── bitflow-fi.ts
│   ├── bitflux/
│   │   └── index.ts
│   ├── bitget-wallet-card.ts
│   ├── bitkeep/
│   │   └── index.ts
│   ├── blackhole-CL.ts
│   ├── blackhole.ts
│   ├── bladeswap-v2.ts
│   ├── blastfutures/
│   │   └── index.ts
│   ├── blex-derivatives.ts
│   ├── blex-volume.ts
│   ├── bluefin/
│   │   └── index.ts
│   ├── bluefin-amm/
│   │   └── index.ts
│   ├── bluefin-pro/
│   │   └── index.ts
│   ├── bluemove.ts
│   ├── blum/
│   │   └── index.ts
│   ├── blur.ts
│   ├── bmx-derivatives.ts
│   ├── bmx-freestyle/
│   │   └── index.ts
│   ├── bmx-swap.ts
│   ├── bogged-finance/
│   │   └── index.ts
│   ├── boop-fun/
│   │   └── index.ts
│   ├── boros/
│   │   └── index.ts
│   ├── bounce-tech.ts
│   ├── brine/
│   │   └── index.ts
│   ├── brownfi/
│   │   └── index.ts
│   ├── bsx/
│   │   └── index.ts
│   ├── bulbaswap-v2.ts
│   ├── bulbaswap-v3.ts
│   ├── bullaexchange/
│   │   └── index.ts
│   ├── bullbit-ai/
│   │   └── index.ts
│   ├── bullbit-perp-dex/
│   │   └── index.ts
│   ├── bullet-perp/
│   │   └── index.ts
│   ├── bunni-v2.ts
│   ├── byreal/
│   │   └── index.ts
│   ├── c3-exchange/
│   │   └── index.ts
│   ├── cables/
│   │   └── index.ts
│   ├── camelot-v3/
│   │   └── index.ts
│   ├── canonic/
│   │   └── index.ts
│   ├── cap-finance-v4.ts
│   ├── capybara-exchange/
│   │   └── index.ts
│   ├── capybara-perp/
│   │   └── index.ts
│   ├── carbon/
│   │   └── index.ts
│   ├── carbondefi/
│   │   ├── index.ts
│   │   ├── types.ts
│   │   └── utils.ts
│   ├── carthage-v3.ts
│   ├── catalist-dex/
│   │   └── index.ts
│   ├── catton/
│   │   └── index.ts
│   ├── cauldron/
│   │   └── index.ts
│   ├── caviarnine-agg.ts
│   ├── caviarnine-lsu-pool/
│   │   └── index.ts
│   ├── caviarnine-orderbook.ts
│   ├── caviarnine-simplepool.ts
│   ├── cellana-finance/
│   │   └── index.ts
│   ├── cetus/
│   │   └── index.ts
│   ├── cetus-dlmm/
│   │   └── index.ts
│   ├── chainflip/
│   │   └── index.ts
│   ├── chainge-finance/
│   │   └── index.ts
│   ├── challenge4trading-perp.ts
│   ├── chapool.ts
│   ├── cherryswap/
│   │   └── index.ts
│   ├── citrex-markets/
│   │   └── index.ts
│   ├── claimswap/
│   │   └── index.ts
│   ├── clipper/
│   │   └── index.ts
│   ├── clob/
│   │   └── index.ts
│   ├── clober-v2/
│   │   └── index.ts
│   ├── cobaltx.ts
│   ├── coinhain/
│   │   └── index.ts
│   ├── colorpool.ts
│   ├── concordex-io/
│   │   └── index.ts
│   ├── contango/
│   │   └── index.ts
│   ├── copump.ts
│   ├── core-markets/
│   │   └── index.ts
│   ├── corex/
│   │   └── index.ts
│   ├── crema-finance/
│   │   └── index.ts
│   ├── cube/
│   │   └── index.ts
│   ├── curve/
│   │   ├── api.ts
│   │   └── index.ts
│   ├── cvex/
│   │   └── index.ts
│   ├── cyberperp/
│   │   ├── cyberperp.ts
│   │   └── index.ts
│   ├── d8x/
│   │   └── index.ts
│   ├── dackieswap/
│   │   └── index.ts
│   ├── dango/
│   │   └── index.ts
│   ├── danogo/
│   │   ├── index.ts
│   │   └── types.ts
│   ├── dappos-intentEx/
│   │   └── index.ts
│   ├── decibel/
│   │   └── index.ts
│   ├── dedust/
│   │   └── index.ts
│   ├── deepbookv3-sui/
│   │   └── index.ts
│   ├── deeptrade/
│   │   └── index.ts
│   ├── defibox/
│   │   └── index.ts
│   ├── defichain-dex/
│   │   └── index.ts
│   ├── defiplaza/
│   │   └── index.ts
│   ├── degen-launchpad/
│   │   └── index.ts
│   ├── delphi/
│   │   └── index.ts
│   ├── delta-trade/
│   │   └── index.ts
│   ├── deltadefi/
│   │   └── index.ts
│   ├── demex-demex-perp.ts
│   ├── demex-demex.ts
│   ├── denaria.ts
│   ├── derivio-derivatives.ts
│   ├── derivio-swap.ts
│   ├── desk/
│   │   └── index.ts
│   ├── dexalot/
│   │   └── index.ts
│   ├── dexswap/
│   │   └── index.ts
│   ├── dexter/
│   │   ├── constants.ts
│   │   ├── dimensions.ts
│   │   └── index.ts
│   ├── dexter-tezos/
│   │   └── index.ts
│   ├── dextrabot.ts
│   ├── dflow-prediction/
│   │   └── index.ts
│   ├── dinari/
│   │   └── index.ts
│   ├── dipcoin-perps/
│   │   └── index.ts
│   ├── dipcoin-spot/
│   │   └── index.ts
│   ├── dodo/
│   │   ├── dailyVolumePayload.ts
│   │   ├── index.ts
│   │   └── totalVolumePayload.ts
│   ├── dpex/
│   │   └── index.ts
│   ├── dragonswap-sei/
│   │   └── index.ts
│   ├── dragonswap-sei-v3/
│   │   └── index.ts
│   ├── dragonswap-v2.ts
│   ├── dragonswap-v3.ts
│   ├── drift-protocol-derivatives.ts
│   ├── drift-protocol-swap.ts
│   ├── drip-trade.ts
│   ├── duality/
│   │   └── index.ts
│   ├── durian-amm/
│   │   └── index.ts
│   ├── durianfun-launchpad/
│   │   └── index.ts
│   ├── dusa/
│   │   └── index.ts
│   ├── dx25/
│   │   └── index.ts
│   ├── dydx-v4/
│   │   └── index.ts
│   ├── dyorswap-launchpad/
│   │   └── index.ts
│   ├── e3/
│   │   └── index.ts
│   ├── eaglefi.ts
│   ├── earnium/
│   │   └── index.ts
│   ├── econia/
│   │   └── index.ts
│   ├── edgeX/
│   │   └── index.ts
│   ├── egas-swap/
│   │   └── index.ts
│   ├── ekubo/
│   │   └── index.ts
│   ├── ekubo-evm.ts
│   ├── electra/
│   │   └── index.ts
│   ├── elektrik/
│   │   └── index.ts
│   ├── elexium/
│   │   └── index.ts
│   ├── elfi/
│   │   └── index.ts
│   ├── elfomofi/
│   │   └── index.ts
│   ├── elix-fi/
│   │   └── index.ts
│   ├── elys-dex.ts
│   ├── elys-perp.ts
│   ├── emdx/
│   │   └── index.ts
│   ├── equity-spot/
│   │   └── index.ts
│   ├── ethereal-dex/
│   │   └── index.ts
│   ├── etherex-legacy.ts
│   ├── etherex.ts
│   ├── eulerswap/
│   │   └── index.ts
│   ├── evedex/
│   │   └── index.ts
│   ├── evently/
│   │   └── index.ts
│   ├── exa-card.ts
│   ├── exinswap/
│   │   └── index.ts
│   ├── extended/
│   │   └── index.ts
│   ├── farmcats-market/
│   │   └── index.ts
│   ├── fastjpeg/
│   │   └── index.ts
│   ├── fermi-dex/
│   │   └── index.ts
│   ├── ferra-clmm/
│   │   └── index.ts
│   ├── ferra-dlmm/
│   │   └── index.ts
│   ├── ferro/
│   │   └── index.ts
│   ├── figure-markets/
│   │   └── index.ts
│   ├── fjord-foundry-v1.ts
│   ├── fjord-foundry-v2.ts
│   ├── flamingo-finance/
│   │   └── index.ts
│   ├── flashnet/
│   │   └── index.ts
│   ├── flashtrade/
│   │   └── index.ts
│   ├── flexperp/
│   │   └── index.ts
│   ├── flowbot-perps.ts
│   ├── flowx-finance/
│   │   └── index.ts
│   ├── flowx-perps/
│   │   └── index.ts
│   ├── flowx-v3/
│   │   └── index.ts
│   ├── fluid-dex/
│   │   └── index.ts
│   ├── fluid-dex-lite/
│   │   └── index.ts
│   ├── four-meme/
│   │   └── index.ts
│   ├── foxify/
│   │   └── index.ts
│   ├── frax-swap/
│   │   └── index.ts
│   ├── friend-tech.ts
│   ├── fulcrom-finance-derivatives.ts
│   ├── fulcrom-finance-swap.ts
│   ├── fullsail-finance/
│   │   └── index.ts
│   ├── futarchy-amm/
│   │   └── index.ts
│   ├── fvm-exchange/
│   │   └── index.ts
│   ├── fwogfun/
│   │   └── index.ts
│   ├── fwx/
│   │   └── index.ts
│   ├── gains-network/
│   │   └── index.ts
│   ├── galaswap-v3.ts
│   ├── gambit/
│   │   └── index.ts
│   ├── garuda-defi/
│   │   └── index.ts
│   ├── gaspump/
│   │   └── index.ts
│   ├── gate-perps.ts
│   ├── gatefun/
│   │   └── index.ts
│   ├── genius-protocol/
│   │   └── index.ts
│   ├── glowswap/
│   │   └── index.ts
│   ├── glyph-exchange/
│   │   └── index.ts
│   ├── gmx-derivatives.ts
│   ├── gmx-sol.ts
│   ├── gmx-v2-gmx-v2-swap.ts
│   ├── gmx-v2-gmx-v2-trade.ts
│   ├── gnosispay.ts
│   ├── goosefx/
│   │   └── index.ts
│   ├── goosefx_v2/
│   │   └── index.ts
│   ├── grafun.ts
│   ├── grizzly-trade-derivatives-v2/
│   │   └── index.ts
│   ├── grvt-perps/
│   │   └── index.ts
│   ├── haedal/
│   │   └── index.ts
│   ├── hanji/
│   │   └── index.ts
│   ├── hashflow/
│   │   └── index.ts
│   ├── hashlock-markets/
│   │   ├── ethereum.ts
│   │   ├── index.ts
│   │   ├── shared.ts
│   │   └── sui.ts
│   ├── haven1-hswap/
│   │   └── index.ts
│   ├── hbarsuite-dex/
│   │   └── index.ts
│   ├── heaven-dex/
│   │   └── index.ts
│   ├── heliswap/
│   │   └── index.ts
│   ├── helix-helix-perp.ts
│   ├── helix-helix.ts
│   ├── helix-markets/
│   │   └── index.ts
│   ├── hibachi/
│   │   └── index.ts
│   ├── hitone/
│   │   └── index.ts
│   ├── hmx/
│   │   └── index.ts
│   ├── holdr/
│   │   └── index.ts
│   ├── holoworld/
│   │   └── index.ts
│   ├── honeypop-dex.ts
│   ├── horizondex/
│   │   └── index.ts
│   ├── hotstuff/
│   │   └── index.ts
│   ├── humanfi/
│   │   └── index.ts
│   ├── humidifi/
│   │   └── index.ts
│   ├── hummus/
│   │   └── index.ts
│   ├── hybra-v4.ts
│   ├── hydration-dex/
│   │   └── index.ts
│   ├── hyperion/
│   │   └── index.ts
│   ├── hyperliquid-perp/
│   │   └── index.ts
│   ├── hyperliquid-spot/
│   │   └── index.ts
│   ├── hyperpie-launchpad.ts
│   ├── hyperpie-v2-dex.ts
│   ├── hypersignals.ts
│   ├── hyperstitions/
│   │   └── index.ts
│   ├── hyperswap-v3/
│   │   └── index.ts
│   ├── hyperunit/
│   │   └── index.ts
│   ├── icpswap/
│   │   └── index.ts
│   ├── immortalx/
│   │   └── index.ts
│   ├── increment-protocol/
│   │   └── index.ts
│   ├── increment-swap/
│   │   └── index.ts
│   ├── infinityPools/
│   │   ├── index.ts
│   │   ├── quadHelper.ts
│   │   └── swapEventABI.ts
│   ├── initia-dex.ts
│   ├── injective-derivatives.ts
│   ├── injective-spot.ts
│   ├── integral/
│   │   └── index.ts
│   ├── intent-x/
│   │   └── index.ts
│   ├── interest-movement-curve/
│   │   └── index.ts
│   ├── interest-protocol/
│   │   └── index.ts
│   ├── interest-protocol-stable-swap/
│   │   └── index.ts
│   ├── invariant/
│   │   └── index.ts
│   ├── ipor/
│   │   └── index.ts
│   ├── iziswap/
│   │   └── index.ts
│   ├── javsphere/
│   │   └── index.ts
│   ├── jediswap/
│   │   └── index.ts
│   ├── jediswap-v2/
│   │   └── index.ts
│   ├── jellyverse/
│   │   └── index.ts
│   ├── jojo/
│   │   └── index.ts
│   ├── jup-ape/
│   │   └── index.ts
│   ├── jupiter-perpetual/
│   │   └── index.ts
│   ├── jupiter-prediction/
│   │   └── index.ts
│   ├── justbet/
│   │   ├── abis.ts
│   │   ├── constants.ts
│   │   ├── helpers.ts
│   │   └── index.ts
│   ├── k-bit/
│   │   └── index.ts
│   ├── kalshi.ts
│   ├── kanalabs-perp/
│   │   └── index.ts
│   ├── karura-swap/
│   │   └── index.ts
│   ├── kaspacom-dex/
│   │   └── index.ts
│   ├── kast-card.ts
│   ├── katana-perps.ts
│   ├── katana-v3/
│   │   └── index.ts
│   ├── kava-swap/
│   │   └── index.ts
│   ├── kensei/
│   │   └── index.ts
│   ├── kiloex/
│   │   └── index.ts
│   ├── kinetiq-markets.ts
│   ├── kinetix-v3/
│   │   └── index.ts
│   ├── kittenswap/
│   │   └── index.ts
│   ├── kittenswap-algebra/
│   │   └── index.ts
│   ├── kittenswap-cl/
│   │   └── index.ts
│   ├── kittypunch-stable.ts
│   ├── klayswap/
│   │   └── index.ts
│   ├── kodiak-v3.ts
│   ├── kokonut-swap/
│   │   └── index.ts
│   ├── kongswap/
│   │   └── index.ts
│   ├── kriya-clmm/
│   │   └── index.ts
│   ├── kriya-dex/
│   │   └── index.ts
│   ├── ktx-derivatives.ts
│   ├── ktx-swap.ts
│   ├── kuma-v1/
│   │   └── index.ts
│   ├── kuru-clob.ts
│   ├── kyan.ts
│   ├── kyex/
│   │   └── index.ts
│   ├── kyo-fi-v3.ts
│   ├── landbid.ts
│   ├── legion.ts
│   ├── levana/
│   │   ├── fetch.ts
│   │   └── index.ts
│   ├── level-finance-level-finance-derivative.ts
│   ├── level-finance-level-finance.ts
│   ├── leverup/
│   │   └── index.ts
│   ├── lexer-derivatives.ts
│   ├── lexer-swap.ts
│   ├── lighter-spot/
│   │   └── index.ts
│   ├── lighterv2/
│   │   └── index.ts
│   ├── limitless-exchange/
│   │   └── index.ts
│   ├── linehub-perps/
│   │   └── index.ts
│   ├── liquidcore.ts
│   ├── liquidswap/
│   │   └── index.ts
│   ├── lista-dex/
│   │   └── index.ts
│   ├── lithos/
│   │   └── index.ts
│   ├── lnexchange-perp/
│   │   └── index.ts
│   ├── lnexchange-spot/
│   │   └── index.ts
│   ├── lotto-run/
│   │   └── index.ts
│   ├── lotus-finance/
│   │   └── index.ts
│   ├── loxodrome-amm/
│   │   └── index.ts
│   ├── lumenswap/
│   │   └── index.ts
│   ├── luna-fun.ts
│   ├── lunarbase/
│   │   └── index.ts
│   ├── lyra/
│   │   └── index.ts
│   ├── macaron-xyz/
│   │   └── index.ts
│   ├── mach/
│   │   ├── deployments.ts
│   │   └── index.ts
│   ├── machinex-cl.ts
│   ├── machinex-legacy.ts
│   ├── magicsea-lb/
│   │   └── index.ts
│   ├── magma-finance/
│   │   └── index.ts
│   ├── mangrove/
│   │   └── index.ts
│   ├── manifest-trade/
│   │   └── index.ts
│   ├── mars-perp/
│   │   └── index.ts
│   ├── maverick/
│   │   ├── index.ts
│   │   └── maverick-v1.ts
│   ├── maverick-v2/
│   │   └── index.ts
│   ├── mcdex/
│   │   └── index.ts
│   ├── mdex/
│   │   └── index.ts
│   ├── megaton-finance/
│   │   └── index.ts
│   ├── mento/
│   │   └── index.ts
│   ├── mento-v3/
│   │   └── index.ts
│   ├── meridian-trade-derivatives.ts
│   ├── meridian-trade-swap.ts
│   ├── merkle-trade/
│   │   └── index.ts
│   ├── merlinswap/
│   │   └── index.ts
│   ├── meshswap/
│   │   └── index.ts
│   ├── metamask-card.ts
│   ├── metastable-musd/
│   │   └── index.ts
│   ├── metavault-derivatives-v2/
│   │   └── index.ts
│   ├── metavault_trade-metavault-derivative.ts
│   ├── metavault_trade-metavault_trade.ts
│   ├── meteora/
│   │   └── index.ts
│   ├── meteora-damm-v2/
│   │   └── index.ts
│   ├── meteora-dbc/
│   │   └── index.ts
│   ├── meteora-dlmm.ts
│   ├── metric/
│   │   └── index.ts
│   ├── metropolis-amm/
│   │   └── index.ts
│   ├── metropolis-dlmm/
│   │   └── index.ts
│   ├── minswap/
│   │   └── index.ts
│   ├── mintiq-market/
│   │   └── index.ts
│   ├── mira-ly/
│   │   └── index.ts
│   ├── miracletrade.ts
│   ├── mitte/
│   │   └── index.ts
│   ├── mobius-money/
│   │   └── index.ts
│   ├── momentum.ts
│   ├── monday-trade-perp/
│   │   └── index.ts
│   ├── moneyx-pro/
│   │   └── index.ts
│   ├── monster/
│   │   └── index.ts
│   ├── moon-swap/
│   │   └── index.ts
│   ├── mooniswap/
│   │   └── index.ts
│   ├── moonlander/
│   │   └── index.ts
│   ├── mosaic-amm/
│   │   └── index.ts
│   ├── mu-exchange/
│   │   └── index.ts
│   ├── muesliswap/
│   │   └── index.ts
│   ├── multiswap/
│   │   └── index.ts
│   ├── mummy-finance/
│   │   └── index.ts
│   ├── mux-protocol-perps.ts
│   ├── myswap/
│   │   └── index.ts
│   ├── myswap-cl/
│   │   └── index.ts
│   ├── myx-finance/
│   │   ├── helpers..ts
│   │   └── index.ts
│   ├── nabla/
│   │   └── index.ts
│   ├── nad-fun.ts
│   ├── nado-perp/
│   │   └── index.ts
│   ├── nado-spot/
│   │   └── index.ts
│   ├── napier/
│   │   └── index.ts
│   ├── narbet.ts
│   ├── narwhal-finance.ts
│   ├── native/
│   │   └── index.ts
│   ├── near-intents/
│   │   └── index.ts
│   ├── neony-perp/
│   │   └── index.ts
│   ├── neony-spot/
│   │   └── index.ts
│   ├── nest/
│   │   └── index.ts
│   ├── ninjablaze/
│   │   └── index.ts
│   ├── nlx-nlx-swap.ts
│   ├── nlx-nlx-trade.ts
│   ├── noah-swap/
│   │   └── index.ts
│   ├── nomiswap/
│   │   └── index.ts
│   ├── nostra-pools/
│   │   └── index.ts
│   ├── o1-exchange/
│   │   └── index.ts
│   ├── o2/
│   │   └── index.ts
│   ├── ocelex/
│   │   └── index.ts
│   ├── ociswap-basic.ts
│   ├── ociswap-precision.ts
│   ├── okie-launch.ts
│   ├── okie-stableswap.ts
│   ├── okieswap-v2.ts
│   ├── okieswap-v3.ts
│   ├── olab/
│   │   └── index.ts
│   ├── omni-exchange-flux/
│   │   └── index.ts
│   ├── omni-exchange-v2/
│   │   └── index.ts
│   ├── omnipair/
│   │   └── index.ts
│   ├── ondo-global-markets/
│   │   └── index.ts
│   ├── openleverage/
│   │   └── index.ts
│   ├── opinion/
│   │   └── index.ts
│   ├── optim-finance/
│   │   └── index.ts
│   ├── opx-finance/
│   │   └── index.ts
│   ├── oraidex/
│   │   └── index.ts
│   ├── oraidex-v3/
│   │   └── index.ts
│   ├── orbit-finance.ts
│   ├── orca/
│   │   └── index.ts
│   ├── orca-wavebreak.ts
│   ├── orderly-network-orderly-network-derivatives.ts
│   ├── orderly-network-orderly-network.ts
│   ├── orderly-perps-new.ts
│   ├── osmosis/
│   │   └── index.ts
│   ├── ostium/
│   │   └── index.ts
│   ├── ostrich/
│   │   └── index.ts
│   ├── oswap/
│   │   └── index.ts
│   ├── otomate.ts
│   ├── oxium/
│   │   ├── config.ts
│   │   ├── fetch.ts
│   │   └── index.ts
│   ├── pacaswap.ts
│   ├── pacifica/
│   │   └── index.ts
│   ├── pact/
│   │   └── index.ts
│   ├── paint-swap/
│   │   └── index.ts
│   ├── palmswap/
│   │   └── index.ts
│   ├── panacakeswap-perp/
│   │   └── index.ts
│   ├── pancakeswap-infinity.ts
│   ├── pancakeswap-prediction/
│   │   └── index.ts
│   ├── pancakeswap-v2.ts
│   ├── pancakeswap-v3.ts
│   ├── pandora-speed-trading/
│   │   └── index.ts
│   ├── pangea-swap/
│   │   └── index.ts
│   ├── pangolin-v3/
│   │   └── index.ts
│   ├── paradex/
│   │   └── index.ts
│   ├── paradex-spot/
│   │   └── index.ts
│   ├── paycash/
│   │   └── index.ts
│   ├── pear-protocol/
│   │   └── index.ts
│   ├── pegasys-v3/
│   │   └── index.ts
│   ├── pendle/
│   │   └── index.ts
│   ├── penumbra-dex.ts
│   ├── pepe-dex/
│   │   └── index.ts
│   ├── perennial-v2/
│   │   └── index.ts
│   ├── perpl/
│   │   └── index.ts
│   ├── pharaoh-v3-legacy.ts
│   ├── pharaoh-v3.ts
│   ├── pheasantswap/
│   │   └── index.ts
│   ├── phoenix/
│   │   └── index.ts
│   ├── phoenix-trade/
│   │   └── index.ts
│   ├── photon.ts
│   ├── pigeonhouse/
│   │   └── index.ts
│   ├── pika-protocol/
│   │   └── index.ts
│   ├── pika-protocol-v4/
│   │   └── index.ts
│   ├── pingu/
│   │   └── index.ts
│   ├── pinnako-derivatives.ts
│   ├── pinnako-swap.ts
│   ├── pinto/
│   │   └── index.ts
│   ├── piperx-v2/
│   │   └── index.ts
│   ├── piperx-v3/
│   │   └── index.ts
│   ├── pixelswap/
│   │   └── index.ts
│   ├── pixiechess/
│   │   └── index.ts
│   ├── planemo-trading.ts
│   ├── platypus/
│   │   └── index.ts
│   ├── plenty/
│   │   └── index.ts
│   ├── plunderswap/
│   │   └── index.ts
│   ├── polkadex/
│   │   └── index.ts
│   ├── polkaswap/
│   │   └── index.ts
│   ├── polymarket/
│   │   └── index.ts
│   ├── polymarket-us/
│   │   └── index.ts
│   ├── ponytaswap/
│   │   └── index.ts
│   ├── pool-party/
│   │   └── index.ts
│   ├── potatoswap-v3.ts
│   ├── potatoswap.ts
│   ├── predict-fun/
│   │   └── index.ts
│   ├── primex-finance/
│   │   ├── index.ts
│   │   └── utils.ts
│   ├── printr-protocol/
│   │   └── index.ts
│   ├── priority-trade/
│   │   └── index.ts
│   ├── privex/
│   │   └── index.ts
│   ├── probable.ts
│   ├── prophet-fun/
│   │   └── index.ts
│   ├── proton-dex/
│   │   └── index.ts
│   ├── pump-swap/
│   │   └── index.ts
│   ├── pumpfun.ts
│   ├── pumpspace-v2/
│   │   └── index.ts
│   ├── pumpspace-v3/
│   │   └── index.ts
│   ├── punk.coffee/
│   │   └── index.ts
│   ├── puppyfun/
│   │   └── index.ts
│   ├── quenta/
│   │   └── index.ts
│   ├── quickswap-hydra/
│   │   └── index.ts
│   ├── quickswap-liquidityHub.ts
│   ├── quickswap-perps/
│   │   └── index.ts
│   ├── quickswap-v2.ts
│   ├── quickswap-v3.ts
│   ├── quickswap-v4.ts
│   ├── quipuswap/
│   │   └── index.ts
│   ├── rabbitswap-v3/
│   │   └── index.ts
│   ├── rain-one/
│   │   └── index.ts
│   ├── raindex/
│   │   └── index.ts
│   ├── ramses-hl-cl.ts
│   ├── ramses-hl-legacy.ts
│   ├── ramsesx-arb-cl.ts
│   ├── ramsesx-arb-legacy.ts
│   ├── ramsesx-poly-cl.ts
│   ├── ramsesx-poly-legacy.ts
│   ├── rarible/
│   │   ├── helper.ts
│   │   └── index.ts
│   ├── rate-x/
│   │   └── index.ts
│   ├── raydium/
│   │   └── index.ts
│   ├── reactor-exchange/
│   │   └── index.ts
│   ├── ready-card.ts
│   ├── ref-finance/
│   │   └── index.ts
│   ├── renegade-fi/
│   │   └── index.ts
│   ├── reya-dex.ts
│   ├── rfx-rfx-swap.ts
│   ├── rfx-rfx-trade.ts
│   ├── rhea-cross-chain/
│   │   └── index.ts
│   ├── rho-protocol/
│   │   └── index.ts
│   ├── rho-x/
│   │   └── index.ts
│   ├── ring-dex.ts
│   ├── rise-launchpad.ts
│   ├── risex-perps/
│   │   └── index.ts
│   ├── rocket/
│   │   └── index.ts
│   ├── rollie-finance/
│   │   └── index.ts
│   ├── rollx/
│   │   └── index.ts
│   ├── rooster/
│   │   └── index.ts
│   ├── rubicon/
│   │   └── index.ts
│   ├── rush/
│   │   └── index.ts
│   ├── ryze/
│   │   └── index.ts
│   ├── saber/
│   │   └── index.ts
│   ├── saddle-finance/
│   │   └── index.ts
│   ├── sai-perps/
│   │   └── index.ts
│   ├── sailor-finance.ts
│   ├── sanctum/
│   │   └── index.ts
│   ├── sanctum-infinity/
│   │   └── index.ts
│   ├── sandglass/
│   │   └── index.ts
│   ├── saphyre-rfq/
│   │   └── index.ts
│   ├── saros/
│   │   └── index.ts
│   ├── saros-dlmm.ts
│   ├── satori/
│   │   └── index.ts
│   ├── saturnswap/
│   │   └── index.ts
│   ├── saucerswap/
│   │   └── index.ts
│   ├── saucerswap-v2/
│   │   └── index.ts
│   ├── secondswap/
│   │   └── index.ts
│   ├── sectorone-dlmm-v2/
│   │   └── index.ts
│   ├── seer/
│   │   └── index.ts
│   ├── seiyan-fun/
│   │   └── index.ts
│   ├── shadow-exchange.ts
│   ├── shadow-legacy.ts
│   ├── sharpe-dex/
│   │   └── index.ts
│   ├── shell-protocol/
│   │   ├── constants.ts
│   │   ├── helpers.ts
│   │   └── index.ts
│   ├── shiny/
│   │   └── index.ts
│   ├── shroomy-protocol/
│   │   └── index.ts
│   ├── silverswap/
│   │   └── index.ts
│   ├── simpledex/
│   │   └── index.ts
│   ├── sithswap/
│   │   └── index.ts
│   ├── skate-amm/
│   │   └── index.ts
│   ├── slingshot/
│   │   └── index.ts
│   ├── smardex-usdn/
│   │   └── index.ts
│   ├── smbswap-v2.ts
│   ├── sodex-perps/
│   │   └── index.ts
│   ├── sodex-spot/
│   │   └── index.ts
│   ├── solar-studios/
│   │   └── index.ts
│   ├── solayer-card.ts
│   ├── solfi-v2/
│   │   └── index.ts
│   ├── solidly-v3/
│   │   └── index.ts
│   ├── sologenic/
│   │   └── index.ts
│   ├── someswap/
│   │   └── index.ts
│   ├── somnex-perps.ts
│   ├── somnex-v3.ts
│   ├── somnex-xyz.ts
│   ├── somnia-exchange.ts
│   ├── sonic-market-orderbook/
│   │   └── index.ts
│   ├── sour/
│   │   └── index.ts
│   ├── spacedex-derivatives.ts
│   ├── spacedex-swap.ts
│   ├── spacewhale/
│   │   └── index.ts
│   ├── spark/
│   │   └── index.ts
│   ├── sparkdex-perps/
│   │   └── index.ts
│   ├── spartan/
│   │   └── index.ts
│   ├── spectra-v2.ts
│   ├── spectrum/
│   │   └── index.ts
│   ├── spicyswap/
│   │   └── index.ts
│   ├── spritz-card.ts
│   ├── squaretower.ts
│   ├── stabble/
│   │   └── index.ts
│   ├── stabble-clmm/
│   │   └── index.ts
│   ├── stabull/
│   │   └── index.ts
│   ├── standard-mode/
│   │   └── index.ts
│   ├── standard-spot/
│   │   └── index.ts
│   ├── standx/
│   │   └── index.ts
│   ├── starkdefi/
│   │   └── index.ts
│   ├── steamm.ts
│   ├── stellarx/
│   │   └── index.ts
│   ├── stellaswap-v4/
│   │   └── index.ts
│   ├── ston/
│   │   └── index.ts
│   ├── stormtrade/
│   │   └── index.ts
│   ├── storyhunt-v3.ts
│   ├── strike-finance/
│   │   └── index.ts
│   ├── sudofinance/
│   │   └── index.ts
│   ├── sudoswap-v2/
│   │   └── index.ts
│   ├── sundaeswap/
│   │   └── index.ts
│   ├── sunperp/
│   │   └── index.ts
│   ├── sunswap/
│   │   └── index.ts
│   ├── sunswap-v2/
│   │   └── index.ts
│   ├── sunswap-v3/
│   │   └── index.ts
│   ├── supernova-CL.ts
│   ├── supernova.ts
│   ├── surfswap-classic.ts
│   ├── surge-trade/
│   │   └── index.ts
│   ├── sushi-aptos/
│   │   └── index.ts
│   ├── sushiswap-trident.ts
│   ├── sushiswap-v3.ts
│   ├── swaap-v1.ts
│   ├── swaap-v2.ts
│   ├── swap-coffee/
│   │   └── index.ts
│   ├── swapbased-perps.ts
│   ├── swapbased-v2.ts
│   ├── swapbased-v3.ts
│   ├── swapline/
│   │   └── index.ts
│   ├── swapr-v3/
│   │   └── index.ts
│   ├── swaps-io/
│   │   └── index.ts
│   ├── swop/
│   │   └── index.ts
│   ├── sxbet/
│   │   └── index.ts
│   ├── symmetric/
│   │   └── index.ts
│   ├── symmio/
│   │   └── index.ts
│   ├── syncswap/
│   │   └── index.ts
│   ├── synfutures-v1/
│   │   └── index.ts
│   ├── synfutures-v2/
│   │   └── index.ts
│   ├── synfutures-v3/
│   │   └── index.ts
│   ├── synthetify/
│   │   └── index.ts
│   ├── synthetix/
│   │   └── index.ts
│   ├── synthetix-v3/
│   │   └── index.ts
│   ├── synthetix-v4/
│   │   └── index.ts
│   ├── taiko-swap.ts
│   ├── tangleswap/
│   │   └── index.ts
│   ├── tapp-exchange/
│   │   └── index.ts
│   ├── tea-fi.ts
│   ├── tealswap/
│   │   └── index.ts
│   ├── tearex/
│   │   └── index.ts
│   ├── teleswap/
│   │   └── index.ts
│   ├── tempo-fee-amm.ts
│   ├── tempo-stable-dex/
│   │   └── index.ts
│   ├── tessera/
│   │   └── index.ts
│   ├── testing-please-ignore-2/
│   │   └── index.ts
│   ├── thalaswap/
│   │   └── index.ts
│   ├── thalaswap-v2/
│   │   └── index.ts
│   ├── thalaswap-v3.ts
│   ├── thales/
│   │   ├── abis.ts
│   │   ├── config.ts
│   │   ├── eventArgs.ts
│   │   ├── index.ts
│   │   └── parsers.ts
│   ├── thaw.ts
│   ├── thirdfy.ts
│   ├── thorchain-dex.ts
│   ├── thorswap/
│   │   └── index.ts
│   ├── thorwallet/
│   │   └── index.ts
│   ├── tigris/
│   │   └── index.ts
│   ├── tinyman/
│   │   └── index.ts
│   ├── titan/
│   │   └── index.ts
│   ├── tlx-finance/
│   │   └── index.ts
│   ├── tokenlon-agg.ts
│   ├── tokenlon-dex.ts
│   ├── tonco/
│   │   └── index.ts
│   ├── tonpump/
│   │   └── index.ts
│   ├── topstrike/
│   │   └── index.ts
│   ├── torch/
│   │   └── index.ts
│   ├── toros/
│   │   └── index.ts
│   ├── trado/
│   │   └── index.ts
│   ├── trado-spot/
│   │   └── index.ts
│   ├── tradoor/
│   │   └── index.ts
│   ├── treadfi-perps.ts
│   ├── tristero/
│   │   └── index.ts
│   ├── truemarkets.ts
│   ├── ttswap/
│   │   └── index.ts
│   ├── turbolev/
│   │   └── index.ts
│   ├── turbos/
│   │   └── index.ts
│   ├── txflow-perps/
│   │   └── index.ts
│   ├── typus-perp/
│   │   └── index.ts
│   ├── umbra/
│   │   └── index.ts
│   ├── uniderp/
│   │   └── index.ts
│   ├── unidex-unidex-dexs-agg.ts
│   ├── unidex-unidex.ts
│   ├── uniswap-v1.ts
│   ├── uniswap-v2.ts
│   ├── uniswap-v3.ts
│   ├── uniswap-v4.ts
│   ├── updown/
│   │   └── index.ts
│   ├── upheaval-v3/
│   │   └── index.ts
│   ├── upscale/
│   │   └── index.ts
│   ├── urdex/
│   │   └── index.ts
│   ├── utyabswap/
│   │   └── index.ts
│   ├── valantis-stex/
│   │   └── index.ts
│   ├── valiant-trade/
│   │   └── index.ts
│   ├── vanilla-finance-perps/
│   │   └── index.ts
│   ├── vanswap/
│   │   └── index.ts
│   ├── vapordex-v1.ts
│   ├── vapordex-v2.ts
│   ├── variational-omni/
│   │   └── index.ts
│   ├── veax/
│   │   └── index.ts
│   ├── velar.ts
│   ├── velocore-v2/
│   │   └── index.ts
│   ├── velodrome-slipstream/
│   │   └── index.ts
│   ├── verus.ts
│   ├── vest/
│   │   └── index.ts
│   ├── vexchange/
│   │   └── index.ts
│   ├── vinunft/
│   │   └── index.ts
│   ├── vinuswap/
│   │   └── index.ts
│   ├── volmex/
│   │   └── index.ts
│   ├── volta-markets/
│   │   └── index.ts
│   ├── voltswap-v1.ts
│   ├── voltswap-v2.ts
│   ├── voodoo-trade-derivatives.ts
│   ├── voodoo-trade-swap.ts
│   ├── w-dex/
│   │   └── index.ts
│   ├── wasabi-prop-amm/
│   │   └── index.ts
│   ├── wavex-derivatives.ts
│   ├── wavex-swap.ts
│   ├── web3world/
│   │   └── index.ts
│   ├── wefi/
│   │   └── index.ts
│   ├── wemix.fi/
│   │   └── index.ts
│   ├── wingriders/
│   │   └── index.ts
│   ├── wombat-exchange/
│   │   └── index.ts
│   ├── woofi/
│   │   └── index.ts
│   ├── worldinc-perps/
│   │   ├── index.ts
│   │   └── worldinc.ts
│   ├── worldinc-spot/
│   │   └── index.ts
│   ├── worm-wtf/
│   │   └── index.ts
│   ├── wx.network/
│   │   └── index.ts
│   ├── x3x.ts
│   ├── x402/
│   │   ├── facilitators.ts
│   │   └── index.ts
│   ├── xei/
│   │   └── index.ts
│   ├── xena-finance/
│   │   └── index.ts
│   ├── xena-finance-derivative/
│   │   └── index.ts
│   ├── xexchange/
│   │   └── index.ts
│   ├── xfai/
│   │   └── index.ts
│   ├── xpress/
│   │   └── index.ts
│   ├── xrpl-dex/
│   │   └── index.ts
│   ├── y2k-v1.ts
│   ├── y2k-v2.ts
│   ├── yakafinance/
│   │   └── index.ts
│   ├── yakafinance-v3/
│   │   └── index.ts
│   ├── yei-swap.ts
│   ├── yfx-v3/
│   │   └── index.ts
│   ├── yfx-v4/
│   │   └── index.ts
│   ├── yield-basis.ts
│   ├── zeno/
│   │   └── index.ts
│   ├── zeta/
│   │   └── index.ts
│   ├── zilswap/
│   │   └── index.ts
│   ├── zkera-finance/
│   │   ├── index.ts
│   │   └── zkera.ts
│   ├── zkswap-stable/
│   │   └── index.ts
│   ├── zkswap-v3/
│   │   └── index.ts
│   ├── zo/
│   │   └── index.ts
│   ├── zora-sofi/
│   │   └── index.ts
│   ├── zyberswap-v2.ts
│   └── zyberswap-v3.ts
├── factory/
│   ├── alliumSolanaDex.ts
│   ├── blockscout.ts
│   ├── chainTxFees.ts
│   ├── compoundV2.ts
│   ├── curators.ts
│   ├── curve.ts
│   ├── deadAdapters.json
│   ├── duneSolanaDex.ts
│   ├── gmxV1.ts
│   ├── hyperliquid.ts
│   ├── joeLiquidityBook.ts
│   ├── nftVolume.ts
│   ├── normalizedVolume.ts
│   ├── orderly.ts
│   ├── polymarket.ts
│   ├── registry.ts
│   ├── saddle.ts
│   ├── solLst.ts
│   ├── subscan.ts
│   ├── symmio.ts
│   ├── uniSubgraph.ts
│   ├── uniV2.ts
│   └── uniV3.ts
├── fees/
│   ├── 0x0dex.ts
│   ├── 1776meme/
│   │   └── index.ts
│   ├── 1dex/
│   │   └── index.ts
│   ├── 3jane-lending.ts
│   ├── 40acres/
│   │   └── index.ts
│   ├── ArbitrumExchange-v2.ts
│   ├── ArbitrumExchange-v3.ts
│   ├── GUIDELINES.md
│   ├── LeadFi-leadBTC/
│   │   └── index.ts
│   ├── LiquidOps/
│   │   └── index.ts
│   ├── SmarDex/
│   │   └── index.ts
│   ├── aark/
│   │   └── index.ts
│   ├── aave-labs.ts
│   ├── aave-v3.ts
│   ├── aave-v4.ts
│   ├── aavechan.ts
│   ├── abracadabra.ts
│   ├── acred/
│   │   └── index.ts
│   ├── across.ts
│   ├── aden/
│   │   └── index.ts
│   ├── aegis-jusd/
│   │   └── index.ts
│   ├── aegis-yusd/
│   │   └── index.ts
│   ├── aera-v2/
│   │   └── index.ts
│   ├── aera-v3.ts
│   ├── aethir/
│   │   └── index.ts
│   ├── affluent/
│   │   └── index.ts
│   ├── afiprotocol/
│   │   └── index.ts
│   ├── aftermath-fi-amm.ts
│   ├── aimbot.ts
│   ├── airnft/
│   │   └── index.ts
│   ├── airswap.ts
│   ├── ajna-v1/
│   │   └── index.ts
│   ├── ajna-v2/
│   │   └── index.ts
│   ├── akash-network/
│   │   └── index.ts
│   ├── aktionariat/
│   │   └── index.ts
│   ├── alchemix.ts
│   ├── algorand.ts
│   ├── alkimi/
│   │   └── index.ts
│   ├── allbridge-classic.ts
│   ├── allbridge-core.ts
│   ├── allox/
│   │   └── index.ts
│   ├── almanak/
│   │   └── index.ts
│   ├── alpha-arcade/
│   │   └── index.ts
│   ├── alphafi/
│   │   └── index.ts
│   ├── alphix.ts
│   ├── amnis-finance/
│   │   └── index.ts
│   ├── amped/
│   │   └── index.ts
│   ├── amphor/
│   │   └── index.ts
│   ├── angle/
│   │   ├── index.ts
│   │   └── types.ts
│   ├── ankr-lst.ts
│   ├── anoncoin/
│   │   └── index.ts
│   ├── antfun.ts
│   ├── aori/
│   │   └── index.ts
│   ├── apebot/
│   │   └── index.ts
│   ├── apestore/
│   │   └── index.ts
│   ├── apex-omni.ts
│   ├── apexdefi/
│   │   ├── burst.ts
│   │   ├── dex.ts
│   │   └── index.ts
│   ├── apollox/
│   │   └── index.ts
│   ├── apricot/
│   │   └── index.ts
│   ├── apriori.ts
│   ├── aptos.ts
│   ├── apyx-protocol.ts
│   ├── aquabank.ts
│   ├── arbitrum-nova.ts
│   ├── arbitrum-timeboost/
│   │   └── index.ts
│   ├── aries-markets/
│   │   └── index.ts
│   ├── arkada/
│   │   └── index.ts
│   ├── arrakis-v2/
│   │   └── index.ts
│   ├── arweave/
│   │   └── index.ts
│   ├── ash-perp/
│   │   └── index.ts
│   ├── aspecta.ts
│   ├── assetchain.ts
│   ├── aster-spot/
│   │   └── index.ts
│   ├── asymmetry-usdaf.ts
│   ├── auki/
│   │   └── index.ts
│   ├── aur/
│   │   └── index.ts
│   ├── aura.ts
│   ├── autofinance/
│   │   └── index.ts
│   ├── autopilot/
│   │   └── index.ts
│   ├── avalanche.ts
│   ├── avalon-usda.ts
│   ├── avalon_old/
│   │   └── index.ts
│   ├── avant-avbtc/
│   │   └── index.ts
│   ├── avant-aveth/
│   │   └── index.ts
│   ├── avant-avusd/
│   │   └── index.ts
│   ├── avantis/
│   │   └── index.ts
│   ├── aveai/
│   │   └── index.ts
│   ├── aveforge/
│   │   └── index.ts
│   ├── axelar/
│   │   └── index.ts
│   ├── axie-infinity/
│   │   └── index.ts
│   ├── axiom.ts
│   ├── azuro/
│   │   └── index.ts
│   ├── b14g/
│   │   └── index.ts
│   ├── b402.ts
│   ├── babydoge-bridge/
│   │   └── index.ts
│   ├── babylon-genesis/
│   │   └── index.ts
│   ├── backedfi.ts
│   ├── badger-dao/
│   │   └── index.ts
│   ├── baker-dao/
│   │   └── index.ts
│   ├── balancer-v1.ts
│   ├── banana-gun-trading.ts
│   ├── bancor-v2.ts
│   ├── bankr.ts
│   ├── basecamp/
│   │   └── index.ts
│   ├── basepaint.ts
│   ├── baseswap-v2.ts
│   ├── baseswap-v3.ts
│   ├── basisos/
│   │   └── index.ts
│   ├── bcraft.ts
│   ├── beam-dex-v3.ts
│   ├── beamable-network/
│   │   └── index.ts
│   ├── beamex.ts
│   ├── bedrock-unibtc/
│   │   └── index.ts
│   ├── bedrock-unieth/
│   │   └── index.ts
│   ├── bedrock-uniiotx/
│   │   └── index.ts
│   ├── beefy/
│   │   └── index.ts
│   ├── beets-staked-sonic/
│   │   └── index.ts
│   ├── beezie.ts
│   ├── believe/
│   │   └── index.ts
│   ├── bellumexchange.ts
│   ├── bend/
│   │   └── index.ts
│   ├── benddao-lending-v1.ts
│   ├── benddao-lending-v2.ts
│   ├── benqi-staked-avax.ts
│   ├── beraborrow/
│   │   └── index.ts
│   ├── berachain-bribes/
│   │   └── index.ts
│   ├── beradrome/
│   │   └── index.ts
│   ├── betmode.ts
│   ├── betswirl/
│   │   └── index.ts
│   ├── bifrost-chain.ts
│   ├── bifrost-liquid-staking/
│   │   └── index.ts
│   ├── bim/
│   │   └── index.ts
│   ├── binance-alpha.ts
│   ├── binance-staked-eth.ts
│   ├── bitcoin-bridge/
│   │   └── index.ts
│   ├── bitcoin.ts
│   ├── bitfi-basis.ts
│   ├── bitfi-btc.ts
│   ├── bitflow-fi.ts
│   ├── bitlayer/
│   │   └── index.ts
│   ├── bitlayer-ybtc-family/
│   │   └── index.ts
│   ├── bitway-earn.ts
│   ├── blastapi.ts
│   ├── blazingbot.ts
│   ├── blend-backstop-v2/
│   │   └── index.ts
│   ├── blend-pools/
│   │   └── index.ts
│   ├── blend-pools-v2/
│   │   └── index.ts
│   ├── blex/
│   │   └── index.ts
│   ├── blockchain-capital/
│   │   └── index.ts
│   ├── blocxroute.ts
│   ├── bloom.ts
│   ├── bluefin-alphalend.ts
│   ├── bluefin-amm.ts
│   ├── bluefin-pro.ts
│   ├── bluefin.ts
│   ├── bluemove/
│   │   └── index.ts
│   ├── blur/
│   │   └── index.ts
│   ├── bmx-freestyle.ts
│   ├── bmx.ts
│   ├── bob.ts
│   ├── bodega-market/
│   │   └── index.ts
│   ├── bonk-bot/
│   │   └── index.ts
│   ├── bonk-staked-sol/
│   │   └── index.ts
│   ├── bonzo/
│   │   └── index.ts
│   ├── boop-fun/
│   │   └── index.ts
│   ├── boson/
│   │   └── index.ts
│   ├── botanix-stBTC.ts
│   ├── botanix.ts
│   ├── botfalcon.ts
│   ├── bounce-tech.ts
│   ├── bouncebit-cedefi/
│   │   └── index.ts
│   ├── bracket-lst/
│   │   └── index.ts
│   ├── bracket-vaults/
│   │   └── index.ts
│   ├── bsc.ts
│   ├── bucket-protocol/
│   │   └── index.ts
│   ├── bucket-protocol-v2/
│   │   └── index.ts
│   ├── buffer/
│   │   └── index.ts
│   ├── bulbaswap-v2.ts
│   ├── bulbaswap-v3.ts
│   ├── bullx.ts
│   ├── bungee-bridge.ts
│   ├── bungee.ts
│   ├── cakepie.ts
│   ├── calculus.ts
│   ├── canton.ts
│   ├── cap/
│   │   ├── config.ts
│   │   ├── helpers.ts
│   │   └── index.ts
│   ├── cap-finance-v4.ts
│   ├── cardano.ts
│   ├── cashmere/
│   │   └── index.ts
│   ├── catex/
│   │   └── index.ts
│   ├── catfee/
│   │   └── index.ts
│   ├── cattos.ts
│   ├── caviar-tangible.ts
│   ├── caviarnine-lsu-pool.ts
│   ├── caviarnine-shape-liquidity.ts
│   ├── cbbtc/
│   │   └── index.ts
│   ├── cbeth/
│   │   └── index.ts
│   ├── cctp/
│   │   └── index.ts
│   ├── celestia.ts
│   ├── cellula/
│   │   └── index.ts
│   ├── centrifuge/
│   │   └── index.ts
│   ├── cetus/
│   │   └── index.ts
│   ├── cetus-dlmm/
│   │   └── index.ts
│   ├── chainflip/
│   │   └── index.ts
│   ├── chainlink/
│   │   └── index.ts
│   ├── chainlink-ccip.ts
│   ├── chainlink-keepers.ts
│   ├── chainlink-requests.ts
│   ├── chainlink-vrf-v1.ts
│   ├── chainlink-vrf-v2.ts
│   ├── charm-fi-vaults-2/
│   │   └── index.ts
│   ├── chattershield/
│   │   └── index.ts
│   ├── cheapgm.ts
│   ├── chedda-finance/
│   │   └── index.ts
│   ├── cheesepad/
│   │   └── index.ts
│   ├── chopcorp/
│   │   └── index.ts
│   ├── chutes-ai.ts
│   ├── cian-yieldlayer/
│   │   └── index.ts
│   ├── circle.ts
│   ├── circuitdao.ts
│   ├── clanker.ts
│   ├── clawdstrategy.ts
│   ├── clearpool/
│   │   └── index.ts
│   ├── clearpool-rwa/
│   │   └── index.ts
│   ├── cleopatra-exchange.ts
│   ├── clever.ts
│   ├── clusters.ts
│   ├── coal-works/
│   │   └── index.ts
│   ├── cobaltx.ts
│   ├── coinbase-commerce.ts
│   ├── coinbase-wallet.ts
│   ├── collector-crypt/
│   │   └── index.ts
│   ├── collex.ts
│   ├── colony/
│   │   ├── airdrops.ts
│   │   ├── cai.ts
│   │   ├── dex.ts
│   │   ├── earlystage.ts
│   │   ├── index.ts
│   │   ├── masterChef.ts
│   │   ├── staking.ts
│   │   └── validatorProgram.ts
│   ├── colorpool.ts
│   ├── compound-v3.ts
│   ├── compound.ts
│   ├── concentrator.ts
│   ├── concrete/
│   │   └── index.ts
│   ├── contango/
│   │   └── index.ts
│   ├── convex.ts
│   ├── cooler-loans.ts
│   ├── core-markets/
│   │   └── index.ts
│   ├── corex/
│   │   └── index.ts
│   ├── cosmoshub/
│   │   └── index.ts
│   ├── courtyard/
│   │   └── index.ts
│   ├── covo-finance.ts
│   ├── covo-v2.ts
│   ├── cow-protocol.ts
│   ├── creator-bid.ts
│   ├── crv-usd.ts
│   ├── cryptex-v2.ts
│   ├── crypto-com-lst.ts
│   ├── crystal-terminal/
│   │   └── index.ts
│   ├── csc.ts
│   ├── current/
│   │   └── index.ts
│   ├── curvance.ts
│   ├── curve.ts
│   ├── cvex/
│   │   └── index.ts
│   ├── cyberperp.ts
│   ├── czt.ts
│   ├── d2finance/
│   │   └── index.ts
│   ├── danogo/
│   │   ├── index.ts
│   │   └── types.ts
│   ├── dappos-intentEx.ts
│   ├── debank-cloud.ts
│   ├── dedust/
│   │   └── index.ts
│   ├── deepbook-v3/
│   │   └── index.ts
│   ├── defi-saver.ts
│   ├── definitive.ts
│   ├── defiplaza/
│   │   └── index.ts
│   ├── defituna-amm/
│   │   └── index.ts
│   ├── defituna-liquidity/
│   │   └── index.ts
│   ├── degen-launchpad.ts
│   ├── deltadefi/
│   │   └── index.ts
│   ├── desk/
│   │   └── index.ts
│   ├── dexfi/
│   │   └── index.ts
│   ├── dexhunter/
│   │   └── index.ts
│   ├── dexscreener.ts
│   ├── dexter/
│   │   └── index.ts
│   ├── dextools.ts
│   ├── dextoro/
│   │   └── index.ts
│   ├── dhedge/
│   │   └── index.ts
│   ├── digift/
│   │   └── index.ts
│   ├── dinero-pxeth/
│   │   └── index.ts
│   ├── dln/
│   │   └── index.ts
│   ├── dodo-fees.ts
│   ├── doge.ts
│   ├── dogechain.ts
│   ├── dolomite/
│   │   └── index.ts
│   ├── donut/
│   │   └── index.ts
│   ├── doppler-finance/
│   │   └── index.ts
│   ├── doublezero/
│   │   └── index.ts
│   ├── dragonswap-v2.ts
│   ├── dragonswap-v3.ts
│   ├── dreaming.ts
│   ├── dsx/
│   │   └── index.ts
│   ├── duck-chain.ts
│   ├── dune-supply.ts
│   ├── dydx-v4/
│   │   └── index.ts
│   ├── e3.ts
│   ├── easya-kickstart/
│   │   └── index.ts
│   ├── echelon.ts
│   ├── echo/
│   │   └── index.ts
│   ├── echo-lending/
│   │   └── index.ts
│   ├── echo-lsd/
│   │   └── index.ts
│   ├── echo-strategy/
│   │   └── index.ts
│   ├── edebase.ts
│   ├── edgex/
│   │   └── index.ts
│   ├── eesee.ts
│   ├── eggs-finance/
│   │   └── index.ts
│   ├── eigenlayer.ts
│   ├── element/
│   │   └── index.ts
│   ├── ember-protocol.ts
│   ├── emdx.ts
│   ├── emojicoin.ts
│   ├── emporium/
│   │   └── index.ts
│   ├── ens.ts
│   ├── enzyme/
│   │   └── index.ts
│   ├── equilibria.ts
│   ├── equity/
│   │   └── index.ts
│   ├── erc-burner/
│   │   └── index.ts
│   ├── erinaceus/
│   │   └── index.ts
│   ├── ethena.ts
│   ├── ether-fi/
│   │   └── index.ts
│   ├── ethereum/
│   │   └── index.ts
│   ├── etherfi-cash-cards/
│   │   └── index.ts
│   ├── etherfi-cash-collateral-management/
│   │   └── index.ts
│   ├── ethervista.ts
│   ├── euler/
│   │   ├── config.ts
│   │   └── index.ts
│   ├── eva/
│   │   └── index.ts
│   ├── exponent/
│   │   └── index.ts
│   ├── extended.ts
│   ├── extra/
│   │   └── index.ts
│   ├── factor/
│   │   └── index.ts
│   ├── faith/
│   │   └── index.ts
│   ├── falcon-finance/
│   │   └── index.ts
│   ├── fantasy-top/
│   │   └── index.ts
│   ├── farcaster.ts
│   ├── fastjpeg/
│   │   └── index.ts
│   ├── fastlane/
│   │   └── index.ts
│   ├── fathom-cdp.ts
│   ├── felix-usdhl/
│   │   └── index.ts
│   ├── ferro.ts
│   ├── fidelity-crypto-fund/
│   │   └── index.ts
│   ├── fidelity-digital-interest/
│   │   └── index.ts
│   ├── filecoin.ts
│   ├── finder-bot/
│   │   └── index.ts
│   ├── fira.ts
│   ├── first-crypto-bank/
│   │   └── index.ts
│   ├── fjord-foundry-v1.ts
│   ├── fjord-foundry-v2.ts
│   ├── flarebank/
│   │   └── index.ts
│   ├── flashbot.ts
│   ├── flashtrade.ts
│   ├── flaunch.ts
│   ├── flexperp.ts
│   ├── flip/
│   │   └── index.ts
│   ├── flock/
│   │   └── index.ts
│   ├── flow/
│   │   └── index.ts
│   ├── flowx-finance/
│   │   └── index.ts
│   ├── flowx-v3/
│   │   └── index.ts
│   ├── fluence/
│   │   └── index.ts
│   ├── fluid/
│   │   ├── config.ts
│   │   ├── fees.ts
│   │   ├── index.ts
│   │   └── revenue.ts
│   ├── fluid-lite/
│   │   └── index.ts
│   ├── fluidtokens/
│   │   └── index.ts
│   ├── fluxbeam.ts
│   ├── fly-trade/
│   │   └── index.ts
│   ├── flying-tulip-ftusd.ts
│   ├── flying-tulip-lend.ts
│   ├── flying-tulip.ts
│   ├── fomo/
│   │   └── index.ts
│   ├── foom-cash/
│   │   └── index.ts
│   ├── footballdotfun/
│   │   └── index.ts
│   ├── foundation.ts
│   ├── four-meme.ts
│   ├── fragment/
│   │   └── index.ts
│   ├── fragmetric/
│   │   └── index.ts
│   ├── frankencoin/
│   │   └── index.ts
│   ├── franklin-templeton/
│   │   └── index.ts
│   ├── frax-amo.ts
│   ├── frax-ether.ts
│   ├── frax-fpi.ts
│   ├── frax-swap.ts
│   ├── fraxlend/
│   │   └── index.ts
│   ├── frenflow.ts
│   ├── friend-tech.ts
│   ├── fuel-ignition.ts
│   ├── fulcrom-finance.ts
│   ├── fullsail-finance/
│   │   └── index.ts
│   ├── furucombo/
│   │   └── index.ts
│   ├── futarchy-amm/
│   │   └── index.ts
│   ├── futureswap.ts
│   ├── fvm-exchange.ts
│   ├── fwx/
│   │   └── index.ts
│   ├── fx-protocol.ts
│   ├── g8keep.ts
│   ├── gacha/
│   │   └── index.ts
│   ├── gaib/
│   │   └── index.ts
│   ├── gains-network.ts
│   ├── gambit.ts
│   ├── gameclub.ts
│   ├── gamma.ts
│   ├── garden/
│   │   └── index.ts
│   ├── garuda-staking.ts
│   ├── gaspump/
│   │   └── index.ts
│   ├── gate-btc/
│   │   └── index.ts
│   ├── gate-perps.ts
│   ├── gauntlet.ts
│   ├── gearbox/
│   │   ├── configs.ts
│   │   └── index.ts
│   ├── geckoterminal.ts
│   ├── genius-protocol/
│   │   └── index.ts
│   ├── geodnet.ts
│   ├── get-protocol.ts
│   ├── getHemiNames/
│   │   └── index.ts
│   ├── gitcoin-passport/
│   │   └── index.ts
│   ├── giza/
│   │   └── index.ts
│   ├── gmgnai.ts
│   ├── gmx-sol.ts
│   ├── gmx-v2/
│   │   └── index.ts
│   ├── gmx.ts
│   ├── gnd-protocol.ts
│   ├── goat-protocol/
│   │   └── index.ts
│   ├── goblin/
│   │   └── index.ts
│   ├── godl/
│   │   └── index.ts
│   ├── goku-money/
│   │   └── index.ts
│   ├── goldfinch.ts
│   ├── gondi-v3/
│   │   └── index.ts
│   ├── goplus-locker.ts
│   ├── goplus.ts
│   ├── graphite-protocol/
│   │   └── index.ts
│   ├── graveyard-protocol/
│   │   └── index.ts
│   ├── gravity/
│   │   └── index.ts
│   ├── grayscale/
│   │   └── index.ts
│   ├── grelfswap/
│   │   └── index.ts
│   ├── grizzly-trade-derivatives-v2.ts
│   ├── grove/
│   │   └── index.ts
│   ├── gt3.ts
│   ├── gyroscope/
│   │   └── index.ts
│   ├── haedal/
│   │   └── index.ts
│   ├── haedal-protocol/
│   │   └── index.ts
│   ├── haedal-vault/
│   │   └── index.ts
│   ├── haiku/
│   │   └── index.ts
│   ├── harmonic.ts
│   ├── hashnote-usyc/
│   │   └── index.ts
│   ├── hashpaylink.ts
│   ├── hastra/
│   │   └── index.ts
│   ├── haven1-hswap/
│   │   └── index.ts
│   ├── hawkfi.ts
│   ├── haystack/
│   │   └── index.ts
│   ├── heaven-dex/
│   │   └── index.ts
│   ├── hedera.ts
│   ├── hedgey.ts
│   ├── hegic.ts
│   ├── helio.ts
│   ├── helium/
│   │   └── index.ts
│   ├── helix-helix-perp.ts
│   ├── helix-helix.ts
│   ├── hercules-v2.ts
│   ├── hercules-v3.ts
│   ├── hermes-v2/
│   │   └── index.ts
│   ├── hfun.ts
│   ├── hikari.ts
│   ├── hipo/
│   │   └── index.ts
│   ├── hivemapper/
│   │   └── index.ts
│   ├── hlscope/
│   │   └── index.ts
│   ├── holdstation-defutures.ts
│   ├── honeyplay-amm/
│   │   └── index.ts
│   ├── honeyplay-liquid-staking/
│   │   └── index.ts
│   ├── honeyplay-marketplace/
│   │   └── index.ts
│   ├── hono.ts
│   ├── hop-protocol.ts
│   ├── hopr/
│   │   └── index.ts
│   ├── houdini-swap.ts
│   ├── human-id/
│   │   └── index.ts
│   ├── humidifi.ts
│   ├── hydradx.ts
│   ├── hydrex/
│   │   └── index.ts
│   ├── hydro-inflow/
│   │   └── index.ts
│   ├── hylo-lst.ts
│   ├── hylo-protocol/
│   │   └── index.ts
│   ├── hyperbeat/
│   │   └── index.ts
│   ├── hyperbeat-lst/
│   │   └── index.ts
│   ├── hypercat.ts
│   ├── hyperevm.ts
│   ├── hyperlane.ts
│   ├── hyperlend-isolated.ts
│   ├── hyperliquid-hlp.ts
│   ├── hyperswap-terminal.ts
│   ├── hypertek/
│   │   └── index.ts
│   ├── hyperunit/
│   │   └── index.ts
│   ├── hyperwave/
│   │   ├── hwhlp.ts
│   │   ├── hwhype.ts
│   │   └── index.ts
│   ├── hypurrfi-isolated/
│   │   ├── abi.json
│   │   └── index.ts
│   ├── icp.ts
│   ├── idle/
│   │   └── index.ts
│   ├── illuvium.ts
│   ├── immortalx/
│   │   └── index.ts
│   ├── imx-seaport/
│   │   ├── index.ts
│   │   └── seaport.ts
│   ├── index-coop/
│   │   └── index.ts
│   ├── indigo/
│   │   └── index.ts
│   ├── infinex-swap.ts
│   ├── infinifi/
│   │   └── index.ts
│   ├── infinite/
│   │   └── index.ts
│   ├── infinityname/
│   │   └── index.ts
│   ├── infrared-finance.ts
│   ├── injective.ts
│   ├── ink.ts
│   ├── instadapp/
│   │   └── index.ts
│   ├── interface-app.ts
│   ├── inverse-finance/
│   │   └── index.ts
│   ├── iotex/
│   │   └── index.ts
│   ├── ipor-protocol/
│   │   └── index.ts
│   ├── ironbank/
│   │   └── index.ts
│   ├── ivx/
│   │   └── index.ts
│   ├── jade/
│   │   └── index.ts
│   ├── javsphere/
│   │   └── index.ts
│   ├── jeton/
│   │   └── index.ts
│   ├── jito/
│   │   └── index.ts
│   ├── jito-mev-tips/
│   │   └── index.ts
│   ├── jito-staked-sol/
│   │   └── index.ts
│   ├── jojo/
│   │   └── index.ts
│   ├── jpg-store/
│   │   └── index.ts
│   ├── juice-finance/
│   │   └── index.ts
│   ├── juicebox/
│   │   └── index.ts
│   ├── jumper-exchange/
│   │   └── index.ts
│   ├── jup-ape.ts
│   ├── jup-studio/
│   │   └── index.ts
│   ├── jupiter-dca.ts
│   ├── jupiter-lend/
│   │   └── index.ts
│   ├── jupiter-limit.ts
│   ├── jupiter-perpetual/
│   │   └── index.ts
│   ├── jupiter-staked-sol/
│   │   └── index.ts
│   ├── jupiter.ts
│   ├── justbet/
│   │   ├── constants.ts
│   │   └── index.ts
│   ├── justlend.ts
│   ├── k-bit/
│   │   └── index.ts
│   ├── kaching/
│   │   └── index.ts
│   ├── kaia/
│   │   └── index.ts
│   ├── kaio/
│   │   └── index.ts
│   ├── kairos/
│   │   └── index.ts
│   ├── kamino-lending/
│   │   └── index.ts
│   ├── kamino-liquidity/
│   │   └── index.ts
│   ├── kanalabs-perp/
│   │   └── index.ts
│   ├── kasu.ts
│   ├── keller-cl/
│   │   └── index.ts
│   ├── kelp.ts
│   ├── kensei.ts
│   ├── keom.ts
│   ├── kerberos/
│   │   ├── index.ts
│   │   └── routers.ts
│   ├── kgen.ts
│   ├── kiloex/
│   │   └── index.ts
│   ├── kinetic.ts
│   ├── kinetiq-staked-hype/
│   │   └── index.ts
│   ├── kinetix-v3/
│   │   └── index.ts
│   ├── kintsu.ts
│   ├── klaytn.ts
│   ├── kleros.ts
│   ├── kofi-finance/
│   │   └── index.ts
│   ├── kpk.ts
│   ├── kreo.ts
│   ├── kromatika.ts
│   ├── kumbaya/
│   │   └── index.ts
│   ├── kyan.ts
│   ├── kyberswap-aggregator.ts
│   ├── kyros/
│   │   └── index.ts
│   ├── lab-terminal.ts
│   ├── lagoon/
│   │   ├── config.ts
│   │   └── index.ts
│   ├── lamboo.ts
│   ├── launch-on-bags/
│   │   └── index.ts
│   ├── launchlab/
│   │   └── index.ts
│   ├── lavarage.ts
│   ├── layer3/
│   │   └── index.ts
│   ├── layerzero.ts
│   ├── layerzerov1.ts
│   ├── lazy-summer-protocol/
│   │   └── index.ts
│   ├── lens-protocol.ts
│   ├── letsbonk/
│   │   └── index.ts
│   ├── level-finance.ts
│   ├── level.ts
│   ├── levvy-fi/
│   │   └── index.ts
│   ├── levvy-fi-tokens/
│   │   └── index.ts
│   ├── lexer/
│   │   └── index.ts
│   ├── lido.ts
│   ├── lifi/
│   │   └── index.ts
│   ├── lighterv2/
│   │   └── index.ts
│   ├── lighterv2-spot/
│   │   └── index.ts
│   ├── linehub-perps/
│   │   └── index.ts
│   ├── liquid-bolt.ts
│   ├── liquid-collective/
│   │   └── index.ts
│   ├── liquid-protocol/
│   │   └── index.ts
│   ├── liquid-ron/
│   │   └── index.ts
│   ├── liquidity-slicing/
│   │   └── index.ts
│   ├── liquidlaunch/
│   │   └── index.ts
│   ├── liquis.ts
│   ├── liquity-v2.ts
│   ├── lista-dex.ts
│   ├── lista-lending/
│   │   └── index.ts
│   ├── lista-lisusd/
│   │   └── index.ts
│   ├── lista-rwa/
│   │   └── index.ts
│   ├── lista-slisbnb/
│   │   └── index.ts
│   ├── litecoin.ts
│   ├── livepeer/
│   │   └── index.ts
│   ├── llamalend-curve.ts
│   ├── llamalend.ts
│   ├── lnexchange-perp.ts
│   ├── lobbyfi.ts
│   ├── lombard-lbtc/
│   │   └── index.ts
│   ├── lombard-vault/
│   │   └── index.ts
│   ├── looksrare.ts
│   ├── looped-hype/
│   │   └── index.ts
│   ├── loopscale/
│   │   └── index.ts
│   ├── looter.ts
│   ├── lorenzo-susd1/
│   │   └── index.ts
│   ├── luna-fun.ts
│   ├── lybra-finance.ts
│   ├── lybra-v2.ts
│   ├── lynex.ts
│   ├── lyra-v2-options.ts
│   ├── lyra-v2.ts
│   ├── lyra.ts
│   ├── m0.ts
│   ├── macaron-bid.ts
│   ├── maestro.ts
│   ├── magnum-trading-bot/
│   │   └── index.ts
│   ├── magpie.ts
│   ├── maia-dao/
│   │   └── index.ts
│   ├── mainstreet/
│   │   └── index.ts
│   ├── makenow-meme.ts
│   ├── makerdao.ts
│   ├── makina/
│   │   └── index.ts
│   ├── mamo.ts
│   ├── manifold.ts
│   ├── manta.ts
│   ├── mantle-restaking/
│   │   └── index.ts
│   ├── maple-finance.ts
│   ├── margin-zero.ts
│   ├── marinade-liquid-staking/
│   │   └── index.ts
│   ├── marinade-native/
│   │   └── index.ts
│   ├── marinade-select/
│   │   └── index.ts
│   ├── markit.ts
│   ├── marquee/
│   │   └── index.ts
│   ├── matcha-xyz.ts
│   ├── maverick.ts
│   ├── maxapy/
│   │   └── index.ts
│   ├── maxbid/
│   │   └── index.ts
│   ├── mayan.ts
│   ├── megamine/
│   │   └── index.ts
│   ├── mellow-lrt.ts
│   ├── memecooking/
│   │   └── index.ts
│   ├── memejob/
│   │   └── index.ts
│   ├── mememarket/
│   │   └── index.ts
│   ├── meridian-amm.ts
│   ├── meridian-trade.ts
│   ├── merkle-trade.ts
│   ├── meso-finance.ts
│   ├── meta-pool-eth/
│   │   └── index.ts
│   ├── metalex/
│   │   └── index.ts
│   ├── metamask-musd/
│   │   └── index.ts
│   ├── metamask.ts
│   ├── metaplex.ts
│   ├── metavault-derivatives-v2/
│   │   └── index.ts
│   ├── metavault-v3/
│   │   └── index.ts
│   ├── metavault.trade/
│   │   └── index.ts
│   ├── meth-protocol.ts
│   ├── metronome-synth/
│   │   └── index.ts
│   ├── mevx.ts
│   ├── mi4/
│   │   └── index.ts
│   ├── midas-rwa/
│   │   └── index.ts
│   ├── migrate-fun/
│   │   └── index.ts
│   ├── mimboku-aggregator.ts
│   ├── minebean.ts
│   ├── minebtc.ts
│   ├── mineloot.ts
│   ├── minswap/
│   │   └── index.ts
│   ├── minswap-aggregator/
│   │   └── index.ts
│   ├── mint.ts
│   ├── mintpark/
│   │   └── index.ts
│   ├── mixoor/
│   │   └── index.ts
│   ├── moar.ts
│   ├── monad/
│   │   └── index.ts
│   ├── monarchpay/
│   │   └── index.ts
│   ├── moneyfi/
│   │   └── index.ts
│   ├── monorail.ts
│   ├── moonpiefun.ts
│   ├── moonriver.ts
│   ├── moonshot-create.ts
│   ├── moonshot-money.ts
│   ├── moonshot.ts
│   ├── moonwell/
│   │   └── index.ts
│   ├── moonwell-apollo.ts
│   ├── moonwell-artemis.ts
│   ├── morph.ts
│   ├── morpheus-ai.ts
│   ├── morpho/
│   │   └── index.ts
│   ├── mosaic-amm.ts
│   ├── move-dollar.ts
│   ├── move.ts
│   ├── mstable-v2/
│   │   └── index.ts
│   ├── mu-digital.ts
│   ├── multichain/
│   │   └── index.ts
│   ├── multipli-fi/
│   │   └── index.ts
│   ├── multiversx/
│   │   └── index.ts
│   ├── mummy-finance.ts
│   ├── musical-chairs.ts
│   ├── mux.ts
│   ├── myriadmarkets/
│   │   └── index.ts
│   ├── myx-finance/
│   │   └── index.ts
│   ├── nado-perp.ts
│   ├── nado-spot.ts
│   ├── namoshi.ts
│   ├── napier/
│   │   └── index.ts
│   ├── native.ts
│   ├── navi/
│   │   └── index.ts
│   ├── navigator/
│   │   └── index.ts
│   ├── near/
│   │   └── index.ts
│   ├── near-intents/
│   │   └── index.ts
│   ├── neby-dex.ts
│   ├── nemo-vault/
│   │   └── index.ts
│   ├── nemo-yield-trading/
│   │   └── index.ts
│   ├── nest-credit.ts
│   ├── nextrare/
│   │   └── index.ts
│   ├── nexus-mutual.ts
│   ├── nfprompt/
│   │   └── index.ts
│   ├── nickel/
│   │   └── index.ts
│   ├── nile-exchange/
│   │   ├── bribes.ts
│   │   └── index.ts
│   ├── noble.ts
│   ├── node-dao/
│   │   └── index.ts
│   ├── node-ops.ts
│   ├── noon/
│   │   └── index.ts
│   ├── nouns/
│   │   └── index.ts
│   ├── nova/
│   │   └── index.ts
│   ├── nozomi.ts
│   ├── ntm/
│   │   └── index.ts
│   ├── nuri-exchange-v2/
│   │   ├── bribes.ts
│   │   └── index.ts
│   ├── o2/
│   │   └── index.ts
│   ├── obol/
│   │   └── index.ts
│   ├── ociswap-basic.ts
│   ├── ociswap-precision.ts
│   ├── odyssey-finance/
│   │   └── index.ts
│   ├── okx-swap.ts
│   ├── olympus-dao.ts
│   ├── omnihub/
│   │   └── index.ts
│   ├── onchain-checkin/
│   │   └── index.ts
│   ├── ondo.ts
│   ├── onre/
│   │   └── index.ts
│   ├── open-stablecoin-index/
│   │   └── index.ts
│   ├── openchat/
│   │   └── index.ts
│   ├── openeden-t-bills/
│   │   └── index.ts
│   ├── openeden-usdo.ts
│   ├── openledger/
│   │   └── index.ts
│   ├── opensea-seaport.ts
│   ├── opentrade.ts
│   ├── optfun/
│   │   └── index.ts
│   ├── optionBlitz/
│   │   └── index.ts
│   ├── opus.ts
│   ├── orb/
│   │   └── index.ts
│   ├── orderly/
│   │   └── index.ts
│   ├── ore/
│   │   └── index.ts
│   ├── origami-finance.ts
│   ├── origin-dollar/
│   │   └── index.ts
│   ├── orynth.ts
│   ├── osmosis.ts
│   ├── ostium/
│   │   └── index.ts
│   ├── oxfun.ts
│   ├── p2p-lending/
│   │   └── index.ts
│   ├── p2pme/
│   │   └── index.ts
│   ├── paal-ai/
│   │   └── index.ts
│   ├── pact.ts
│   ├── padre/
│   │   └── index.ts
│   ├── pagcrypto/
│   │   └── index.ts
│   ├── paint-swap.ts
│   ├── pancakeswap-lottery/
│   │   └── index.ts
│   ├── pandora-speed-trading/
│   │   └── index.ts
│   ├── paradex/
│   │   └── index.ts
│   ├── parcl/
│   │   └── index.ts
│   ├── parity-dex.ts
│   ├── paxos/
│   │   └── index.ts
│   ├── paxos-gold/
│   │   └── index.ts
│   ├── paycash/
│   │   └── index.ts
│   ├── peapods-finance/
│   │   └── index.ts
│   ├── pear-protocol/
│   │   └── index.ts
│   ├── pendle.ts
│   ├── penpie.ts
│   ├── pepe-swaves/
│   │   └── index.ts
│   ├── pepeboost/
│   │   └── index.ts
│   ├── perp88.ts
│   ├── perpetual-protocol.ts
│   ├── phantom.ts
│   ├── pharaoh-exchange.ts
│   ├── phoenix/
│   │   └── index.ts
│   ├── photon.ts
│   ├── phygitals/
│   │   └── index.ts
│   ├── pika-protocol.ts
│   ├── pinksale/
│   │   └── index.ts
│   ├── pinnako.ts
│   ├── pistachio.ts
│   ├── pizza-city.ts
│   ├── plasma-one/
│   │   └── index.ts
│   ├── plasma-saving-vaults/
│   │   └── index.ts
│   ├── plasma.ts
│   ├── playground/
│   │   └── index.ts
│   ├── pleasing-gold.ts
│   ├── pocket-universe.ts
│   ├── polter/
│   │   ├── index.ts
│   │   └── types.ts
│   ├── polycule.ts
│   ├── polygon.ts
│   ├── polymarket.ts
│   ├── polynomial.ts
│   ├── pooltogether-v5/
│   │   └── index.ts
│   ├── possumlabs/
│   │   └── index.ts
│   ├── predict-fun/
│   │   └── index.ts
│   ├── predy-finance-v5.ts
│   ├── premia-v2.ts
│   ├── premia-v3.ts
│   ├── prerich-app.ts
│   ├── prestocks/
│   │   └── index.ts
│   ├── primordium.ts
│   ├── prisma-finance.ts
│   ├── privacy-cash/
│   │   └── index.ts
│   ├── privacy-pools.ts
│   ├── provenance.ts
│   ├── puffer-finance/
│   │   └── index.ts
│   ├── puffer-vaults.ts
│   ├── pulsechain.ts
│   ├── pump-swap/
│   │   └── index.ts
│   ├── pumpdotfun.ts
│   ├── pumper/
│   │   └── index.ts
│   ├── pumpparty/
│   │   └── index.ts
│   ├── pumpup.ts
│   ├── punk-strategy.ts
│   ├── punk.coffee/
│   │   └── index.ts
│   ├── pyth-entropy/
│   │   └── index.ts
│   ├── pyth-express/
│   │   └── index.ts
│   ├── pyth-network/
│   │   └── index.ts
│   ├── pyth-pro/
│   │   └── index.ts
│   ├── qidao.ts
│   ├── quai-network/
│   │   └── index.ts
│   ├── quanto/
│   │   └── index.ts
│   ├── qubic-mining/
│   │   └── index.ts
│   ├── quenta/
│   │   └── index.ts
│   ├── quickswap-hydra/
│   │   └── index.ts
│   ├── quickswap-perps/
│   │   └── index.ts
│   ├── rabby.ts
│   ├── radiant.ts
│   ├── radpie.ts
│   ├── railgun.ts
│   ├── rain/
│   │   └── index.ts
│   ├── rain-one/
│   │   └── index.ts
│   ├── rainbow-predictions.ts
│   ├── rainbow-token-launchpad.ts
│   ├── rainbow-wallet.ts
│   ├── ramses-exchange-v1/
│   │   ├── bribes.ts
│   │   └── index.ts
│   ├── ramses-exchange-v2/
│   │   ├── bribes.ts
│   │   └── index.ts
│   ├── rank-trading/
│   │   └── index.ts
│   ├── rarible/
│   │   └── index.ts
│   ├── ratio/
│   │   └── index.ts
│   ├── raybot.ts
│   ├── razordex.ts
│   ├── re-protocol/
│   │   └── index.ts
│   ├── reachme/
│   │   └── index.ts
│   ├── ready-cards.ts
│   ├── reental/
│   │   └── index.ts
│   ├── renzo/
│   │   ├── common.ts
│   │   └── index.ts
│   ├── rerange/
│   │   └── index.ts
│   ├── reserve/
│   │   └── index.ts
│   ├── reservoir-protocol.ts
│   ├── resolv/
│   │   └── index.ts
│   ├── resupply/
│   │   └── index.ts
│   ├── rezerve-money/
│   │   ├── bonds.ts
│   │   ├── index.ts
│   │   ├── rebases.ts
│   │   └── shadow.ts
│   ├── rfx/
│   │   └── index.ts
│   ├── rhea-cross-chain/
│   │   └── index.ts
│   ├── rhea-lend/
│   │   └── index.ts
│   ├── rhea-lst/
│   │   └── index.ts
│   ├── ribbon/
│   │   └── index.ts
│   ├── rifts/
│   │   └── index.ts
│   ├── rings/
│   │   └── index.ts
│   ├── rip-fun/
│   │   └── index.ts
│   ├── ripple.ts
│   ├── rise-launchpad.ts
│   ├── river/
│   │   ├── config.ts
│   │   └── index.ts
│   ├── rocketpool.ts
│   ├── rocksolid-network/
│   │   └── index.ts
│   ├── rollbit.ts
│   ├── roots/
│   │   └── index.ts
│   ├── rosetta.ts
│   ├── royalbet.ts
│   ├── royco.ts
│   ├── rubicon/
│   │   └── index.ts
│   ├── rubyscore/
│   │   └── index.ts
│   ├── saber/
│   │   └── index.ts
│   ├── sablier.ts
│   ├── safe.ts
│   ├── sanctum/
│   │   └── index.ts
│   ├── sanctum-infinity/
│   │   └── index.ts
│   ├── sanctum-validator-lsts/
│   │   └── index.ts
│   ├── santa-browser/
│   │   └── index.ts
│   ├── saros.ts
│   ├── satoshi-perps/
│   │   └── index.ts
│   ├── saturn-protocol/
│   │   └── index.ts
│   ├── scallop/
│   │   └── index.ts
│   ├── scatter.ts
│   ├── scoop.ts
│   ├── sdai.ts
│   ├── seamless-v2.ts
│   ├── securitize/
│   │   └── index.ts
│   ├── seda.ts
│   ├── sedge/
│   │   └── index.ts
│   ├── segment-finance.ts
│   ├── sei.ts
│   ├── sendshot.ts
│   ├── sentinel-trader-bot.ts
│   ├── sharky/
│   │   └── index.ts
│   ├── sharpe-earn/
│   │   └── index.ts
│   ├── shmonad/
│   │   └── index.ts
│   ├── shoebillFinance-v2/
│   │   └── index.ts
│   ├── shuriken.ts
│   ├── sideshift.ts
│   ├── sierra/
│   │   └── index.ts
│   ├── silent.ts
│   ├── silo-finance/
│   │   └── index.ts
│   ├── silo-finance-v2/
│   │   └── index.ts
│   ├── size-credit.ts
│   ├── skale.ts
│   ├── smithii/
│   │   └── index.ts
│   ├── snakefinance.ts
│   ├── sns.ts
│   ├── socket/
│   │   └── index.ts
│   ├── sofa-org/
│   │   └── index.ts
│   ├── sol-trading-bot/
│   │   └── index.ts
│   ├── solana.ts
│   ├── solar-studios/
│   │   └── index.ts
│   ├── solend.ts
│   ├── solid-yield.ts
│   ├── solidly-v3.ts
│   ├── solidlydex.ts
│   ├── solomon-usdv.ts
│   ├── solstice-usx/
│   │   └── index.ts
│   ├── solv-finance/
│   │   └── index.ts
│   ├── sommelier.ts
│   ├── soneium.ts
│   ├── sonne-finance/
│   │   ├── helpers.ts
│   │   └── index.ts
│   ├── sosovalue/
│   │   └── index.ts
│   ├── sosovalue-basis/
│   │   └── index.ts
│   ├── spaace/
│   │   └── index.ts
│   ├── space-and-time.ts
│   ├── spark/
│   │   └── index.ts
│   ├── spark-liquidity-layer/
│   │   ├── index.ts
│   │   └── spark-liquidity-layer-revenue.sql
│   ├── sparkdex-v3-1/
│   │   └── index.ts
│   ├── spiko/
│   │   └── index.ts
│   ├── splash/
│   │   └── index.ts
│   ├── splitswap/
│   │   └── index.ts
│   ├── springsui/
│   │   └── index.ts
│   ├── springsui-ecosystem/
│   │   └── index.ts
│   ├── ssv-network.ts
│   ├── stUSDT/
│   │   └── index.ts
│   ├── stability/
│   │   └── index.ts
│   ├── stac-clo/
│   │   └── index.ts
│   ├── stackingdao/
│   │   └── index.ts
│   ├── stacks.ts
│   ├── stader.ts
│   ├── staked-hype/
│   │   └── index.ts
│   ├── stakedao/
│   │   └── index.ts
│   ├── stakedotlink/
│   │   └── index.ts
│   ├── stakee/
│   │   └── index.ts
│   ├── stakestone-stone/
│   │   └── index.ts
│   ├── stakewise.ts
│   ├── standx-dusd/
│   │   └── index.ts
│   ├── stargate-finance-v2/
│   │   └── index.ts
│   ├── stargate.ts
│   ├── starknet.ts
│   ├── stars-arena.ts
│   ├── stbot.ts
│   ├── stealcam.ts
│   ├── steamm/
│   │   └── index.ts
│   ├── steer/
│   │   └── index.ts
│   ├── stellar/
│   │   └── index.ts
│   ├── step-finance/
│   │   └── index.ts
│   ├── stockfi/
│   │   └── index.ts
│   ├── ston/
│   │   └── index.ts
│   ├── stormtrade/
│   │   └── index.ts
│   ├── stout/
│   │   └── index.ts
│   ├── strata-markets/
│   │   └── index.ts
│   ├── stratex/
│   │   └── index.ts
│   ├── streamflow/
│   │   └── index.ts
│   ├── stride.ts
│   ├── strike-finance/
│   │   └── index.ts
│   ├── substanceX/
│   │   └── index.ts
│   ├── sudofinance/
│   │   └── index.ts
│   ├── sudoswap-v1.ts
│   ├── sudoswap-v2.ts
│   ├── sui.ts
│   ├── suilend/
│   │   └── index.ts
│   ├── suite/
│   │   └── index.ts
│   ├── summer.fi/
│   │   └── index.ts
│   ├── sundaeswap/
│   │   └── index.ts
│   ├── sunpump.ts
│   ├── sunswap-v1.ts
│   ├── sunswap-v2.ts
│   ├── sunswap-v3.ts
│   ├── superchain.ts
│   ├── superfund/
│   │   └── index.ts
│   ├── superstate/
│   │   └── index.ts
│   ├── superstate-uscc/
│   │   └── index.ts
│   ├── surf-liquid.ts
│   ├── surge-trade.ts
│   ├── sushiswap-agg.ts
│   ├── swap-coffee/
│   │   └── index.ts
│   ├── swell-restaking/
│   │   └── index.ts
│   ├── swell.ts
│   ├── swing/
│   │   └── index.ts
│   ├── symbiotic/
│   │   └── index.ts
│   ├── symmio/
│   │   └── index.ts
│   ├── synapse/
│   │   └── index.ts
│   ├── synfutures-v3/
│   │   └── index.ts
│   ├── synthetix-v3.ts
│   ├── synthetix.ts
│   ├── tangible-rwa.ts
│   ├── tarot.ts
│   ├── taulabs.ts
│   ├── tbtc.ts
│   ├── tectonic/
│   │   └── index.ts
│   ├── telegram-wallet-perps/
│   │   └── index.ts
│   ├── tempo/
│   │   └── index.ts
│   ├── termmax.ts
│   ├── tether/
│   │   └── index.ts
│   ├── tether-gold/
│   │   └── index.ts
│   ├── tezos.ts
│   ├── thegraph.ts
│   ├── thena-integral.ts
│   ├── thena-v1.ts
│   ├── thena-v3.ts
│   ├── theo/
│   │   └── index.ts
│   ├── theo-straddle-vaults/
│   │   └── index.ts
│   ├── thorchain-dex/
│   │   └── index.ts
│   ├── thorchain.ts
│   ├── thorswap/
│   │   └── index.ts
│   ├── thorwallet/
│   │   └── index.ts
│   ├── tickr.ts
│   ├── tigris/
│   │   └── index.ts
│   ├── time-fun.ts
│   ├── tlx-finance/
│   │   └── index.ts
│   ├── tna.ts
│   ├── token-works/
│   │   └── index.ts
│   ├── ton.ts
│   ├── ton4you/
│   │   └── index.ts
│   ├── tonco/
│   │   └── index.ts
│   ├── tonstakers-lsd/
│   │   └── index.ts
│   ├── topcut/
│   │   └── index.ts
│   ├── torch/
│   │   └── index.ts
│   ├── tornado/
│   │   └── index.ts
│   ├── toros/
│   │   └── index.ts
│   ├── touch.fan.ts
│   ├── trade-wiz.ts
│   ├── trading-terminal/
│   │   └── index.ts
│   ├── trado/
│   │   └── index.ts
│   ├── tree-news/
│   │   └── index.ts
│   ├── treehouse-protocol/
│   │   └── index.ts
│   ├── trends-curve.ts
│   ├── trends.ts
│   ├── tria-card.ts
│   ├── tribe-run.ts
│   ├── triggerx/
│   │   └── index.ts
│   ├── tristero-margin.ts
│   ├── tron.ts
│   ├── tronsave/
│   │   └── index.ts
│   ├── trust-wallet.ts
│   ├── turbos/
│   │   └── index.ts
│   ├── typus-dov.ts
│   ├── typus-perp.ts
│   ├── typus-safu.ts
│   ├── unibot.ts
│   ├── unichain.ts
│   ├── unicornx.ts
│   ├── unicrypt.ts
│   ├── uniderp/
│   │   └── index.ts
│   ├── unidex.ts
│   ├── uniswap-lab.ts
│   ├── universalx.ts
│   ├── unlock-protocol.ts
│   ├── up-vs-down-game.ts
│   ├── updown/
│   │   └── index.ts
│   ├── upheaval-spot/
│   │   └── index.ts
│   ├── upshift/
│   │   └── index.ts
│   ├── usdai/
│   │   ├── index.ts
│   │   ├── legacyUtils.ts
│   │   └── metrics.ts
│   ├── usdd/
│   │   └── index.ts
│   ├── usdo.ts
│   ├── usdx.ts
│   ├── usual.ts
│   ├── vader-ai.ts
│   ├── valas-finance.ts
│   ├── valorem/
│   │   ├── constants.ts
│   │   ├── helpers.ts
│   │   ├── index.ts
│   │   └── interfaces.ts
│   ├── variational/
│   │   └── index.ts
│   ├── varlamore/
│   │   └── index.ts
│   ├── vaulta-ram/
│   │   └── index.ts
│   ├── vaulta-rex/
│   │   └── index.ts
│   ├── vaultcraft.ts
│   ├── vaultka.ts
│   ├── vbill/
│   │   └── index.ts
│   ├── veax.ts
│   ├── vectorfun.ts
│   ├── veda.ts
│   ├── velo/
│   │   └── index.ts
│   ├── velodrome/
│   │   └── index.ts
│   ├── velodrome-v2/
│   │   └── index.ts
│   ├── veno-finance.ts
│   ├── venus-finance.ts
│   ├── venus-flux/
│   │   ├── index.ts
│   │   └── revenue.ts
│   ├── verse.ts
│   ├── vesper/
│   │   └── index.ts
│   ├── vest-markets/
│   │   └── index.ts
│   ├── vesta-finance.ts
│   ├── vexy/
│   │   └── index.ts
│   ├── vfat/
│   │   └── index.ts
│   ├── vibes-meme.ts
│   ├── vicuna-finance/
│   │   └── index.ts
│   ├── vinufinance/
│   │   └── index.ts
│   ├── virtual-protocol.ts
│   ├── virtue/
│   │   └── index.ts
│   ├── volboost.ts
│   ├── volo-vault/
│   │   └── index.ts
│   ├── volta-markets/
│   │   └── index.ts
│   ├── voodoo-trade.ts
│   ├── votre/
│   │   └── index.ts
│   ├── walrus.ts
│   ├── waterneuron.ts
│   ├── waves/
│   │   └── index.ts
│   ├── wavex/
│   │   └── index.ts
│   ├── wbtc/
│   │   └── index.ts
│   ├── wedefin.ts
│   ├── welephant/
│   │   └── index.ts
│   ├── wen-markets.ts
│   ├── wigoswap.ts
│   ├── wildcat.ts
│   ├── wingriders/
│   │   └── index.ts
│   ├── wisdomtree/
│   │   └── index.ts
│   ├── wise-lending-v2/
│   │   └── index.ts
│   ├── witty/
│   │   └── index.ts
│   ├── woofi.ts
│   ├── worldle/
│   │   └── index.ts
│   ├── worm-wtf/
│   │   └── index.ts
│   ├── wormhole/
│   │   └── index.ts
│   ├── wrapped-hlp/
│   │   └── index.ts
│   ├── x2y2.ts
│   ├── xaue/
│   │   └── index.ts
│   ├── xdc.ts
│   ├── xdock-meme.ts
│   ├── xeleb/
│   │   └── index.ts
│   ├── xena-finance.ts
│   ├── xlayer.ts
│   ├── xmarket.ts
│   ├── xrpl/
│   │   └── index.ts
│   ├── xtrade-protocol.ts
│   ├── y2k-v1.ts
│   ├── y2k-v2.ts
│   ├── yakafinance/
│   │   └── index.ts
│   ├── yala/
│   │   └── index.ts
│   ├── yamfore.ts
│   ├── yearn-ether.ts
│   ├── yearn-finance.ts
│   ├── yeet-bgt-auction.ts
│   ├── yfx-v3.ts
│   ├── yfx-v4.ts
│   ├── yield-basis/
│   │   └── index.ts
│   ├── yield-yak-staked-avax.ts
│   ├── yieldfi/
│   │   └── index.ts
│   ├── yieldnest.ts
│   ├── yo-protocol/
│   │   └── index.ts
│   ├── yologames/
│   │   └── index.ts
│   ├── yusan.ts
│   ├── yuzu-finance.ts
│   ├── zapfi/
│   │   └── index.ts
│   ├── zapzy/
│   │   └── index.ts
│   ├── zarban/
│   │   └── index.ts
│   ├── zcash/
│   │   └── index.ts
│   ├── zeebu/
│   │   └── index.ts
│   ├── zenland/
│   │   └── index.ts
│   ├── zeno.ts
│   ├── zerion-wallet.ts
│   ├── zircuit-staking/
│   │   └── index.ts
│   ├── zivoe/
│   │   └── index.ts
│   ├── zns/
│   │   └── index.ts
│   ├── zo/
│   │   └── index.ts
│   ├── zonic.ts
│   ├── zoodotfun.ts
│   ├── zora-sofi.ts
│   ├── zora.ts
│   ├── zunami/
│   │   └── index.ts
│   ├── zyberswap-v2.ts
│   ├── zyberswap-v3.ts
│   └── zyfai.ts
├── helpers/
│   ├── GUIDELINES.md
│   ├── aave/
│   │   ├── abi.ts
│   │   ├── helper.ts
│   │   └── index.ts
│   ├── aggregators/
│   │   ├── bungee.ts
│   │   ├── dzap.ts
│   │   ├── haiku.ts
│   │   └── lifi.ts
│   ├── allium.ts
│   ├── alliumDex.ts
│   ├── aptos.ts
│   ├── attestations-stablecoins.ts
│   ├── balancer.ts
│   ├── bitqueryFees.ts
│   ├── blockscoutFees.ts
│   ├── cache.ts
│   ├── cardano.ts
│   ├── chains.ts
│   ├── coinbase-commerce.ts
│   ├── compoundV2.ts
│   ├── coreAssets.json
│   ├── crypto-card.ts
│   ├── curators/
│   │   ├── configs.ts
│   │   └── index.ts
│   ├── curve/
│   │   ├── helpers.ts
│   │   └── index.ts
│   ├── dune.ts
│   ├── duneSolanaDex.ts
│   ├── env.ts
│   ├── erc4626.ts
│   ├── ethereum-builder.ts
│   ├── ethereum-l2.ts
│   ├── etherscanFees.ts
│   ├── extended-exchange.ts
│   ├── fraxlend.ts
│   ├── friend-tech.ts
│   ├── getBlock.ts
│   ├── getChainFees.ts
│   ├── getTxReceipts.ts
│   ├── getUniSubgraph/
│   │   ├── index.ts
│   │   └── utils.ts
│   ├── getUniSubgraphVolume.ts
│   ├── gmx.ts
│   ├── hyperliquid.ts
│   ├── indexer.ts
│   ├── joe.ts
│   ├── liquity.ts
│   ├── lists.ts
│   ├── metrics.ts
│   ├── neony.ts
│   ├── orderly.ts
│   ├── polymarket.ts
│   ├── pool.ts
│   ├── prices.ts
│   ├── queries/
│   │   ├── bags.sql
│   │   ├── bitget-wallet-card.sql
│   │   ├── bob-blockchain.sql
│   │   ├── conveyor.sql
│   │   ├── cow-protocol.sql
│   │   ├── dbc-config.sql
│   │   ├── dbc.sql
│   │   ├── definitive.sql
│   │   ├── drift-protocol.sql
│   │   ├── eulerswap.sql
│   │   ├── exa-card.sql
│   │   ├── flashbots.sql
│   │   ├── futarchy.sql
│   │   ├── jito.sql
│   │   ├── jupiter-lend.sql
│   │   ├── jupiter-perpetual-oi.sql
│   │   ├── jupiter-perpetual.sql
│   │   ├── kyros.sql
│   │   ├── sol-lst.sql
│   │   ├── stader.sql
│   │   └── virtual-protocol.sql
│   ├── readableStartTimestamp.js
│   ├── ripple.ts
│   ├── saddle.ts
│   ├── solana.ts
│   ├── solidly.ts
│   ├── subscanFees.ts
│   ├── sui.ts
│   ├── symmio.ts
│   ├── time-fun.ts
│   ├── token.ts
│   ├── tonLst.ts
│   ├── tristeroMargin.ts
│   ├── uniswap.ts
│   ├── useTokenLabels.js
│   └── utils/
│       ├── findClosest.ts
│       └── index.ts
├── incentives/
│   ├── GUIDELINES.md
│   └── bitcoin/
│       └── index.ts
├── normalized-volume/
│   └── .gitkeep
├── open-interest/
│   ├── 01-xyz.ts
│   ├── GUIDELINES.md
│   ├── aevo-options-oi.ts
│   ├── aevo-perps-oi.ts
│   ├── aftermath-fi-perp.ts
│   ├── antarctic-oi.ts
│   ├── apollox.ts
│   ├── astro-perp-oi.ts
│   ├── boros-oi.ts
│   ├── bounce-tech-oi.ts
│   ├── bullet.ts
│   ├── capybara-perp.ts
│   ├── challenge4trading-perp.ts
│   ├── dango-oi.ts
│   ├── defx.ts
│   ├── denaria.ts
│   ├── derive-options.ts
│   ├── drift-trade.ts
│   ├── edgeX.ts
│   ├── ethereal-oi.ts
│   ├── evedex.ts
│   ├── flashtrade-oi.ts
│   ├── gameclub.ts
│   ├── gmtrade-oi.ts
│   ├── gmx-v2-gmx-v2-trade.ts
│   ├── hibachi.ts
│   ├── holdstation-defutures-oi.ts
│   ├── hotstuff-oi.ts
│   ├── hyperliquid-perp-oi.ts
│   ├── injective-derivatives.ts
│   ├── jupiter-perpetual-oi.ts
│   ├── leverup-oi.ts
│   ├── lighter-v2.ts
│   ├── lyra-v2.ts
│   ├── monday-trade-perp-oi.ts
│   ├── myx-finance.ts
│   ├── nado.ts
│   ├── neony.ts
│   ├── opinion-oi.ts
│   ├── orderly-perps-oi.ts
│   ├── pacifica-oi.ts
│   ├── paradex.ts
│   ├── perpl.ts
│   ├── perptools-perp-oi.ts
│   ├── phoenix-trade-oi.ts
│   ├── pika-v4.ts
│   ├── polymarket-oi.ts
│   ├── polymarket-us-oi.ts
│   ├── reya-dex-oi.ts
│   ├── rho-trading.ts
│   ├── risex-perps-oi.ts
│   ├── rocket-oi.ts
│   ├── satori-oi.ts
│   ├── sodex-perps-oi.ts
│   ├── standx.ts
│   ├── sunperp-oi.ts
│   ├── synfutures-v3.ts
│   ├── synthetix-v3.ts
│   ├── synthetix-v4.ts
│   ├── synthetix.ts
│   ├── tristero-margin.ts
│   ├── txflow-perps-oi.ts
│   └── vest-markets.ts
├── options/
│   ├── GUIDELINES.md
│   ├── aevo/
│   │   └── index.ts
│   ├── arrow-markets/
│   │   └── index.ts
│   ├── dopex/
│   │   ├── clamm.ts
│   │   └── index.ts
│   ├── hegic/
│   │   ├── index.ts
│   │   └── interfaces.ts
│   ├── hypersurface/
│   │   └── index.ts
│   ├── ithaca/
│   │   └── index.ts
│   ├── ivx/
│   │   └── index.ts
│   ├── jaspervault/
│   │   └── index.ts
│   ├── kyan.ts
│   ├── lyra-v2/
│   │   └── index.ts
│   ├── moby/
│   │   └── index.ts
│   ├── optfun/
│   │   └── index.ts
│   ├── optionBlitz/
│   │   └── index.ts
│   ├── opyn/
│   │   └── index.ts
│   ├── pancakeswap-options/
│   │   └── index.ts
│   ├── paradex/
│   │   └── index.ts
│   ├── premia-v2.ts
│   ├── premia-v3.ts
│   ├── rysk-finance/
│   │   └── index.ts
│   ├── rysk-v12/
│   │   └── index.ts
│   ├── sofa-org/
│   │   └── index.ts
│   ├── tigris/
│   │   └── index.ts
│   ├── ton-hedge.ts
│   ├── toros/
│   │   └── index.ts
│   ├── typus/
│   │   ├── getChainData.ts
│   │   └── index.ts
│   └── valorem/
│       └── index.ts
├── package.json
├── pnpm-workspace.yaml
├── pull_request_template.md
├── skills/
│   └── adapter-author/
│       ├── SKILL.md
│       └── references/
│           ├── intake.md
│           ├── patterns.md
│           └── validation.md
├── tsconfig.cli.json
├── tsconfig.json
├── users/
│   ├── chains.ts
│   ├── compound-v2/
│   │   └── index.ts
│   ├── list.ts
│   ├── routers/
│   │   ├── index.ts
│   │   └── routerAddresses.ts
│   └── utils/
│       ├── convertChain.ts
│       ├── countUsers.ts
│       └── types.ts
└── utils/
    ├── date.ts
    ├── deleteRedundantFiles.ts
    ├── fetchURL.ts
    ├── prices.ts
    └── utils.ts

================================================
FILE CONTENTS
================================================

================================================
FILE: .coderabbit.yaml
================================================
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
language: "en-US"
early_access: true

reviews:
  profile: "assertive"
  request_changes_workflow: true
  high_level_summary: true
  high_level_summary_in_walkthrough: true
  poem: false
  review_status: true
  collapse_walkthrough: false
  sequence_diagrams: true
  changed_files_summary: true
  estimate_code_review_effort: true
  assess_linked_issues: true
  related_issues: true
  related_prs: true
  suggested_labels: true
  auto_apply_labels: true
  suggested_reviewers: true
  
  auto_review:
    enabled: true
    drafts: false
    base_branches:
      - master

  # Pre-merge checks (Pro feature)
  pre_merge_checks:
    docstrings:
      mode: "warning"
      threshold: 50
    title:
      mode: "warning"
      requirements: "Title should be descriptive and follow format: [type] protocol-name - description"
    description:
      mode: "warning"
    custom_checks:
      - name: "Breakdown Methodology Check"
        mode: "warning"
        instructions: "For fees adapters: verify that all breakdown labels used in .add() calls have corresponding entries in breakdownMethodology object. Check that breakdownMethodology is exported in the adapter."
      - name: "Income Statement Compliance"
        mode: "warning"
        instructions: "For fees adapters: verify dailyFees represents Gross Protocol Revenue (all potential fees), dailyRevenue represents Gross Profit (protocol's portion), and dailySupplySideRevenue represents Cost of Funds (supplier payments). Ensure dailyRevenue = dailyFees - dailySupplySideRevenue conceptually."
      - name: "Version 2 Required"
        mode: "warning"
        instructions: "New adapters must use version: 2 format. Check that the adapter exports version: 2 unless it's updating an existing v1 adapter."

  # Finishing touches (Pro feature)
  finishing_touches:
    docstrings:
      enabled: true
    unit_tests:
      enabled: false
    simplify:
      enabled: true

  # Path-specific review instructions
  path_instructions:
    - path: "fees/**"
      instructions: |
        Review fees adapters for:
        - Correct income statement mapping (dailyFees = Gross Protocol Revenue, dailyRevenue = Gross Profit, dailySupplySideRevenue = Cost of Funds)
        - All breakdown labels must have corresponding breakdownMethodology entries
        - Labels should be descriptive (not vague like "Protocol Fees" or "Other")
        - dailySupplySideRevenue required when protocol pays suppliers (LPs, lenders, stakers, integrators, referrers)
        - Block rewards are incentives NOT fees
        - Use web search to verify protocol's fee structure if unclear
    
    - path: "dexs/**"
      instructions: |
        Review DEX adapters for:
        - Volume calculation accuracy
        - For perpetuals: ONLY track taker volume (do NOT double-count maker+taker)
        - Wash trading concerns on low-fee chains
        - If fees are tracked, verify income statement compliance (see fees/ guidelines)
        - Use helper functions when available (uniV2Exports, uniV3Exports)
    
    - path: "aggregators/**"
      instructions: |
        Review aggregator adapters for:
        - Volume should be routed volume, NOT double-counted with underlying DEX volume
        - Check for integration/partner fees as supply-side costs
        - If fees tracked, verify income statement compliance
    
    - path: "aggregator-derivatives/**"
      instructions: |
        Review derivatives aggregator adapters for:
        - ONLY track taker volume (no maker+taker double-counting)
        - Check open interest tracking if applicable
        - If fees tracked, verify income statement compliance
    
    - path: "aggregator-options/**"
      instructions: |
        Review options aggregator adapters for:
        - Both dailyNotionalVolume and dailyPremiumVolume required
        - Ensure routed options volume is not double-counted with underlying protocols
        - If fees tracked, verify income statement compliance
    
    - path: "bridge-aggregators/**"
      instructions: |
        Review bridge aggregator adapters for:
        - Track routed bridge volume only (dailyBridgeVolume)
        - Avoid double-counting with underlying bridge protocols
        - Verify multi-chain transfer accounting consistency
        - If fees tracked, verify income statement compliance
    
    - path: "options/**"
      instructions: |
        Review options adapters for:
        - Both dailyNotionalVolume and dailyPremiumVolume required
        - Don't confuse notional vs premium volume
        - If fees tracked, verify income statement compliance
    
    - path: "incentives/**"
      instructions: |
        Review incentives adapters for:
        - Block rewards and emissions classified as incentives, not fees
        - dailyTokenIncentives required; dailyIncentives when applicable
        - No double-counting with fees adapters
    
    - path: "helpers/**"
      instructions: |
        Review helper code for:
        - Reusability across multiple adapters
        - Proper TypeScript types
        - No npm dependencies allowed
        - Use api.multiCall for batching, not Promise.all

  # Labeling suggestions
  labeling_instructions:
    - label: "fees"
      instructions: "Apply when PR changes files in fees/ directory"
    - label: "dexs"
      instructions: "Apply when PR changes files in dexs/ directory"
    - label: "aggregators"
      instructions: "Apply when PR changes files in aggregators/ directory"
    - label: "new-adapter"
      instructions: "Apply when PR adds a new adapter file that didn't exist before"
    - label: "methodology"
      instructions: "Apply when PR changes fee/revenue calculation methodology or breakdownMethodology"
    - label: "helper"
      instructions: "Apply when PR changes files in helpers/ directory"
    - label: "bug-fix"
      instructions: "Apply when PR fixes a bug in existing adapter"

  # Tools for linting
  tools:
    biome:
      enabled: true
    eslint:
      enabled: true
    github-checks:
      enabled: true
      timeout_ms: 300000

chat:
  auto_reply: true

knowledge_base:
  web_search:
    enabled: true
  opt_out: false
  code_guidelines:
    enabled: true
    filePatterns:
      - "**/GUIDELINES.md"
  learnings:
    scope: global
  issues:
    scope: global
  pull_requests:
    scope: global


================================================
FILE: .github/CODEOWNERS
================================================
# Protect dependency and config files — require @g1nt0ki @0xngmi approval
/.github/CODEOWNERS @g1nt0ki @0xngmi

package.json @g1nt0ki @0xngmi
pnpm-lock.yaml @g1nt0ki @0xngmi
pnpm-workspace.yaml @g1nt0ki @0xngmi

================================================
FILE: .github/workflows/build-modules-and-alert.yml
================================================
name: Build dimensionModules and alert unlisted projects

on:
  push:
    branches: [ "master" ]

jobs:
  build-and-upload:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: pnpm/action-setup@v4
        name: Install pnpm
        with:
          version: 10
          run_install: false

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'pnpm'

      - name: Install dependencies
        run: pnpm install

      - name: Run buildImports script
        run: pnpm run build

      - name: Publish dimensionModules.json as "latest" release
        uses: ncipollo/release-action@v1
        with:
          tag: latest
          name: Latest dimensionModules
          artifacts: cli/dimensionModules.json
          allowUpdates: true
  alert-unlisted:
    needs: build-and-upload  # waits for build-and-upload to succeed first
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Update unlisted
      run: |
        curl --fail https://born-to-llama.llama.fi/refresh-dimensions
        exit $?
          


================================================
FILE: .github/workflows/comment.yml
================================================
name: comment-pr
on:
  workflow_run:
    workflows: ["test-adapter"]
    types: [completed]

permissions:
  pull-requests: write
  actions: read

jobs:
  comment:
    runs-on: ubuntu-latest
    # We don't gate on conclusion because the test workflow intentionally exits
    # non-zero when an adapter errors, and we still want to post the error comment.
    steps:
      - name: Download PR comments artifact
        id: download
        uses: actions/download-artifact@v4
        with:
          name: pr-comments
          run-id: ${{ github.event.workflow_run.id }}
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path: pr-comments
        continue-on-error: true

      - name: Post comments on PR
        if: steps.download.outcome == 'success'
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const path = require('path');

            const dir = 'pr-comments';
            if (!fs.existsSync(dir)) {
              core.info('No pr-comments directory, nothing to post.');
              return;
            }

            const prNumberPath = path.join(dir, 'pr-number.txt');
            if (!fs.existsSync(prNumberPath)) {
              core.info('No pr-number.txt, nothing to post.');
              return;
            }
            const prNumber = Number(fs.readFileSync(prNumberPath, 'utf8').trim());
            if (!Number.isInteger(prNumber) || prNumber <= 0) {
              core.setFailed(`Invalid PR number in artifact: ${prNumber}`);
              return;
            }

            const files = fs.readdirSync(dir)
              .filter(f => f.endsWith('.md'))
              .sort();

            for (const f of files) {
              const body = fs.readFileSync(path.join(dir, f), 'utf8');
              if (!body.trim()) continue;
              await github.rest.issues.createComment({
                issue_number: prNumber,
                owner: context.repo.owner,
                repo: context.repo.repo,
                body,
              });
            }


================================================
FILE: .github/workflows/commentResult.js
================================================
const { readFileSync, writeFileSync, mkdirSync } = require('fs');
const path = require('path');

function main() {
    const [, , log, outDir, adapterNameKey] = process.argv;
    const file = readFileSync(log, 'utf-8');

    const [, adapterName] = (adapterNameKey || '').split('@');

    const errorString = 'ERROR';
    const summaryIndex = file.indexOf('---------------------------------------------------');
    const errorIndex = file.indexOf(errorString);
    let body;

    if (summaryIndex != -1) {
        body = `The ${adapterName} adapter exports:
        \n \n ${file.replaceAll('\n', '\n    ')}`;
    } else if (errorIndex != -1) {
        body = `Error while running adapter ${adapterName} adapter:
        \n \n ${file.split(errorString)[1].replaceAll('\n', '\n    ')}`;
    } else {
        console.info(`No error or summary found in log file`);
        return;
    }

    console.info(`Preparing comment:\n${body}`);

    mkdirSync(outDir, { recursive: true });
    const safeName = (adapterNameKey || 'general').replace(/[^a-zA-Z0-9._-]/g, '_');
    const fileName = `${Date.now()}-${process.pid}-${safeName}.md`;
    writeFileSync(path.join(outDir, fileName), body);
}
main();


================================================
FILE: .github/workflows/getFileList.js
================================================
const ALLOWED_ROOTS = ['volumes', 'dexs', 'options', 'derivatives', 'incentives', 'fees', 'options', 'protocols', 'aggregators','aggregator-derivatives','bridge-aggregators', 'open-interest']
const MODIFIED = parse(process.env.MODIFIED)
const ADDED = parse(process.env.ADDED)
const fileSet = new Set();

[...MODIFIED, ...ADDED].forEach(file => {
  // Skip markdown documentation files (e.g., GUIDELINES.md)
  if (file.endsWith('.md')) return;
  
  const [root, adapter] = file.split('/')
  if (ALLOWED_ROOTS.includes(root) && adapter !== undefined)
    fileSet.add(`${root}@${adapter}`)
})

console.log(JSON.stringify([...fileSet]))

function parse(data) {
  return data.replace('[', '').replace(']', '').split(',')
}


================================================
FILE: .github/workflows/test-adapter.yml
================================================
name: test-adapter
on: [pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - id: file_changes
        uses: trilom/file-changes-action@ce38c8ce2459ca3c303415eec8cb0409857b4272
        with:
          output: 'json'
          fileOutput: 'json'

      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: pnpm/action-setup@v4
        name: Install pnpm
        with:
          version: 10
          run_install: false

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'pnpm'

      - name: Install dependencies
        run: pnpm install

      - name: Record PR number
        run: |
          mkdir -p pr-comments
          echo "${{ github.event.number }}" > pr-comments/pr-number.txt

      - name: Run changes files through test script
        run: |
          # Store the current commit hash in a variable
          current_commit=$(git rev-parse HEAD)

          # Checkout to master to check if new adapters files are of v2
          git fetch origin master:master

          # Checkout back to the original commit
          git checkout $current_commit

          RUN_FILES=$(
            MODIFIED=${{ steps.file_changes.outputs.files_modified}} \
            ADDED=${{ steps.file_changes.outputs.files_added}} \
            node ${{ github.workspace }}/.github/workflows/getFileList.js
          )

          if [ "$RUN_FILES" = "[]" ]; then
            echo "No adapter files were modified"
            exit 0
          fi

          list=$(echo $RUN_FILES | tr  -d '"[]' | tr "," "\n")

          for i in ${list}
          do
            {
              IFS='@' read -r -a array <<< "$i"
              npm run test ${array[0]} ${array[1]} 2>&1 | tee output.txt
              node ${{ github.workspace }}/.github/workflows/commentResult.js ${{ github.workspace }}/output.txt ${{ github.workspace }}/pr-comments ${i}
              if grep -q "\-\-\-\- ERROR \-\-\-\-" output.txt; then
                exit 1;
              fi
            } || {
              echo -n $i
              echo ' doesnt run'
            }
          done

      - name: Upload PR comments artifact
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: pr-comments
          path: pr-comments/
          if-no-files-found: ignore
          retention-days: 1


================================================
FILE: .github/workflows/ts-check.yml
================================================
name: Check ts

on: [pull_request]
    
jobs:
  ts-check:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: pnpm/action-setup@v4
        name: Install pnpm
        with:
          version: 10
          run_install: false

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'pnpm'

      - name: Install dependencies
        run: pnpm install

      - name: Checking adapters
        run: pnpm run ts-check
        
      - name: Checking cli
        run: pnpm run ts-check-cli

================================================
FILE: .gitignore
================================================
node_modules
.vscode
.DS_store
.env
.idea
yarn.lock
test.py
test.js

cli/dimensionModules.json
wash/
*.log

.claude
CLAUDE.md


================================================
FILE: GUIDELINES.md
================================================
# DefiLlama Dimension Adapters - Global Guidelines

These guidelines apply to ALL adapters in this repository.

## PR Description

- Always provide Website and twitter links in the description

## Code Structure

- Use on-chain data/event logs where possible. We are stricter about on-chain for chains where we maintain our own indexer, or where there is significant volume/fees, or where you suspect wash trading
- Use `pullHourly: true`, wherever evm logs and allium queries are used to avoid recomputing data for the same time period and provide more granular data
- Never swallow errors silently. For recoverable chain-specific failures, return 0 and log the error so the adapter continues for other chains. For system-level or critical errors, throw/propagate to fail fast
- Use/add helper code when multiple adapters use similar logic - check `helpers/` folder first
- Do NOT add npm dependencies - this leads to bloat
- Use `api.multiCall` where possible, avoid `Promise.all`. Use PromisePool for non-EVM calls
- Return token breakdown where possible - always include `methodology` and `breakdownMethodology`

## Adapter Version

| | Version 2 | Version 1 |
|---|---|---|
| **Use when** | On-chain logs, contract calls, subgraphs, Dune queries with timestamp filters | External API that only returns daily aggregates |
| **Fetch signature** | `(options: FetchOptions)` | `(timestamp, chainBlocks, options)` |
| **Time range** | Arbitrary start/end timestamps | Fixed day (00:00–23:59 UTC) |
| **`pullHourly`** | Supported | Not supported |
| **Preference** | Always prefer this | Use only when v2 is not possible |

## Core Dimensions by Dashboard

### DEXs and DEX Aggregators

| Dimension | Required | Description |
|-----------|----------|-------------|
| `dailyVolume` | YES | Trading volume for the period |

### Derivatives and Aggregator-Derivatives

| Dimension | Required | Description |
|-----------|----------|-------------|
| `dailyVolume` | YES | Perpetual trading volume (TAKER volume only, do NOT double-count maker+taker) |
| `openInterestAtEnd` | Optional | Open interest at period end |
| `longOpenInterestAtEnd` | Optional | Long positions open interest |
| `shortOpenInterestAtEnd` | Optional | Short positions open interest |

### Bridge Aggregators

| Dimension | Required | Description |
|-----------|----------|-------------|
| `dailyBridgeVolume` | YES | Bridge volume for the period |

### Options

| Dimension | Required | Description |
|-----------|----------|-------------|
| `dailyNotionalVolume` | YES | Notional volume of options contracts |
| `dailyPremiumVolume` | YES | Premium volume collected/paid |
| `openInterestAtEnd` | Optional | Open interest at period end |

### Fees (Income Statement Model)

| Dimension | Required | Description |
|-----------|----------|-------------|
| `dailyFees` | YES | All fees from ALL sources (Gross Protocol Revenue) - everything protocol could theoretically keep if it took 100% |
| `dailyRevenue` | YES | Portion kept by protocol (Gross Profit = dailyFees - dailySupplySideRevenue) |
| `dailySupplySideRevenue` | When applicable | Portion to LPs, lenders, stakers, integrators, referrers, creators (Cost of Revenue) |
| `dailyUserFees` | Optional | Portion directly paid by end-users |
| `dailyProtocolRevenue` | Optional | Portion allocated to treasury |
| `dailyHoldersRevenue` | When applicable | All value to token holders (buybacks, burns, distributions, external airdrops, bribes) |

## Minimum Requirements for Listing

- **Must provide** all required dimensions for the adapter category (see tables above)
- **For fees adapters**: must provide accurate `dailyFees` and `dailyRevenue`
- **Strongly encouraged**: `dailySupplySideRevenue` when protocol has supply-side costs
- **Include when applicable**: `dailyHoldersRevenue` for protocols distributing to holders
- **Always include**: breakdown labels and `breakdownMethodology`
- **Deprecated**: `total*` cumulative dimensions - do not use

## Income Statement Mapping

| Display Name | Code Field |
|--------------|------------|
| Gross Protocol Revenue | dailyFees |
| Cost of Funds | dailySupplySideRevenue |
| Gross Profit | dailyRevenue |
| Tokenholder Income | dailyHoldersRevenue |

## Fee/Revenue Attribution by Protocol Type

| Attribute | DEXs | Lending | Chains | NFT Marketplace | Derivatives | CDP | Liquid Staking | Yield |
|-----------|------|---------|--------|-----------------|-------------|-----|----------------|-------|
| Fees | Swap fees | Borrow interest | Gas fees | Trading fees | Trading fees + mint/burn | Borrow fees | Staking rewards | Yield |
| SupplySideRevenue | LP revenue | Interest to lenders | Sequencer costs, blob fees | Creator earnings | LP revenue, rebates | N/A | Rewards to stakers | Yield minus fees |
| Revenue | Protocol's % | Protocol's % | Burned fees | Marketplace rev | Protocol's % | Protocol's % | Protocol fee % | Protocol fees |
| HoldersRevenue | Token distributions | N/A | N/A | N/A | Staker distributions | N/A | N/A | N/A |

**Notes:**
- `Revenue = Fees - SupplySideRevenue`
- `Revenue = HoldersRevenue + ProtocolRevenue`
- For chains: only track transaction fees paid by users. Perp DEX fees (e.g., Hyperliquid L1) are tracked under the perp adapter, not chain adapter

## Breakdown Labels

- ALWAYS provide labels even when there is only one source/destination of fees
- Labels prevent needing to update and backfill data when adapter is listed under a parent protocol
- `dailyFees`: Use source-of-fees labels (e.g., 'Swap Fees', 'Borrow Interest')
- `dailyRevenue`/`dailySupplySideRevenue`/`dailyHoldersRevenue`: Use detailed destination labels (e.g., 'Swap Fees To LPs', 'Borrow Interest To Treasury')

**Every label used in `.add()` calls MUST appear in `breakdownMethodology`**, and every label in `breakdownMethodology` must have corresponding data in code.

## Deprecated Fields

- `dailyBribesRevenue` and `dailyTokenTaxes` are deprecated; put these as sub-sections within `dailyHoldersRevenue` instead

## Data Classification Rules

- **Fees**: Only fees paid by users for transactions should be tracked as fees. Block rewards are incentives, NOT fees
- **Revenue**: Only the portion that gets burnt or goes to protocol treasury. Staker payments are NOT revenue
- **Holder Revenue**: Same as revenue unless portion is set aside for protocol
- **Chain Fees**: Track only transaction fees paid by users (no perp DEX fees for chains like Hyperliquid L1)

## Guiding Principle

'Gross Protocol Revenue' (dailyFees) should include everything the protocol COULD charge if it became maximally greedy.

Example: For Aave, if depositors get 70% and protocol gets 30% of borrow fees, dailyFees includes 100% because protocol could theoretically take it all.

## Watch For

- Wash trading - be vigilant especially on low-fee chains
- Incorrect fee/revenue classification
- Missing breakdown labels
- Hardcoded values that should be dynamic
- Double-counting (e.g., both taker and maker volume in perps)


================================================
FILE: README.md
================================================
# Adapters

Find the instructions to list, write, test and submit an adapter [here](https://docs.llama.fi/list-your-project/other-dashboards)

## Install dependencies

`pnpm i`

## test adapter commands

`pnpm test fees bitcoin`

`pnpm test fees bitcoin 2025-10-10`

## Adding custom RPC URLs

Create an `.env` file and add custom RPC URLs using the `{CHAIN}_RPC` format (use uppercase chain name):

```
ETHEREUM_RPC="https://yourcustomrpc.com"
```


================================================
FILE: active-users/aptos.ts
================================================
import { Dependencies, SimpleAdapter, ProtocolType, FetchOptions } from "../adapters/types";
import { CHAIN } from "../helpers/chains";
import { queryAllium } from "../helpers/allium";

const fetch = async (_a: any, _b: any, options: FetchOptions) => {
    const start = new Date(options.fromTimestamp * 1000).toISOString()
    const end = new Date(options.toTimestamp * 1000).toISOString()

    const alliumQuery = `
    SELECT 
        COALESCE(count(distinct sender), 0) as user_count,
        COALESCE(count(*), 0) as transaction_count
    FROM aptos.raw.transactions
    where block_timestamp BETWEEN '${start}' AND '${end}'
  `;

    const alliumResult = await queryAllium(alliumQuery);

    return {
        dailyActiveUsers: alliumResult[0].user_count,
        dailyTransactionsCount: alliumResult[0].transaction_count,
    }
}

const adapter: SimpleAdapter = {
    version: 1,
    fetch,
    chains: [CHAIN.APTOS],
    dependencies: [Dependencies.ALLIUM],
    isExpensiveAdapter: true,
    protocolType: ProtocolType.CHAIN,
    start: "2022-10-20",
};

export default adapter;


================================================
FILE: active-users/kyan.ts
================================================
import { SimpleAdapter } from "../adapters/types";
import { CHAIN } from "../helpers/chains";
import { httpGet } from "../utils/fetchURL";

const API_URL = "https://production.kyan.sh/api/v1/defillama/overview";
const ONE_DAY = 24 * 60 * 60;

const fetch = async () => {
  const data = await httpGet(API_URL);
  const now = Math.floor(Date.now() / 1000);
  if (Math.abs(now - data.timestamp) > ONE_DAY)
    throw new Error("Kyan API data is stale (older than 24h)");

  return {
    dailyActiveUsers: data.activity.unique_traders,
  };
};

const adapter: SimpleAdapter = {
  version: 2,
  adapter: {
    [CHAIN.ARBITRUM]: {
      fetch,
      start: "2025-04-25",
      runAtCurrTime: true,
    },
  },
};

export default adapter;


================================================
FILE: active-users/sui.ts
================================================
import { Dependencies, SimpleAdapter, ProtocolType, FetchOptions } from "../adapters/types";
import { CHAIN } from "../helpers/chains";
import { queryAllium } from "../helpers/allium";

const fetch = async (_a: any, _b: any, options: FetchOptions) => {
    const start = new Date(options.fromTimestamp * 1000).toISOString()
    const end = new Date(options.toTimestamp * 1000).toISOString()

    const alliumQuery = `
    SELECT 
        COALESCE(count(distinct sender), 0) as user_count,
        COALESCE(sum(transactions_count), 0) as total_transaction_count
    FROM sui.raw.transaction_blocks
    where checkpoint_timestamp BETWEEN '${start}' AND '${end}'
  `;

    const alliumResult = await queryAllium(alliumQuery);

    return {
        dailyActiveUsers: alliumResult[0].user_count,
        dailyTransactionsCount: alliumResult[0].total_transaction_count,
    }
}

const adapter: SimpleAdapter = {
    version: 1,
    fetch,
    chains: [CHAIN.SUI],
    dependencies: [Dependencies.ALLIUM],
    isExpensiveAdapter: true,
    protocolType: ProtocolType.CHAIN,
    start: "2023-04-12",
};

export default adapter;


================================================
FILE: adapters/types.ts
================================================
import { Balances, ChainApi, util } from '@defillama/sdk';
import sdk from '@defillama/sdk';
export type Chain = string

const { blocks: { getChainBlocks } } = util

export type ChainBlocks = Awaited<ReturnType<typeof getChainBlocks>>

export type ChainEndpoints = {
  [chain: string]: string
}

export type FetchResultBase = {
  timestamp?: number;
  block?: number;
};

export type FetchResultV2 = {
  [key: string]: FetchResponseValue | undefined;
};

export type FetchResultGeneric = FetchResultBase & {
  [key: string]: FetchResponseValue | undefined;
}

export type FetchOptions = {
  createBalances: () => Balances;
  getBlock: (timestamp: number, chain: string, chainBlocks: ChainBlocks) => Promise<number>;
  getLogs: (params: FetchGetLogsOptions) => Promise<any[]>;
  streamLogs: (params: Parameters<typeof sdk.indexer.getLogs>[0] & {
    targetsFilter?: string[] | Set<string>
  }) => Promise<any[]>;
  toTimestamp: number;
  fromTimestamp: number;
  startOfDay: number;
  getFromBlock: () => Promise<number>;
  getToBlock: () => Promise<number>;
  chain: string,
  api: ChainApi,
  fromApi: ChainApi,
  toApi: ChainApi,
  startTimestamp: number,
  endTimestamp: number,
  getStartBlock: () => Promise<number>,
  getEndBlock: () => Promise<number>,
  dateString: string,
  preFetchedResults?: any,
  moduleUID: string,  // randomly generated unique identifier for the module, useful for caching (used only for batch processing dune queries for now)
  startOfDayId?: string, // id used in some subgraphs to identify daily data, usually it's the startOfDay timestamp divided by 86400
  metadata?: {
    [key: string]: any
    adapterType?: string
    protocolName?: string
    name?: string
    id?: string
    runType?: string
    isHourlyAdapter?: boolean
  }
}

export type FetchGetLogsOptions = {
  eventAbi?: string,
  topic?: string,
  target?: string,
  targets?: string[],
  onlyArgs?: boolean,
  fromBlock?: number,
  toBlock?: number,
  flatten?: boolean,
  cacheInCloud?: boolean,
  entireLog?: boolean,
  skipCacheRead?: boolean,
  skipCache?: boolean,
  skipIndexer?: boolean,
  topics?: string[],
  noTarget?: boolean,
  parseLog?: boolean,
}

export type Fetch = (
  timestamp: number,
  chainBlocks: ChainBlocks,
  options: FetchOptions,
) => Promise<FetchResult>;

export type FetchV2 = (
  options: FetchOptions,
) => Promise<FetchResultV2>;

export type IStartTimestamp = () => Promise<number>

export type BaseAdapterChainConfig = {
  start?: IStartTimestamp | number | string; // date can be in "YYYY-MM-DD" format -  indicates when the adapter can start fetching data
  deadFrom?: IStartTimestamp | number | string; // date can be in "YYYY-MM-DD" format - indicates when the adapter should stop fetching data
  fetch?: Fetch | FetchV2;
  runAtCurrTime?: boolean;
}

export const whitelistedBaseAdapterKeys = new Set([
  'start', 'deadFrom', 'fetch', 'runAtCurrTime'
])

export type BaseAdapter = {
  [chain: string]: BaseAdapterChainConfig
};

export enum ProtocolType {
  CHAIN = 'chain',
  PROTOCOL = 'protocol',
  COLLECTION = 'collection',
}

export enum Dependencies {
  DUNE = 'dune',
  ALLIUM = 'allium'
}


export type AdapterBase = {
  timetravel?: boolean
  isExpensiveAdapter?: boolean,
  dependencies?: Dependencies[]
  protocolType?: ProtocolType;
  version?: number;
  deadFrom?: string;
  allowNegativeValue?: boolean;
  doublecounted?: boolean;
  methodology?: string | IJSON<string>;
  breakdownMethodology?: Record<string, string | IJSON<string>>;
  fetch?: Fetch | FetchV2;
  chains?: (string | [string, BaseAdapterChainConfig])[]
  prefetch?: FetchV2;
  runAtCurrTime?: boolean;
  start?: IStartTimestamp | number | string; // date can be in "YYYY-MM-DD" format
  _randomUID?: string; // sometimes fee & volume adapters share the same code, we can optimize the run by caching the results - We stopped caching these results but left as is as it is used in batching dune queries, we can re-use it later if needed
  pullHourly?: boolean;
  skipBreakdownValidation?: boolean; // this is to skip the validation that requires at least one of dailyRevenue, dailySupplySideRevenue or dailyProtocolRevenue to be present when dailyFees is present, this is useful for some adapters that have a breakdown in their dailyFees but dont have a clear way to attribute the fees to either supply side or protocol revenue
}

export type SimpleAdapter = AdapterBase & {
  adapter?: BaseAdapter
}

export type Adapter = SimpleAdapter;
export type FetchResponseValue = string | number | Balances;

/**
 * Include here new adaptors types
 */

// VOLUME
export type FetchResultVolume = FetchResultBase & {
  dailyVolume?: FetchResponseValue
  shortOpenInterestAtEnd?: FetchResponseValue
  longOpenInterestAtEnd?: FetchResponseValue
  openInterestAtEnd?: FetchResponseValue
  dailyBridgeVolume?: FetchResponseValue
  dailyNormalizedVolume?: FetchResponseValue
  dailyActiveLiquidity?: FetchResponseValue
};

// FEES
export type FetchResultFees = FetchResultBase & {
  dailyFees?: FetchResponseValue;
  dailyUserFees?: FetchResponseValue;
  dailyRevenue?: FetchResponseValue;
  dailyProtocolRevenue?: FetchResponseValue;
  dailyHoldersRevenue?: FetchResponseValue;
  dailySupplySideRevenue?: FetchResponseValue;
  dailyBribesRevenue?: FetchResponseValue;
  dailyTokenTaxes?: FetchResponseValue;
  dailyOtherIncome?: FetchResponseValue;
  dailyOperatingIncome?: FetchResponseValue;
  dailyNetIncome?: FetchResponseValue;
};

// INCENTIVES
export type FetchResultIncentives = FetchResultBase & {
  tokenIncentives?: FetchResponseValue
};

// AGGREGATORS
export type FetchResultAggregators = FetchResultBase & {
  dailyVolume?: FetchResponseValue
};

export type FetchResultActiveUsers = FetchResultBase & {
  dailyActiveUsers?: FetchResponseValue;
  dailyTransactionsCount?: FetchResponseValue;
  dailyGasUsed?: FetchResponseValue;
};

export type FetchResultNewUsers = FetchResultBase & {
  dailyNewUsers?: FetchResponseValue;
};

// OPTIONS
export type FetchResultOptions = FetchResultBase & {
  dailyPremiumVolume?: FetchResponseValue
  dailyNotionalVolume?: FetchResponseValue
  shortOpenInterestAtEnd?: FetchResponseValue
  longOpenInterestAtEnd?: FetchResponseValue
  openInterestAtEnd?: FetchResponseValue
};


export enum AdapterType {
  FEES = 'fees',
  DEXS = 'dexs',
  INCENTIVES = 'incentives',
  AGGREGATORS = 'aggregators',
  DERIVATIVES = 'derivatives',
  OPTIONS = 'options',
  PROTOCOLS = 'protocols',
  OPEN_INTEREST = 'open-interest',
  // ROYALTIES = 'royalties',
  AGGREGATOR_DERIVATIVES = 'aggregator-derivatives',
  BRIDGE_AGGREGATORS = 'bridge-aggregators',
  NORMALIZED_VOLUME = 'normalized-volume',
  NFT_VOLUME = 'nft-volume',
  ACTIVE_USERS = 'active-users',
  NEW_USERS = 'new-users',
}

export type FetchResult = FetchResultVolume & FetchResultFees & FetchResultAggregators & FetchResultOptions & FetchResultIncentives & FetchResultActiveUsers & FetchResultNewUsers

export const whitelistedDimensionKeys = new Set([
  'startTimestamp', 'chain', 'timestamp', 'block',

  'dailyVolume', 'shortOpenInterestAtEnd', 'longOpenInterestAtEnd', 'openInterestAtEnd', 'dailyBridgeVolume', 'dailyNormalizedVolume', 'dailyActiveLiquidity',
  'totalFees', 'dailyFees', 'dailyUserFees', 'dailyRevenue', 'dailyProtocolRevenue', 'dailyHoldersRevenue', 'dailySupplySideRevenue', 'dailyBribesRevenue', 'dailyTokenTaxes',
  'tokenIncentives',
  'dailyOtherIncome', 'dailyOperatingIncome', 'dailyNetIncome',, 'dailyPremiumVolume', 'dailyNotionalVolume',
  'dailyActiveUsers', 'dailyNewUsers', 'dailyTransactionsCount', 'dailyGasUsed',
])
export const accumulativeKeySet = new Set([
  'totalVolume', 'totalBridgeVolume', 'tokenIncentives', 'totalPremiumVolume', 'totalNotionalVolume',
  'totalFees', 'totalRevenue', 'totalProtocolRevenue', 'totalSupplySideRevenue', 'totalUserFees', 'totalHoldersRevenue', 'totalOtherIncome', 'totalOperatingIncome', 'totalNetIncome'
])

// End of specific adaptors type

export interface IJSON<T> {
  [key: string]: T
}

export const ADAPTER_TYPES = Object.values(AdapterType).filter((adapterType: any) => adapterType !== AdapterType.PROTOCOLS)


================================================
FILE: adapters/utils/importAdapter.ts
================================================
import { getAdapterFromHelpers, listHelperProtocols } from "../../factory/registry";
import { SimpleAdapter } from "../types";

export interface ImportAdapterResult {
  adapter: SimpleAdapter;
  source: 'file' | 'factory';
  factoryName?: string;
}

/**
 * Import an adapter by trying file-based lookup first, then factory registry
 * @param adapterType - The adapter type (e.g., 'fees', 'dexs', 'normalized-volume')
 * @param protocolName - The protocol name
 * @param filePath - The file path to try importing from (relative to project root)
 * @returns ImportAdapterResult with adapter and source information
 * @throws Error if adapter is not found
 */
export async function importAdapter(
  adapterType: string,
  protocolName: string,
  filePath: string
): Promise<ImportAdapterResult> {
  try {
    // Try to import the individual file first
    const adapterModule = (await import(filePath)).default;
    return {
      adapter: adapterModule,
      source: 'file'
    };
  } catch (error) {
    // File doesn't exist, try to find it in factory registry
    const result = getAdapterFromHelpers(adapterType, protocolName);
    
    if (!result) {
      // Only show error if not found in registry either
      const errorMessage = `❌ Protocol "${protocolName}" not found in ${adapterType}/ or factory registry`;
      throw new Error(errorMessage);
    }
    
    return {
      adapter: result.adapter,
      source: 'factory',
      factoryName: result.factoryName
    };
  }
}


================================================
FILE: adapters/utils/runAdapter.ts
================================================
import * as sdk from '@defillama/sdk';
import { Balances, ChainApi, elastic, getEventLogs, getProvider } from '@defillama/sdk';
import * as _env from '../../helpers/env';
import { getBlock } from "../../helpers/getBlock";
import { getUniqStartOfTodayTimestamp } from '../../helpers/getUniSubgraphVolume';
import { getDateString } from '../../helpers/utils';
import { accumulativeKeySet, BaseAdapter, BaseAdapterChainConfig, ChainBlocks, Fetch, FetchGetLogsOptions, FetchOptions, FetchResponseValue, FetchV2, SimpleAdapter } from '../types';
import { CHAIN } from '../../helpers/chains';

// to trigger inclusion of the env.ts file
const _include_env = _env.getEnv('BITLAYER_RPC')

const ONE_DAY_IN_SECONDS = 60 * 60 * 24

function getUnixTimeNow() {
  return Math.floor(Date.now() / 1000)
}

function genUID(length: number = 10): string {
  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
  let result = ''
  for (let i = 0; i < length; i++) {
    result += characters.charAt(Math.floor(Math.random() * characters.length))
  }
  return result
}

function roundValue(value: any): number {
  const num = Number(value)
  const abs = Math.abs(num)
  if (abs < 1) return +num.toFixed(4)
  if (abs < 10) return +num.toFixed(2)
  return +num.toFixed(0)
}

// const adapterRunResponseCache = {} as any

export async function setModuleDefaults(module: SimpleAdapter) {
  const { chains = [], fetch, start, runAtCurrTime } = module
  const rootConfig: any = {}

  if (fetch) rootConfig.fetch = fetch
  if (start) rootConfig.start = start
  if (runAtCurrTime) rootConfig.runAtCurrTime = runAtCurrTime

  if (!module._randomUID) module._randomUID = genUID(10)

  let adapterObject: BaseAdapter = module.adapter || {}
  module.adapter = adapterObject

  if (!module.version) module.version = 1 // default to version 1
  module.runAtCurrTime = runAtCurrTime ?? Object.values(adapterObject).some((c: BaseAdapterChainConfig) => c.runAtCurrTime)

  if (!Array.isArray(chains))
    throw new Error(`Chains should be an array, got ${typeof chains} instead`)

  Object.keys(adapterObject).filter(chain => !chains.includes(chain)).forEach(chain => chains.push(chain))

  for (const cConfig of chains) {

    if (typeof cConfig === 'string') {
      setChainConfig(cConfig, rootConfig)
    } else if (Array.isArray(cConfig)) {
      const [chain, chainConfig] = cConfig
      if (typeof chain !== 'string' || typeof chainConfig !== 'object')
        throw new Error(`Invalid chain config: ${cConfig}`)
      setChainConfig(chain, { ...rootConfig, ...chainConfig })
    } else {
      throw new Error(`Invalid chain config: ${cConfig}`)
    }
  }

  // check if chain already has a given field before setting it, so we dont end up overwriting it with defaults
  function setChainConfig(chain: string, config: BaseAdapterChainConfig) {
    if (!adapterObject[chain]) adapterObject[chain] = {}
    const chainConfigObject = adapterObject[chain] as BaseAdapterChainConfig

    for (const key of Object.keys(config)) {
      if (!chainConfigObject.hasOwnProperty(key))
        (chainConfigObject as any)[key] = (config as any)[key]
    }
  }

}

export function isHourlyAdapter(module: SimpleAdapter) {
  const adapterVersion = module.version
  return adapterVersion === 2 && (module as any).pullHourly === true
}

export function isPlainDateArg(rawTimeArg?: string) {
  return !!rawTimeArg && /^\d{4}-\d{2}-\d{2}$/.test(rawTimeArg)
}

type AdapterRunOptions = {
  deadChains?: Set<string>, // chains that are dead and should be skipped
  module: SimpleAdapter,
  endTimestamp: number,
  name?: string,
  isTest?: boolean, // we print run response to console in test mode
  withMetadata?: boolean, // if true, returns metadata with the response
  cacheResults?: boolean, // deprecated, if true, caches the results in adapterRunResponseCache
  runWindowInSeconds?: number, // time window for which the adapter should run, default is 1 day
  metadata?: {
    [key: string]: any
    adapterType?: string
    protocolName?: string
    name?: string
    id?: string
    runType?: string
    isHourlyAdapter?: boolean
  }
}

export default async function runAdapter(options: AdapterRunOptions) {
  const { module,} = options
  if (!module) throw new Error('Module is not set')

  setModuleDefaults(module)

  return _runAdapter(options)
}

const startOfDayIdCache: { [key: string]: string } = {}

function getStartOfDayId(timestamp: number): string {
  if (!startOfDayIdCache[timestamp]) {
    startOfDayIdCache[timestamp] = '' + Math.floor(timestamp / 86400)
  }
  return startOfDayIdCache[timestamp]
}


async function _runAdapter({
  module, endTimestamp, name,
  isTest = false,
  withMetadata = false,
  deadChains = new Set(),
  runWindowInSeconds = ONE_DAY_IN_SECONDS,
  metadata = {},
}: AdapterRunOptions) {
  const cleanCurrentDayTimestamp = endTimestamp
  const adapterVersion = module.version
  const moduleUID = module._randomUID
  // const isHourly = isHourlyAdapter(module)
  // const WINDOW_SECONDS = isHourly ? 60 * 60 : ONE_DAY_IN_SECONDS
  const WINDOW_SECONDS = runWindowInSeconds

  const chainBlocks: ChainBlocks = {} // we need it as it is used in the v1 adapters
  const { prefetch, allowNegativeValue = false, } = module
  let adapterObject = module.adapter
  if (!adapterObject)
    throw new Error('Adapter object is not set')

  if ((module as any).breakdown) throw new Error('Breakdown adapters are deprecated, migrate it to use simple adapter')
  const closeToCurrentTime = Math.trunc(Date.now() / 1000) - cleanCurrentDayTimestamp < 24 * 60 * 60 // 12 hours
  const chains = Object.keys(adapterObject)
  if (chains.some(c => !c) || chains.includes('undefined')) {
    throw new Error(`Invalid chain labels: ${chains.filter(c => !c || c === 'undefined').join(', ')}`)
  }

  const badChainNames = chains.filter(chain => !/^[a-z0-9_]+$/.test(chain));
  if (badChainNames.length) {
    throw new Error(`
    Invalid chain names: ${badChainNames.join(', ')}
    Chain names should only contain lowercase letters, numbers and underscores
    `)
  }

  const validStart = {} as {
    [chain: string]: {
      canRun: boolean,
      startTimestamp: number
      endTimestamp?: number
    }
  }
  await Promise.all(chains.map(setChainValidStart))

  // Run prefetch if provided
  let preFetchedResults: any = null;
  if (typeof prefetch === 'function') {
    const firstChain = chains.find(chain => validStart[chain]?.canRun);
    if (firstChain) {
      const options = await getOptionsObject({ timestamp: cleanCurrentDayTimestamp, chain: firstChain, chainBlocks, moduleUID, windowSize: WINDOW_SECONDS, });
      preFetchedResults = await prefetch(options);
    }
  }

  const aggregated = {} as any
  let breakdownByToken: any = {}
  let breakdownByLabelByChain: any = {}
  let breakdownByLabel: any = {}

  const response = await Promise.all(chains.filter(chain => {
    const res = validStart[chain]
    if (isTest && !res.canRun) {
      if (res.endTimestamp)
        console.log(`Skipping ${chain} because the adapter ended at ${new Date(res.endTimestamp! * 1e3).toUTCString()} \n\n`)
      else
        console.log(`Skipping ${chain} because the configured start time is ${new Date(res.startTimestamp * 1e3).toUTCString()} \n\n`)
    }
    return validStart[chain]?.canRun && !deadChains.has(chain)
  }).map(getChainResult))

  Object.entries(breakdownByToken).forEach(([chain, data]: any) => {
    if (typeof data !== 'object' || data === null || !Object.keys(data).length) delete breakdownByToken[chain]
  })

  if (Object.keys(breakdownByToken).length === 0) breakdownByToken = undefined
  if (Object.keys(breakdownByLabel).length === 0) breakdownByLabel = undefined
  if (Object.keys(breakdownByLabelByChain).length === 0) breakdownByLabelByChain = undefined

  // if the special chain_global metric is present, it holds the aggregated value for the metric, so we move it to the value field and remove it from the chains object to avoid double counting in the aggregated value
  if (chains.includes(CHAIN.CHAIN_GLOBAL)) {
    Object.keys(aggregated).forEach(metricType => {
      const metricObject = aggregated[metricType]
      if (metricObject.chains[CHAIN.CHAIN_GLOBAL] !== undefined) {
        metricObject.value = metricObject.chains[CHAIN.CHAIN_GLOBAL]
        delete metricObject.chains[CHAIN.CHAIN_GLOBAL]
      }
    })
  }

  const adaptorRecordV2JSON: any = {
    aggregated,
    breakdownByLabel,
    breakdownByLabelByChain,
    timestamp: response.find(i => i?.timestamp)?.timestamp
  }


  if (withMetadata) return { response, adaptorRecordV2JSON, breakdownByToken }
  return response

  async function getChainResult(chain: string) {
    const startTime = getUnixTimeNow()
    const metadata = {
      application: "dimensions",
      type: 'protocol-chain',
      name,
      chain,
      version: adapterVersion,
    }

    const fetchFunction = adapterObject![chain].fetch
    try {
      const options = await getOptionsObject({ timestamp: cleanCurrentDayTimestamp, chain, chainBlocks, moduleUID, windowSize: WINDOW_SECONDS, })
      if (preFetchedResults !== null) {
        options.preFetchedResults = preFetchedResults;
      }

      let result: any
      if (adapterVersion === 1) {
        result = await (fetchFunction as Fetch)(options.toTimestamp, chainBlocks, options);
      } else if (adapterVersion === 2) {
        result = await (fetchFunction as FetchV2)(options);
        result.timestamp = options.toTimestamp
      } else {
        throw new Error(`Adapter version ${adapterVersion} not supported`)
      }
      const ignoreKeys = ['timestamp', 'block']
      const improbableValue = 2e11 // 200 billion

      // validate and inject missing record if any
      validateAdapterResult(result, module)

      // add missing metrics if need
      addMissingMetrics(chain, result)

      for (const [recordType, value] of Object.entries(result)) {
        if (ignoreKeys.includes(recordType)) continue;
        if (value === undefined || value === null) { // dont store undefined or null values
          delete result[recordType]
          continue;
        }
        // if (value === undefined || value === null) throw new Error(`Value: ${value} ${recordType} is undefined or null`)
        if (value instanceof Balances) {
          const { labelBreakdown, usdTvl, usdTokenBalances, rawTokenBalances } = await value.getUSDJSONs()
          // if (usdTvl > 1e6) value.debug()
          result[recordType] = usdTvl
          breakdownByToken[chain] = breakdownByToken[chain] || {}
          breakdownByToken[chain][recordType] = { usdTvl, usdTokenBalances, rawTokenBalances }

          if (labelBreakdown) {
            if (!breakdownByLabel[recordType]) breakdownByLabel[recordType] = {}
            if (!breakdownByLabelByChain[recordType]) breakdownByLabelByChain[recordType] = {}

            const aggData = breakdownByLabel[recordType]
            const breakData = breakdownByLabelByChain[recordType]

            for (let [label, labelValue] of Object.entries(labelBreakdown)) {
              labelValue = roundValue(labelValue)
              aggData[label] = (aggData[label] || 0) + labelValue
              if (!breakData[label]) breakData[label] = {}
              breakData[label][chain] = labelValue
            }
          }
        }

        result[recordType] = roundValue(result[recordType])
        if (!aggregated[recordType]) aggregated[recordType] = { value: 0, chains: {} }
        aggregated[recordType].value += result[recordType]
        aggregated[recordType].chains[chain] = result[recordType]

        let errorPartialString = `| ${chain}-${recordType}: ${value}`

        if (isNaN(result[recordType] as number)) throw new Error(`value is NaN ${errorPartialString}`)
        if (result[recordType] < 0 && !allowNegativeValue) throw new Error(`value is negative ${errorPartialString}`)
        if (result[recordType] > improbableValue) {
          let showError = accumulativeKeySet.has(recordType) ? result[recordType] > improbableValue * 10 : true
          if (showError)
            throw new Error(`value is too damn high ${errorPartialString}`)
        }
      }

      const endTime = getUnixTimeNow()
      await elastic.addRuntimeLog({ runtime: endTime - startTime, success: true, metadata, })

      return {
        chain,
        startTimestamp: validStart[chain].startTimestamp,
        ...result
      }
    } catch (error) {

      const endTime = getUnixTimeNow()

      try {
        await elastic.addErrorLog({ error, metadata, errorString: error?.toString(), } as any)
        await elastic.addRuntimeLog({ runtime: endTime - startTime, success: false, metadata, });

        (error as any).chain = chain
      } catch { }
      throw error
    }
  }

  async function getOptionsObject({ timestamp, chain, chainBlocks, windowSize = ONE_DAY_IN_SECONDS, moduleUID = genUID(10) }: { timestamp: number, chain: string, chainBlocks: ChainBlocks, windowSize?: number, moduleUID?: string }): Promise<FetchOptions> {
    const withinTwoHours = Math.trunc(Date.now() / 1000) - timestamp < 24 * 60 * 60 // 24 hours
    const createBalances: () => Balances = () => {
      let _chain = chain
      // workaround for mismatch in chain names between dimensions repo and rest of the codebase
      switch (chain) {
        case 'bitlayer': _chain = 'btr'; break;
      }
      return new Balances({ timestamp: closeToCurrentTime ? undefined : timestamp, chain: _chain })
    }
    const toTimestamp = timestamp - 1
    const fromTimestamp = toTimestamp - windowSize
    const getFromBlock = async () => await getBlock(fromTimestamp, chain)
    const getToBlock = async () => await getBlock(toTimestamp, chain, chainBlocks)
    const problematicChains = new Set(['sei',])

    const getLogs = async ({ target, targets, onlyArgs = true, fromBlock, toBlock, flatten = true, eventAbi, topics, topic, cacheInCloud = false, skipCacheRead = false, entireLog = false, skipIndexer, noTarget, ...rest }: FetchGetLogsOptions) => {


      if (problematicChains.has(chain)) throw new Error(`getLogs is disabled for ${chain} chain due to frequent timeouts`)

      fromBlock = fromBlock ?? await getFromBlock()
      toBlock = toBlock ?? await getToBlock()
      const requestCount = targets ? targets.length : 1
      if (api) api.addStat('logsRequests', requestCount)

      return getEventLogs({ ...rest, fromBlock, toBlock, chain, target, targets, onlyArgs, flatten, eventAbi, topics, topic, cacheInCloud, skipCacheRead, entireLog, skipIndexer, noTarget })
    }


    const streamLogs = async (params: Parameters<typeof sdk.indexer.getLogs>[0] & {
      targetsFilter?: string[] | Set<string>
    }) => {


      if (!sdk.indexer.supportedChainSet2.has(chain)) {
        throw new Error(`streamLogs is not supported for ${chain} chain`)
      }

      const origProcessor = params.processor
      let targetsFilter = params.targetsFilter

      if (Array.isArray(targetsFilter))
        targetsFilter = new Set(targetsFilter.map((t) => t.toLowerCase()))

      if (!params.hasOwnProperty('fromBlock')) params.fromBlock = await getFromBlock()
      if (!params.hasOwnProperty('toBlock')) params.toBlock = await getToBlock()
      if (!params.hasOwnProperty('all')) params.all = true
      if (!params.hasOwnProperty('clientStreaming')) params.clientStreaming = true
      if (!params.hasOwnProperty('collect')) params.collect = false
      if (!params.hasOwnProperty('onlyArgs') && !params.entireLog) params.onlyArgs = true

      if (params.hasOwnProperty('processor')) params.processor = (chunk: any | any[]) => {
        let swapLogs = Array.isArray(chunk) ? chunk : [chunk]

        if (targetsFilter)
          swapLogs = swapLogs.filter((log) => targetsFilter!.has(log.address.toLowerCase()))


        origProcessor!(swapLogs)
      }


      const requestCount = params.targets ? params.targets.length : 1
      if (api) api.addStat('streamLogs', requestCount)

      return sdk.indexer.getLogs({ ...params, chain })
    }
    // we intentionally add a delay to avoid fetching the same block before it is cached
    // await randomDelay()

    let fromBlock, toBlock
    // we fetch current block and previous blocks only for evm chains/ chains we have RPC for
    if (getProvider(chain)) {
      fromBlock = await getFromBlock()
      toBlock = await getToBlock()
    }
    const fromApi = new ChainApi({ chain, timestamp: fromTimestamp, block: fromBlock })
    const api = new ChainApi({ chain, timestamp: withinTwoHours ? undefined : timestamp, block: toBlock })
    const startOfDay = getUniqStartOfTodayTimestamp(new Date(toTimestamp * 1000))
    const startTimestamp = fromTimestamp
    const endTimestamp = toTimestamp + 1
    const getStartBlock = getFromBlock
    const getEndBlock = getToBlock
    const toApi = api

    api.getLogs = () => { throw new Error('api.getLogs is disabled, use getLogs from options object instead') }
    fromApi.getLogs = () => { throw new Error('fromApi.getLogs is disabled, use getLogs from options object instead') }

    return {
      createBalances,
      getBlock,
      toTimestamp,
      fromTimestamp,
      getFromBlock,
      getToBlock,
      getLogs,
      chain,
      fromApi,
      toApi,
      api,
      startOfDay,
      startTimestamp,
      endTimestamp,
      getStartBlock,
      getEndBlock,
      dateString: getDateString(startOfDay),
      moduleUID,
      startOfDayId: getStartOfDayId(startOfDay),
      streamLogs,
      metadata,
    }
  }

  // code for random 1-4 second delay
  async function randomDelay() {
    const delay = Math.floor(Math.random() * 4) + 1
    return new Promise((resolve) => setTimeout(resolve, delay * 1000))
  }

  async function setChainValidStart(chain: string) {
    const cleanPreviousDayTimestamp = cleanCurrentDayTimestamp - ONE_DAY_IN_SECONDS
    let _start = adapterObject![chain]?.start ?? 0
    // Use root-level deadFrom if set, otherwise use chain-specific deadFrom
    let _end = module.deadFrom ?? adapterObject![chain]?.deadFrom
    if (typeof _start === 'string') _start = new Date(_start).getTime() / 1000
    if (typeof _end === 'string') _end = new Date(_end).getTime() / 1000
    // if (_start === undefined) return;

    // Only check deadFrom if it's explicitly set (not undefined)
    if (_end !== undefined && typeof _end === 'number' && _end > 0 && _end < cleanPreviousDayTimestamp) {
      validStart[chain] = {
        canRun: false,
        startTimestamp: _start as number,
        endTimestamp: _end as number,
      }
      return;
    }

    if (typeof _start === 'number') {
      validStart[chain] = {
        canRun: _start <= cleanPreviousDayTimestamp,
        startTimestamp: _start
      }
      return;
    }

    const defaultStart = Math.trunc(Date.now() / 1000)
    if (closeToCurrentTime) {// intentionally set to true to allow for backfilling
      validStart[chain] = {
        canRun: true,
        startTimestamp: defaultStart
      }
      return;
    }

    // if _start is an async function that returns timestamp
    const start = await (_start as any)().catch(() => {
      console.error(`Failed to get start time for ${name} ${adapterVersion} ${chain}`)
      return defaultStart
    })
    validStart[chain] = {
      canRun: typeof start === 'number' && start <= cleanPreviousDayTimestamp,
      startTimestamp: start
    }
  }

}

function createBalanceFrom(options: { chain: string, timestamp: number | undefined, amount: FetchResponseValue }): Balances {
  const { chain, timestamp, amount } = options

  const balance = new Balances({ chain, timestamp })
  if (amount) {
    if (typeof amount === 'number' || typeof amount === 'string') {
      balance.addUSDValue(amount)
    } else {
      balance.addBalances(amount)
    }
  }
  return balance;
}

function subtractBalance(options: { balance: Balances, amount: FetchResponseValue }) {
  const { balance, amount } = options
  if (amount) {
    if (typeof amount === 'number' || typeof amount === 'string') {
      const otherBalance = createBalanceFrom({ chain: balance.chain, timestamp: balance.timestamp, amount })
      balance.subtract(otherBalance)
    } else {
      balance.subtract(amount)
    }
  }
}

function validateAdapterResult(result: any, module: any) {
  // validate metrics
  //  this is to ensure that we do this validation only for the new adapters
  if (result.dailyFees && result.dailyFees instanceof Balances && result.dailyFees.hasBreakdownBalances()) {
    // should include atleast SupplySideRevenue or ProtocolRevenue or Revenue
    if (!result.dailySupplySideRevenue && !result.dailyProtocolRevenue && !result.dailyRevenue && !module?.skipBreakdownValidation) {
      throw Error('found dailyFees record but missing all dailyRevenue, dailySupplySideRevenue, dailyProtocolRevenue records')
    }
  }
}

function addMissingMetrics(chain: string, result: any) {
  // add missing metrics for Balances which has breakdown labels only
  //  this is to ensure that we dont change behavior of existing adapters
  if (result.dailyFees && result.dailyFees instanceof Balances && result.dailyFees.hasBreakdownBalances()) {

    // if we have supplySideRevenue but missing revenue, add revenue = fees - supplySideRevenue
    if (result.dailySupplySideRevenue && result.dailyRevenue === undefined) {
      result.dailyRevenue = createBalanceFrom({ chain, timestamp: result.timestamp, amount: result.dailyFees })
      subtractBalance({ balance: result.dailyRevenue, amount: result.dailySupplySideRevenue })
    }

  }
}


================================================
FILE: aggregator-derivatives/.gitkeep
================================================


================================================
FILE: aggregator-derivatives/GUIDELINES.md
================================================
# Derivatives Aggregator Guidelines

These guidelines apply to all adapters in the `aggregator-derivatives/` directory.

## Required Dimensions

| Dimension | Required | Description |
|-----------|----------|-------------|
| `dailyVolume` | YES | Perpetual/derivatives trading volume (TAKER volume only) |

## What is a Derivatives Aggregator?

Derivatives aggregators route perpetual and derivatives trades through multiple protocols to find optimal execution.

## Volume Calculation

- Track derivatives volume ROUTED through the aggregator
- **Track TAKER volume ONLY** - do NOT double-count by adding both taker and maker volumes
- Include perpetual swaps, futures, and other derivative products
- Do NOT double-count volume already tracked in underlying derivatives protocol adapters

## Optional Dimensions

| Dimension | Description |
|-----------|-------------|
| `openInterestAtEnd` | Total open interest at period end |
| `longOpenInterestAtEnd` | Long positions open interest |
| `shortOpenInterestAtEnd` | Short positions open interest |

## Data Sources

1. **On-chain logs** - Track aggregator contract events
2. **Protocol APIs** - When on-chain tracking is complex
3. **Query engines** - For complex aggregation analysis

## Fees/Revenue Tracking

If the aggregator charges fees and this adapter returns fee/revenue dimensions, follow the guidelines in `fees/GUIDELINES.md`. Include:
- `dailyFees` - All fees collected
- `dailyRevenue` - Aggregator's portion
- `dailySupplySideRevenue` - Partner/integration fees

## Common Mistakes to Avoid

1. Double-counting volume with underlying derivatives adapters
2. Mixing spot and derivatives volume
3. Not tracking all chains/protocols aggregated
4. Missing open interest tracking when available
5. Counting both taker AND maker volume (should only count taker)


================================================
FILE: aggregator-derivatives/defiapp/index.ts
================================================
// DEFI_APP_BUILDER_ADDRESS = '0x1922810825C90F4270048B96Da7b1803CD8609Ef';

import { FetchResult, SimpleAdapter } from "../../adapters/types";
import { httpGet } from "../../utils/fetchURL";
import { CHAIN } from "../../helpers/chains";
import { getEnv } from "../../helpers/env";

const tsToISO = (ts: number) => new Date(ts * 1e3).toISOString();

const fetch = async (_: any, _b: any, options: any): Promise<FetchResult> => {
  // 2-day delay: Hyperliquid builder volumes are reported to DefiApp with a 2-day lag.
  const startDate = options.startOfDay - (24 * 3600);
  const endDate = options.startOfDay;

  const response = await httpGet(`https://api.defi.app/api/stats/volume-perps/between?startTime=${tsToISO(startDate)}&endTime=${tsToISO(endDate)}`, {
    headers: {
      "Content-Type": "application/json",
      "X-API-KEY": getEnv('DEFIAPP_API_KEY'),
      User: "defillama",
    },
  });
  const dailyVolume = response.totalPerpsVolumeUsd;

  return {
    dailyVolume,
  };
};

const adapter: SimpleAdapter = {
  version: 1,
  adapter: {
    [CHAIN.HYPERLIQUID]: {
      fetch,
      start: "2025-05-01", // May 1st, 2025
    },
  },
  doublecounted: true,
};

export default adapter;


================================================
FILE: aggregator-derivatives/flat-money/helper.ts
================================================
import {CHAIN} from "../../helpers/chains";
import {gql, GraphQLClient} from "graphql-request";

export const CONFIG = {
  [CHAIN.BASE]: {
    startTimestamp: 1721161357,
    endpoint: "https://gateway-arbitrum.network.thegraph.com/api/c26ffec48be89fe71a1af11eb1ae5776/subgraphs/id/HnQeWxwtLY5ZnBS39GmYt84gcHToG7cqjb8KVPApm89h",
    decimals: {
      price: 18,
      amount: 18,
    }
  },
  [CHAIN.OPTIMISM]: {
    startTimestamp: 1744830648,
    endpoint: "https://gateway-arbitrum.network.thegraph.com/api/c26ffec48be89fe71a1af11eb1ae5776/subgraphs/id/C5B1KnswowpwwVGNCVw8Ph7X4rqEuyoZZN7UWjjckEtm",
    decimals: {
      price: 18,
      amount: 8,
    }
  },
  [CHAIN.ARBITRUM]: {
    startTimestamp: 1744830648,
    endpoint: "https://gateway-arbitrum.network.thegraph.com/api/c26ffec48be89fe71a1af11eb1ae5776/subgraphs/id/4Ttk2WinVSCURA9vVZ5tDz7TwG7tEDkQbFbGur5qxoWG",
    decimals: {
      price: 18,
      amount: 8,
    }
  },
};

export const fetchVolume = async (chainId: CHAIN, query: string, volumeField: string, startTimestamp: number, endTimestamp: number) => {
  const { endpoint } = CONFIG[chainId];

  let allData = [];
  let skip = 0;
  const batchSize = 1000;

  while (true) {
    try {
      const data = await new GraphQLClient(endpoint).request(query, {
        startTimestamp,
        endTimestamp,
        first: batchSize,
        skip
      });

      const entries = data[volumeField];
      if (entries.length === 0) break;
      allData = allData.concat(entries);
      skip += batchSize;

      if (entries.length < batchSize) break;

      await sleep(500);
    } catch (e) {
      throw new Error(`Error fetching data for chain ${chainId}: ${e.message}`);
    }
  }
  return allData;
};

export const calculateOpensVolume = (data: any, amountDecimals: number): number =>
  data.reduce((acc: number, item: any) => {
    const priceFormatted = Number(item.entryPrice) / 1e18;
    const marginFormatted = Number(item.margin) / 10 ** amountDecimals;
    const sizeFormatted = Number(item.size) / 10 ** amountDecimals;
    return acc + (marginFormatted + sizeFormatted) * priceFormatted;
  }, 0);

export const calculateAdjustsVolume = (data: any, amountDecimals: number): number =>
  data.reduce((acc: number, item: any) => {
    const priceFormatted = Number(item.adjustPrice) / 1e18;
    const marginDeltaFormatted = Number(Math.abs(item.marginDelta)) / 10 ** amountDecimals;
    const sizeDeltaFormatted = Number(Math.abs(item.sizeDelta)) / 10 ** amountDecimals;
    return acc + (marginDeltaFormatted + sizeDeltaFormatted) * priceFormatted;
  }, 0);

export const calculateClosesVolume = (data: any, amountDecimals: number): number =>
  data.reduce((acc: number, item: any) => {
    const priceFormatted = Number(item.closePrice) / 1e18;
    const settledMarginFormatted = Number(item.settledMargin) / 10 ** amountDecimals;
    const sizeFormatted = Number(item.size) / 10 ** amountDecimals;
    return acc + (settledMarginFormatted + sizeFormatted) * priceFormatted;
  }, 0);

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

export const leverageOpensQuery = gql`
    query leverageOpens($startTimestamp: BigInt!, $endTimestamp: BigInt!) {
        leverageOpens(
            where: { blockTimestamp_gte: $startTimestamp, blockTimestamp_lte: $endTimestamp },
            first: 1000, orderBy: blockTimestamp, orderDirection: asc
        ) {
            margin,
            size,
            entryPrice
        }
    }`;

export const leverageAdjustsQuery = gql`
    query leverageAdjusts($startTimestamp: BigInt!, $endTimestamp: BigInt!) {
        leverageAdjusts(
            where: { blockTimestamp_gte: $startTimestamp, blockTimestamp_lte: $endTimestamp },
            first: 1000, orderBy: blockTimestamp, orderDirection: asc
        ) {
            marginDelta,
            sizeDelta,
            adjustPrice
        }
    }`;

export const leverageClosesQuery = gql`
    query leverageCloses($startTimestamp: BigInt!, $endTimestamp: BigInt!) {
        leverageCloses(
            where: { blockTimestamp_gte: $startTimestamp, blockTimestamp_lte: $endTimestamp },
            first: 1000, orderBy: blockTimestamp, orderDirection: asc
        ) {
            settledMargin,
            size,
            closePrice
        }
    }`;

================================================
FILE: aggregator-derivatives/flat-money/index.ts
================================================
import { SimpleAdapter, FetchV2, FetchResultV2 } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import {
  calculateAdjustsVolume,
  calculateClosesVolume,
  calculateOpensVolume, CONFIG,
  fetchVolume, leverageAdjustsQuery, leverageClosesQuery,
  leverageOpensQuery
} from "./helper";


const fetch: FetchV2 = async ({ startTimestamp, endTimestamp, chain }): Promise<FetchResultV2> => {
  const config = CONFIG[chain];
  if (!config) throw new Error(`Unsupported chain: ${chain}`);

  const { decimals, } = config;

  const [
    dailyOpensData,
    dailyAdjustsData,
    dailyClosesData,
  ] = await Promise.all([
    fetchVolume(chain as CHAIN, leverageOpensQuery, "leverageOpens", startTimestamp, endTimestamp),
    fetchVolume(chain as CHAIN, leverageAdjustsQuery, "leverageAdjusts", startTimestamp, endTimestamp),
    fetchVolume(chain as CHAIN, leverageClosesQuery, "leverageCloses", startTimestamp, endTimestamp),
  ]);

  return {
    dailyVolume: calculateOpensVolume(dailyOpensData, decimals.amount)
        + calculateAdjustsVolume(dailyAdjustsData, decimals.amount)
        + calculateClosesVolume(dailyClosesData, decimals.amount),
  };
};


const adapter: SimpleAdapter = {
  adapter: Object.fromEntries(
    Object.entries(CONFIG).map(([chain, config]) => [
      chain,
      { fetch, start: config.startTimestamp }
    ])
  ),
  version: 2,
  pullHourly: true,
};


export default adapter;


================================================
FILE: aggregator-derivatives/flat-money-v1/index.ts
================================================
import { SimpleAdapter, FetchV2, FetchResultV2 } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import {
  calculateAdjustsVolume, calculateClosesVolume,
  calculateOpensVolume, CONFIG,
  fetchVolume,
  leverageAdjustsQuery,
  leverageClosesQuery,
  leverageOpensQuery
} from "../flat-money/helper";




const fetch: FetchV2 = async ({ startTimestamp, endTimestamp, chain }): Promise<FetchResultV2> => {
  const config = CONFIG[chain];
  if (!config) throw new Error(`Unsupported chain: ${chain}`);

  const { decimals, } = config;

  const [
    dailyOpensData,
    dailyAdjustsData,
    dailyClosesData,
  ] = await Promise.all([
    fetchVolume(chain as CHAIN, leverageOpensQuery, "leverageOpens", startTimestamp, endTimestamp),
    fetchVolume(chain as CHAIN, leverageAdjustsQuery, "leverageAdjusts", startTimestamp, endTimestamp),
    fetchVolume(chain as CHAIN, leverageClosesQuery, "leverageCloses", startTimestamp, endTimestamp),
  ]);

  return {
    dailyVolume: calculateOpensVolume(dailyOpensData, decimals.amount)
        + calculateAdjustsVolume(dailyAdjustsData, decimals.amount)
        + calculateClosesVolume(dailyClosesData, decimals.amount),
  };
};



const adapter: SimpleAdapter = {
  adapter: Object.fromEntries(
    Object.entries(CONFIG).filter(([chain, config]) => chain === CHAIN.BASE).map(([chain, config]) => [
      chain,
      { fetch, start: config.startTimestamp }
    ])
  ),
  pullHourly: true,
  version: 2
};


export default adapter;


================================================
FILE: aggregator-derivatives/flat-money-v2/index.ts
================================================
import { SimpleAdapter, FetchV2, FetchResultV2 } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import {
  calculateAdjustsVolume, calculateClosesVolume,
  calculateOpensVolume, CONFIG,
  fetchVolume,
  leverageAdjustsQuery,
  leverageClosesQuery,
  leverageOpensQuery
} from "../flat-money/helper";

const fetch: FetchV2 = async ({ startTimestamp, endTimestamp, chain }): Promise<FetchResultV2> => {
  const config = CONFIG[chain];
  if (!config) throw new Error(`Unsupported chain: ${chain}`);

  const { decimals, } = config;

  const [
    dailyOpensData,
    dailyAdjustsData,
    dailyClosesData,
  ] = await Promise.all([
    fetchVolume(chain as CHAIN, leverageOpensQuery, "leverageOpens", startTimestamp, endTimestamp),
    fetchVolume(chain as CHAIN, leverageAdjustsQuery, "leverageAdjusts", startTimestamp, endTimestamp),
    fetchVolume(chain as CHAIN, leverageClosesQuery, "leverageCloses", startTimestamp, endTimestamp),
  ]);

  return {
    dailyVolume: calculateOpensVolume(dailyOpensData, decimals.amount)
        + calculateAdjustsVolume(dailyAdjustsData, decimals.amount)
        + calculateClosesVolume(dailyClosesData, decimals.amount),
  };
};



const adapter: SimpleAdapter = {
  adapter: Object.fromEntries(
    Object.entries(CONFIG).filter(([chain, config]) => chain === CHAIN.OPTIMISM || chain === CHAIN.ARBITRUM).map(([chain, config]) => [
      chain,
      { fetch, start: config.startTimestamp }
    ])
  ),
  pullHourly: true,
  version: 2
};


export default adapter;


================================================
FILE: aggregator-derivatives/kwenta/index.ts
================================================
import { SimpleAdapter, FetchV2, FetchResultV2 } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { gql, GraphQLClient } from "graphql-request";

const PROVIDER_CONFIG = {
  [CHAIN.BASE]: {
    startTimestamp: 1702943900,
    start: '2023-12-18',
    endpoint: "https://subgraph.satsuma-prod.com/404b0c87e4a3/kwenta/base-perps-v3/api",
    query: gql`
      query aggregateStats($startTimestamp: BigInt!, $endTimestamp: BigInt!) {
        perpsV3AggregateStats(
          where: { timestamp_gte: $startTimestamp, timestamp_lte: $endTimestamp, period: "86400", marketId: "0" },
          first: 9999, orderBy: timestamp, orderDirection: asc
        ) { timestamp, volume }
      }`,
    volumeField: "perpsV3AggregateStats"
  },
  [CHAIN.OPTIMISM]: {
    startTimestamp: 1671494100,
    start: '2022-12-19',
    endpoint: "https://subgraph.satsuma-prod.com/404b0c87e4a3/kwenta/optimism-perps/api",
    query: gql`
      query aggregateStats($startTimestamp: BigInt!, $endTimestamp: BigInt!) {
        futuresAggregateStats(
          where: { timestamp_gte: $startTimestamp, timestamp_lte: $endTimestamp, asset: "0x", period: "86400" },
          first: 9999, orderBy: timestamp, orderDirection: asc
        ) { timestamp, volume }
      }`,
    volumeField: "futuresAggregateStats"
  },
  [CHAIN.ARBITRUM]: {
    startTimestamp: 1696032000,
    start: '2023-09-30',
    endpoint: "https://subgraph.perennial.finance/arbitrum",
    query: gql`
      query aggregateStats($startTimestamp: BigInt!, $endTimestamp: BigInt!) {
        marketAccumulations(
          where: { and: [{ bucket: daily, timestamp_gte: $startTimestamp, timestamp_lte: $endTimestamp },
                         { or: [{ shortNotional_gt: "0" }, { longNotional_gt: "0" }] }] },
          first: 9999, orderBy: timestamp, orderDirection: asc      
        ) { timestamp, longNotional, shortNotional }
      }`,
    volumeField: "marketAccumulations"
  }
};

const fetchVolume = async (chainId: CHAIN, startTimestamp: number, endTimestamp: number) => {
  const { endpoint, query } = PROVIDER_CONFIG[chainId];
  try {
    return await new GraphQLClient(endpoint).request(query, { startTimestamp, endTimestamp });
  } catch (e) {
    throw new Error(`Failed to fetch data for chain ${chainId}: ${e.message}`);
  }
};

const calculateVolume = (data: any, volumeField: string): number =>
  data[volumeField].reduce((acc: number, item: any) => 
    acc + (volumeField === "marketAccumulations"
      ? (Number(item.longNotional) + Number(item.shortNotional)) / 1e6
      : Number(item.volume) / 1e18
    ), 0);

const fetch: FetchV2 = async ({ startTimestamp, endTimestamp, chain }): Promise<FetchResultV2> => {
  const config = PROVIDER_CONFIG[chain];
  if (!config) throw new Error(`Unsupported chain: ${chain}`);

  const dailyData = await fetchVolume(chain as CHAIN, startTimestamp || (endTimestamp - 86400), endTimestamp);

  return {
    timestamp: endTimestamp,
    dailyVolume: calculateVolume(dailyData, config.volumeField).toString(),
  };
};

const adapter: SimpleAdapter = {
  adapter: Object.fromEntries(
    Object.entries(PROVIDER_CONFIG).map(([chain, config]) => [
      chain,
      { fetch, start: config.start }
    ])
  ),
  pullHourly: true,
  version: 2,
  deadFrom: '2025-08-26',
};

export default adapter;


================================================
FILE: aggregator-derivatives/mux-protocol-agge.ts
================================================
import fetchURL from "../utils/fetchURL"
import { Chain, FetchOptions } from "../adapters/types";
import { CHAIN } from "../helpers/chains";

const historicalVolumeEndpoint = "https://stats.mux.network/api/public/dashboard/13f401da-31b4-4d35-8529-bb62ca408de8/dashcard/389/card/306"

interface IVolumeall {
  volume: string;
  time: string;
  title: string;
}

const chainsMap = {
  [CHAIN.ARBITRUM]: "Arbitrum",
  [CHAIN.AVAX]: "Avalanche",
  [CHAIN.BSC]: "BNB Chain",
  [CHAIN.FANTOM]: "Fantom"
}

const fetch = async (_1: number, _: any, { chain, dateString }: FetchOptions) => {
  const callhistoricalVolume = (await fetchURL(historicalVolumeEndpoint))?.data.rows;

  const historicalVolume: IVolumeall[] = callhistoricalVolume.map((e: string[] | number[]) => {
    const [time, title, volume] = e;
    return {
      time,
      volume,
      title
    } as IVolumeall;
  });

  const historical = historicalVolume.filter((e: IVolumeall) => e.title === (chainsMap as any)[chain]);
  const dailyVolume = historical
    .find(dayItem => dayItem.time.slice(0, 10) === dateString)?.volume

  return {
    dailyVolume: dailyVolume,
  };
}

export default {
  fetch,
  version: 1,
  chains: Object.keys(chainsMap) as Chain[],
}

================================================
FILE: aggregator-derivatives/vooi/index.ts
================================================
import fetchURL from "../../utils/fetchURL";
import { FetchResult, SimpleAdapter, FetchOptions } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import asyncRetry from "async-retry";

async function fetchStatistics(startOfDay: number) {
  const data = await asyncRetry(
    async () => fetchURL(`https://vooi-rebates.fly.dev/defillama/volumes?ts=${startOfDay}`),
    {
      retries: 3,
      minTimeout: 1000,
      maxTimeout: 5000,
      factor: 2,
    }
  );
  return data.map((item: any) => ({
    ...item,
    dailyVolume: Number(item.dailyVolume),
  }));
}

const getItems: Record<string, (items: Array<any>) => Array<any>> = {
  [CHAIN.ARBITRUM]: (items: Array<any>): Array<any> => {
    return items.filter(item => ['ostium'].includes(item.protocol) || (['gmx', 'gains', 'synfutures'].includes(item.protocol) && item.network === 'arbitrum'))
  },
  [CHAIN.ORDERLY]: (items: Array<any>): Array<any> => {
    return items.filter(item => item.protocol === 'orderly')
  },
  [CHAIN.HYPERLIQUID]: (items: Array<any>): Array<any> => {
    return items.filter(item => item.protocol === 'hyperliquid')
  },
  [CHAIN.BSC]: (items: Array<any>): Array<any> => {
    return items.filter(item => item.protocol == 'kiloex' && (item.network === 'bnb' || item.network === null))
  },
  [CHAIN.BASE]: (items: Array<any>): Array<any> => {
    return items.filter(item => ['synfutures', 'kiloex'].includes(item.protocol) && item.network === 'base')
  },
  [CHAIN.BLAST]: (items: Array<any>): Array<any> => {
    return items.filter(item => item.protocol == 'kiloex' && item.network === 'blast')
  },
  [CHAIN.TAIKO]: (items: Array<any>): Array<any> => {
    return items.filter(item => item.protocol == 'synfutures' && item.network === 'taiko')
  },
  [CHAIN.MANTA]: (items: Array<any>): Array<any> => {
    return items.filter(item => item.protocol == 'kiloex' && item.network === 'manta')
  },
  [CHAIN.OP_BNB]: (items: Array<any>): Array<any> => {
    return items.filter(item => item.protocol == 'kiloex' && item.network === 'opbnb')
  },
  [CHAIN.OFF_CHAIN]: (items: Array<any>): Array<any> => {
    return items.filter(item => ['aster', 'lighter'].includes(item.protocol))
  },
}

const prefetch = async (options: FetchOptions): Promise<any> => {
  return await fetchStatistics(options.startOfDay);
}

const fetch = async (_a: number, _t: any, options: FetchOptions): Promise<FetchResult> => {
  const results = options.preFetchedResults;

  const items = getItems[options.chain](results)

  let dailyVolume = 0;
  for (const item of items) {
    // reported wrong - spike volume on this day on ostium
    if (options.chain === CHAIN.ARBITRUM && options.startOfDay === 1768003200 && item.protocol === 'ostium') {
      dailyVolume += 0;
    } else {
      dailyVolume += item.dailyVolume;
    }
  }

  return { dailyVolume }
}

const adapter: SimpleAdapter = {
  version: 1,
  fetch,
  prefetch,
  adapter: {
    [CHAIN.ARBITRUM]: {
      start: "2024-05-02",
    },
    [CHAIN.ORDERLY]: {
      start: "2024-05-02",
    },
    [CHAIN.BSC]: {
      start: "2024-06-01",
    },
    [CHAIN.BASE]: {
      start: "2024-08-01",
    },
    [CHAIN.HYPERLIQUID]: {
      start: "2024-11-04",
    },
    [CHAIN.TAIKO]: {
      start: "2025-10-20",
    },
    [CHAIN.MANTA]: {
      start: "2025-10-20",
    },
    [CHAIN.BLAST]: {
      start: "2025-10-20",
    },
    [CHAIN.OP_BNB]: {
      start: "2025-10-20",
    },
    [CHAIN.OFF_CHAIN]: {
      start: '2025-11-01'
    }
  },
  doublecounted: true,
};

export default adapter;

================================================
FILE: aggregator-options/GUIDELINES.md
================================================
# Options Aggregator Guidelines

These guidelines apply to all adapters in the `aggregator-options/` directory.

## Required Dimensions

| Dimension | Required | Description |
|-----------|----------|-------------|
| `dailyNotionalVolume` | YES | Notional volume of options contracts traded/settled |
| `dailyPremiumVolume` | YES | Premium volume collected/paid |

## What is an Options Aggregator?

Options aggregators route options trades through multiple protocols/vaults to find optimal pricing and execution.

## Volume Types

### Notional Volume
- The underlying value of options contracts
- Example: A call option on 1 ETH at $2000 strike has $2000 notional value

### Premium Volume
- The actual premium paid/received for options contracts
- This is what users actually pay to enter positions

## Optional Dimensions

| Dimension | Description |
|-----------|-------------|
| `openInterestAtEnd` | Total open interest at period end |
| `longOpenInterestAtEnd` | Long positions open interest |
| `shortOpenInterestAtEnd` | Short positions open interest |

## Data Sources

1. **On-chain logs** - Option settlement and exercise events
2. **Protocol APIs** - Complex options data
3. **Query engines** - For aggregated analysis

## Fees/Revenue Tracking

If the aggregator charges fees and this adapter returns fee/revenue dimensions, follow the guidelines in `fees/GUIDELINES.md`.

## Common Mistakes to Avoid

1. Confusing notional vs premium volume
2. Double-counting with underlying options protocol adapters
3. Not tracking both call and put options
4. Missing settlement/exercise fees


================================================
FILE: aggregator-options/example.ts
================================================
//code here

================================================
FILE: aggregator-options/grix/index.ts
================================================
import { FetchOptions, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { httpGet } from "../../utils/fetchURL";

export type GrixMetricsData = {
  totalNotionalVolume24Hr: string;
};


const fetchGrix = async (_a: any, _b: any, { endTimestamp}: FetchOptions) => {
  /** Timestamp representing the end of the 24 hour period */
  const url = `https://internal-api-dev.grix.finance/volumeData?endTimestamp=${endTimestamp}`;

  const grixMetricsResponse = await httpGet(url);
  const grixMetricsData = parseGrixMetricsData(grixMetricsResponse);

  if (!grixMetricsData) {
    throw new Error("No data found when fetching Grix volume data");
  }

  const dailyNotionalVolume = Number(grixMetricsData.totalNotionalVolume24Hr);

  return {
    dailyNotionalVolume,
  };
};

const parseGrixMetricsData = (result: any): GrixMetricsData | null => {
  if (typeof result === "object" && result !== null) {
    return result as GrixMetricsData;
  }
  return result ? (JSON.parse(result) as GrixMetricsData) : null;
};

const grix_adapter: SimpleAdapter = {
  version: 1,
  fetch: fetchGrix,
  runAtCurrTime: true, // currently we don't take the timestamp into account, should be changed soon
  adapter: {
    [CHAIN.ARBITRUM]: {
      start: "2024-11-01",
    },
  },
};

export default grix_adapter;


================================================
FILE: aggregators/1delta/index.ts
================================================
import { Adapter, FetchOptions } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { httpGet, httpPost } from "../../utils/fetchURL";

const FUEL_SUBGRAPH_URL = 'https://endpoint.sentio.xyz/1delta/fuel-subgraph/volume'
const FUEL_SUBGRAPH_API_KEY = 'mHWELZ01Oo3BRfGb0WrhFvryge78baQVT'

const fetchFuelVolume = async (options: FetchOptions) => {
  const data = await httpPost(
    FUEL_SUBGRAPH_URL, 
    JSON.stringify({
      "startTimestamp": options.startTimestamp,
      "endTimestamp": options.endTimestamp
    }), {
    headers: {
      'api-key': FUEL_SUBGRAPH_API_KEY,
      'Content-Type': 'application/json',
    }
  })

  const dailyVolume = data.syncSqlResponse.result?.rows.reduce((acc: number, row: any) => acc + Number(row.volumeUsd), 0)

  return {
    dailyVolume,
  }
}

const chainConfig: Record<string, { chainId: number, start: string }> = {
  [CHAIN.MANTLE]: { chainId: 5000, start: '2025-03-01' },
  [CHAIN.OPTIMISM]: { chainId: 10, start: '2025-03-01' },
  [CHAIN.POLYGON]: { chainId: 137, start: '2025-03-01' },
  [CHAIN.LINEA]: { chainId: 59144, start: '2025-03-01' },
  [CHAIN.BSC]: { chainId: 56, start: '2025-03-01' },
  [CHAIN.AVAX]: { chainId: 43114, start: '2025-03-01' },
  [CHAIN.TAIKO]: { chainId: 167000, start: '2025-03-01' },
  [CHAIN.BASE]: { chainId: 8453, start: '2025-03-01' },
  [CHAIN.ARBITRUM]: { chainId: 42161, start: '2025-03-01' },
  //[CHAIN.BLAST]: { chainId: 81457, start: '2025-03-01' }, //invalid spike
  [CHAIN.METIS]: { chainId: 1088, start: '2025-03-01' },
  // [CHAIN.XDAI]: { chainId: 100, start: '2025-03-01' }, // invalid spike
  [CHAIN.MODE]: { chainId: 34443, start: '2025-03-01' },
  [CHAIN.HEMI]: { chainId: 43111, start: '2025-03-01' },
  [CHAIN.SCROLL]: { chainId: 534352, start: '2025-03-01' },
  [CHAIN.CORE]: { chainId: 1116, start: '2025-03-01' },
  [CHAIN.SONIC]: { chainId: 146, start: '2025-03-01' },
  [CHAIN.FANTOM]: { chainId: 250, start: '2025-03-01' },
  [CHAIN.KLAYTN]: { chainId: 8217, start: '2025-10-21' }, // Kaia
  [CHAIN.SONEIUM]: { chainId: 1868, start: '2025-10-21' },
  [CHAIN.HYPERLIQUID]: { chainId: 999, start: '2025-10-21' },
  [CHAIN.BERACHAIN]: { chainId: 80094, start: '2025-10-21' },
  [CHAIN.CRONOS]: { chainId: 25, start: '2025-10-21' },
  [CHAIN.XDC]: { chainId: 50, start: '2025-10-21' },
  [CHAIN.UNICHAIN]: { chainId: 130, start: '2025-10-21' },
  [CHAIN.KATANA]: { chainId: 747474, start: '2025-10-21' },
  [CHAIN.ETHEREUM]: { chainId: 1, start: '2025-10-21' },
  [CHAIN.TELOS]: { chainId: 40, start: '2025-10-21' },
  [CHAIN.MORPH]: { chainId: 2818, start: '2025-10-21' },
  [CHAIN.MANTA]: { chainId: 169, start: '2025-10-21' },
  [CHAIN.PLASMA]: { chainId: 9745, start: '2025-10-21' },
  //[CHAIN.MOONBEAM]: { chainId: 1284, start: '2025-10-21' }, //invalid spike
  [CHAIN.FUEL]: { chainId: 0, start: '2025-01-20' }
}


const fetch = async (options: FetchOptions) => {
  const chain = options.chain as CHAIN;
  const dailyVolume = options.createBalances()
  if (chain === CHAIN.FUEL) {
    return await fetchFuelVolume(options)
  }

  const fromBlock = await options.getFromBlock()
  const toBlock = await options.getToBlock()

  const url = `https://volume.1delta.io/volume?chainId=${chainConfig[chain].chainId}&fromBlock=${fromBlock}&toBlock=${toBlock}`

  const volumeByAsset = await httpGet(url, {
    headers: {
      'Content-Type': 'application/json',
    }
  })

  Object.entries(volumeByAsset).forEach(([asset, volume]) => {
    dailyVolume.add(asset, volume)
  })

  return { dailyVolume }
}

const adapter: Adapter = {
  pullHourly: true,
  version: 2,
  fetch,
  adapter: chainConfig
}

export default adapter;

================================================
FILE: aggregators/1inch-agg/index.ts
================================================
import { Dependencies, FetchOptions, FetchResult, SimpleAdapter } from "../../adapters/types";
import { queryDuneSql } from "../../helpers/dune";
import { CHAIN } from "../../helpers/chains";
import { getDefaultDexTokensBlacklisted } from "../../helpers/lists";

const chainsMap: Record<string, string> = {
  [CHAIN.ETHEREUM]: 'ethereum',
  [CHAIN.ARBITRUM]: 'arbitrum',
  [CHAIN.POLYGON]: 'polygon',
  [CHAIN.BSC]: 'bnb',
  [CHAIN.AVAX]: 'avalanche_c',
  [CHAIN.OPTIMISM]: 'optimism',
  [CHAIN.BASE]: 'base',
  [CHAIN.XDAI]: 'gnosis',
  [CHAIN.LINEA]: 'linea',
  [CHAIN.SONIC]: 'sonic',
  [CHAIN.UNICHAIN]: 'unichain',
  [CHAIN.ERA]: 'zksync',
};

const prefetch = async (options: FetchOptions) => {
  const blacklisted = getDefaultDexTokensBlacklisted(CHAIN.BSC);

  const sql_query = `
    SELECT
      blockchain,
      sum(amount_usd) as volume_24h
    FROM oneinch.swaps
    WHERE
      TIME_RANGE
      -- AND src_token_address NOT IN (${blacklisted})
      -- AND dst_token_address NOT IN (${blacklisted})
    GROUP BY 1
    ORDER BY volume_24h DESC
  `;
  const result = await queryDuneSql(options, sql_query);

  return result;
};

const fetch = async (
  _a: any,
  _b: any,
  options: FetchOptions
): Promise<FetchResult> => {
  const results = options.preFetchedResults || [];
  const chainData = results.find((item: any) => item.blockchain === chainsMap[options.chain]);

  return {
    dailyVolume: chainData ? chainData.volume_24h : 0,
  };
};

const adapter: SimpleAdapter = {
  version: 1,
  dependencies: [Dependencies.DUNE],
  fetch,
  chains: Object.keys(chainsMap),
  start: "2023-12-05",
  prefetch,
  isExpensiveAdapter: true,
};

export default adapter;


================================================
FILE: aggregators/3route/index.ts
================================================
import { gql, request } from "graphql-request";

import { CHAIN } from "../../helpers/chains";
import fetchURL from "../../utils/fetchURL"
import { FetchOptions, FetchResult, SimpleAdapter } from "../../adapters/types";

interface DappStat {
  volume_usd: number;
}

interface TezosVolumeResponse {
  dapp_stat_1d: DappStat[];
}

interface EtherlinkVolumeResponse {
  day: string;
  total_volume: number;
}

const dappSlug = '3route'
const tezosURL = 'https://dapps-indexer.dipdup.net/v1/graphql';
const etherlinkURL = 'https://3route-etherlink.dipdup.net/v1/volume/day'

const query = gql`
  query GetDailyVolume($dappSlug: String!, $startDate: timestamptz!, $endDate: timestamptz!) {
    dapp_stat_1d(
      where: {
        dapp_slug: {_eq: $dappSlug}
        bucket: {
          _gte: $startDate
          _lt: $endDate
        }
      }
    ) {
      volume_usd
    }
  }
`;


const fetchTezos = async (_: any, _1: any, { startOfDay }: FetchOptions): Promise<FetchResult> => {
  const startDate = new Date(startOfDay * 1000).toISOString()
  const endDate = new Date((startOfDay + 86400) * 1000).toISOString()

  const response = await request<TezosVolumeResponse>(tezosURL, query, { dappSlug, startDate, endDate })
  if (response.dapp_stat_1d.length == 0) {
    return { dailyVolume: 0 }
  }

  return {
    dailyVolume: response.dapp_stat_1d[0].volume_usd
  }
}

const fetchEtherlink = async (_: any, _1: any, { startOfDay }: FetchOptions): Promise<FetchResult> => {
  const startDate = new Date(startOfDay * 1000).toISOString().split('T')[0]
  const endDate = new Date((startOfDay + 86400) * 1000).toISOString().split('T')[0]

  const response: EtherlinkVolumeResponse[] = await fetchURL(`${etherlinkURL}?start=${startDate}&end=${endDate}`);
  if (response.length == 0) {
    return { dailyVolume: 0 }
  }

  return {
    dailyVolume: response[0].total_volume
  }
}

const adapter: SimpleAdapter = {
  version: 1,
  adapter: {
    [CHAIN.TEZOS]: {
      fetch: fetchTezos,
      start: '2022-11-15',
    },
    [CHAIN.ETHERLINK]: {
      fetch: fetchEtherlink,
      start: '2025-09-01',
    },
  },
};

export default adapter;


================================================
FILE: aggregators/8dx-aggregator/index.ts
================================================
import { FetchOptions, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { addOneToken } from "../../helpers/prices";

const EVENT_SWAP_EXECUTED =
  "event SwapExecuted(address indexed sender, address indexed srcToken, address indexed dstToken, uint256 spentAmount, uint256 returnAmount)";

const CONTRACTS: Record<string, string> = {
  [CHAIN.ETHEREUM]: "0xEEe3fdCc5b9D7821570294b26070B2f45cFd8aEc",
};

const START_DATE: Record<string, string> = {
  [CHAIN.ETHEREUM]: "2025-09-21",
};


const fetch = async (options: FetchOptions) => {
  const dailyVolume = options.createBalances();

  const target = CONTRACTS[options.chain];
  if (!target) return { dailyVolume };
  const logs = await options.getLogs({ target, eventAbi: EVENT_SWAP_EXECUTED, });
  logs.forEach((log) => {
    addOneToken({ balances: dailyVolume, chain: options.chain, token0: log.srcToken, amount0: log.spentAmount, token1: log.dstToken, amount1: log.returnAmount })
  });

  return { dailyVolume };
}

const adapter: SimpleAdapter = {
  pullHourly: true,
  version: 2,
  adapter: Object.keys(CONTRACTS).reduce((acc, chain) => {
    return {
      ...acc,
      [chain]: { fetch, start: START_DATE[chain] },
    };
  }, {} as Record<string, any>),
  methodology: {
    Volume:
      "Volume is calculated by tracking SwapExecuted events and summing spentAmount for each input token.",
  },
};

export default adapter;




================================================
FILE: aggregators/GUIDELINES.md
================================================
# DEX Aggregator Guidelines

These guidelines apply to all adapters in the `aggregators/` directory.

## Required Dimensions

| Dimension | Required | Description |
|-----------|----------|-------------|
| `dailyVolume` | YES | Trading volume routed through the aggregator |

## What is an Aggregator?

DEX aggregators route trades through multiple DEXs to find optimal prices. They aggregate liquidity but don't provide it themselves.

## Volume Calculation

- Track volume that is ROUTED through the aggregator
- Do NOT double-count volume that is already tracked in the underlying DEX adapters
- Aggregator volume represents user intent to trade through the aggregator interface

## Data Sources

1. **On-chain logs** - Track aggregator contract events
2. **Aggregator APIs** - When on-chain tracking is complex
3. **Query engines** - For cross-DEX aggregation analysis

## Common Event Patterns

```typescript
// Example: Track fill events from aggregator contract
const fetch = async (options: FetchOptions) => {
  const dailyVolume = options.createBalances();
  const logs = await options.getLogs({
    target: AGGREGATOR_CONTRACT,
    eventAbi: 'event Fill(address taker, address makerToken, address takerToken, uint256 makerAmount, uint256 takerAmount)'
  });
  logs.forEach(log => {
    dailyVolume.add(log.takerToken, log.takerAmount);
  });
  return { dailyVolume };
};
```

## Fees/Revenue Tracking

If the aggregator charges fees and this adapter returns fee/revenue dimensions, follow the guidelines in `fees/GUIDELINES.md`. Common aggregator fee patterns:
- Positive slippage capture
- Integration fees
- Protocol fees on certain routes

## Common Mistakes to Avoid

1. Double-counting volume with underlying DEX adapters
2. Not tracking all chains the aggregator operates on
3. Missing integration/partner fees as supply-side revenue
4. Counting failed/reverted transactions


================================================
FILE: aggregators/aftermath-aggregator/index.ts
================================================
import fetchURL from "../../utils/fetchURL";
import { FetchResult, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

const URL = "https://aftermath.finance/api/router/volume-24hrs";

const fetch = async (): Promise<FetchResult> => {
  const dailyVolume =     await fetchURL(URL)

  return {
    dailyVolume,
  };
};

const adapter: SimpleAdapter = {
  adapter: {
    [CHAIN.SUI]: {
      fetch,
      runAtCurrTime: true,
      start: '2023-07-20'
    },
  },
};

export default adapter;


================================================
FILE: aggregators/aggre/index.ts
================================================
import { Chain } from "../../adapters/types";
import { FetchV2, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

let abi = ["event SwapExecuted(address indexed user, address tokenIn, address tokenOut, uint amountIn, uint amountOut, uint swapType)"];

type IContract = {
    [c: string | Chain]: string;
}

const contract: IContract = {
    [CHAIN.SCROLL]: '0xcf8bcaCb401C31774EA39296b367B9DaB4F72267',
}

const fetch: FetchV2 = async ({ getLogs, createBalances, chain, }) => {
    const dailyVolume = createBalances();
    const logs = (await getLogs({ target: contract[chain], eventAbi: abi[0], }))

    logs.map((log: any) => dailyVolume.add(log.tokenOut, log.amountOut));

    return { dailyVolume, };
};

const adapter: SimpleAdapter = {
    adapter: Object.keys(contract).reduce((acc, chain) => {
        return {
            ...acc,
            [chain]: {
                fetch,
                start: '2023-10-30',
            }
        }
    }, {}),
    version: 2,
    pullHourly: true,
};

export default adapter;

================================================
FILE: aggregators/akka/index.ts
================================================
import fetchURL from "../../utils/fetchURL";
import { FetchOptions, FetchResult, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

const URL = 'https://routerv2.akka.finance';

interface IAPIResponse {
  dailyVolume: string;
}

const chainIds = {
  [CHAIN.CORE]: 1116,
  [CHAIN.XDC]: 50,
  [CHAIN.BITLAYER]: 200901,
  [CHAIN.BSQUARED]: 223,
};

const startTimestamps = {
  [CHAIN.CORE]: '2024-06-01',
  [CHAIN.XDC]: '2024-10-29',
  [CHAIN.BITLAYER]: '2024-10-29',
  [CHAIN.BSQUARED]: '2024-10-29',
};

const fetch = async (_a: any, _b: any, options: FetchOptions): Promise<FetchResult> => {
  const chainId = chainIds[options.chain];

  const endpoint = `/v2/${chainId}/statistics/dappradar`;
  const response = await fetchURL(`${URL}${endpoint}`);

  const { dailyVolume }: IAPIResponse = response;

  return {
    dailyVolume
  };
};

const adapter: SimpleAdapter = {
  version: 1,
  adapter: Object.keys(chainIds).reduce((acc, chain) => {
    const startTimestamp = startTimestamps[chain];
    return {
      ...acc,
      [chain]: {
        fetch,
        runAtCurrTime: true,
        start: startTimestamp,
      },
    };
  }, {}),
};

export default adapter;

================================================
FILE: aggregators/allox/index.ts
================================================
import { Adapter, FetchOptions } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { addTokensReceived } from "../../helpers/token";

const FEE_RECIPIENT = "0x6A80f57ac54123cB71e6c79B3935A381b87B4308";

const configs: Record<string, any> = {
  [CHAIN.BSC]: {
    start: "2026-03-17",
  },
  [CHAIN.BASE]: {
    start: "2026-04-22",
  },
  [CHAIN.ETHEREUM]: {
    start: "2026-05-05",
  },
};

const fetch = async (options: FetchOptions) => {
  const dailyFees = await addTokensReceived({
    options,
    target: FEE_RECIPIENT,
  });

  // flat 0.25% fee on trades, volume is scaled by 400
  return { dailyVolume: dailyFees.clone(400) };
};

const adapter: Adapter = {
  version: 2,
  pullHourly: true,
  adapter: configs,
  fetch,
  methodology: {
    Volume: 'Total USD value of swaps AlloX routed through Uniswap (V2/V3/V4 Universal Router) and PancakeSwap (Universal Router).',
  }
};

export default adapter;


================================================
FILE: aggregators/anqa/index.ts
================================================
import { Dependencies, FetchOptions, FetchResult, } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { queryDuneSql } from "../../helpers/dune";

const fetch = async (_1: any, _2: any, options: FetchOptions): Promise<FetchResult> => {
  const query = `
    WITH table_a AS (
        SELECT
            LEAST(
              COALESCE(
                TRY_CAST(json_value(data,'lax $.input_amount_usd') AS DOUBLE),
                TRY_CAST(json_value(TRY_CAST(json_value(data,'lax $.extra_data') AS VARCHAR),'lax $.amountInUsd') AS DOUBLE)
              ),
              COALESCE(
                TRY_CAST(json_value(data,'lax $.output_amount_usd') AS DOUBLE),
                TRY_CAST(json_value(TRY_CAST(json_value(data,'lax $.extra_data') AS VARCHAR),'lax $.amountOutUsd') AS DOUBLE)
              )
            ) AS tx_value_usd
        FROM aptos.events AS e
        WHERE (
            e.event_type = '0x2e8671ebdf16028d7de00229c26b551d8f145d541f96278eec54d9d775a49fe3::router::SwapEvent'
            OR e.event_type = '0x59b8a7918da8ba9d98ded64d49519ec889d311a515c61b06abc1aaa42c508fae::router::SwapEvent'
            OR e.event_type = '0x165287033a77aa487c547a486a619de3a12099cff98a63bb0352a411772b7e73::router::SwapEvent'
            OR e.event_type = '0x1cb4fd7144568b4eae2b0d32aaf51fe87fc729eb498295b0a976d91f1692522d::router::SwapEvent'
          )
          AND e.tx_version NOT IN (
            1002108310,1001748840,1001765227,1001624974,1001809346,1002110994,
            1002041129,1002041841,1001720818,1001719551,1001718924,1001751891,
            1001760947,1001749166,1001750827,1001750564,1001752517,1001812177,
            1001748059,1001820233,1001811399,1001762548,1001749445,1001670382,
            1001675112,1001967617,1002038932,1001811791,1001820520,1001751178,
            1001748578,1001812467,1001620076,1082187676,1082197658,1082197383,
            1082197246,1082197771,1082189106,1082188929
          )
          AND e.tx_success = TRUE
          AND e.block_date >= from_unixtime(${options.startTimestamp})
          AND e.block_date <= from_unixtime(${options.endTimestamp})
    )
    SELECT
        SUM(tx_value_usd) AS total_volume
    FROM table_a;
  `
  const chainData = await queryDuneSql(options, query)

  return {
    dailyVolume: chainData[0]["total_volume"],
  };
};

const adapter: any = {
  version: 1,
  dependencies: [Dependencies.DUNE],
  adapter: {
    [CHAIN.APTOS]: {
      fetch: fetch,
      start: '2023-06-16',
    }
  },
  isExpensiveAdapter: true,
};

export default adapter;


================================================
FILE: aggregators/apstation/index.ts
================================================

import { FetchOptions, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

const SwapEvent = "event Swap(address tokenIn, address tokenOut, uint256 amountIn, address referer, address sender)";

const factory_contract = "0x4f4b84b42059E8CaabB211Aa8F02A9cab53A6c4e";

const fetch = async (options: FetchOptions) => {
  const dailyVolume = options.createBalances();

  const data: any[] = await options.getLogs({
    target: factory_contract,
    eventAbi: SwapEvent,
  });
  data.forEach((log: any) => {
    dailyVolume.add(log.tokenIn, log.amountIn);
  });

  return { dailyVolume };
};

const adapter: SimpleAdapter = {
  version: 2,
  pullHourly: true,
  methodology: {
    Volume: "Apstation volume",
  },
  fetch,
  adapter: {
    [CHAIN.HYPERLIQUID]: {
      start: "2025-07-05",
    },
  },
};

export default adapter;


================================================
FILE: aggregators/arbitrage-inc/index.ts
================================================
import type { Adapter, FetchOptions } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { addTokensReceived } from "../../helpers/token";

const FEE_RECEIVER = '0xafF5340ECFaf7ce049261cff193f5FED6BDF04E7';
const FEE_RATE = 0.001;

const fetch = async (options: FetchOptions) => {
    const dailyFees = await addTokensReceived({
        options,
        targets: [FEE_RECEIVER],
    });

    const dailyVolume = dailyFees.clone(1 / FEE_RATE);

    return {
        dailyFees,
        dailyRevenue: dailyFees,
        dailyProtocolRevenue: dailyFees,
        dailyVolume,
    };
};

const DEV_FEE_DESC = "Developer fees (0.1% per swap) are collected from each trade and sent to the designated fee receiver address.";

const methodology = {
    Fees: "We track fees sent to the fee receiver address which represents the developer commission for every swap executed via our frontend integration.",
    Revenue: DEV_FEE_DESC,
    ProtocolRevenue: DEV_FEE_DESC,
    Volume: "Amount of trades executed on the Arbitrage Inc platform",
};

const breakdownMethodology = {
    Fees: {
        'Developer Fees': DEV_FEE_DESC,
    },
    Revenue: {
        'Developer Fees': DEV_FEE_DESC,
    },
    ProtocolRevenue: {
        'Developer Fees': DEV_FEE_DESC,
    },
};

const adapter: Adapter = {
    version: 2,
    pullHourly: true,
    chains: [CHAIN.BSC],
    fetch,
    start: '2026-03-23',
    methodology,
    breakdownMethodology,
};

export default adapter;


================================================
FILE: aggregators/atmos-aggregator.ts
================================================
import { FetchOptions, SimpleAdapter } from "../adapters/types";
import { CHAIN } from "../helpers/chains";
import { httpGet } from "../utils/fetchURL";

const API_ENDPOINT = "https://api.atmos.ag/stats/defillama/stats";

const fetch = async (_a: any, _b: any, options: FetchOptions) => {
  const response = await httpGet(`${API_ENDPOINT}?timestamp=${options.startOfDay}`);
  const dailyVolume = response.data.aggregator.volume;
  return {
    dailyVolume
  };
};

const adapter: SimpleAdapter = {
  adapter: {
    [CHAIN.SUPRA]: {
      fetch,
      start: '2025-09-23',
    },
  },
};

export default adapter;


================================================
FILE: aggregators/aura-agg/index.ts
================================================
import { FetchOptions, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

const TransformedERC20Event =
  "event TransformedERC20(address indexed taker, address inputToken, address outputToken, uint256 inputTokenAmount, uint256 outputTokenAmount)";

const AURA_AGGREGATOR_CONTRACT = "0xEc46A87ba4d423BaF59aeD8e16AE3E91800581Ef"

const FLAT_FEE_RATE = 0.0005 // 0.05%

const fetch = async (options: FetchOptions) => {
  const dailyVolume = options.createBalances();
  const dailyFees = options.createBalances();

  const logs: any[] = await options.getLogs({
    target: AURA_AGGREGATOR_CONTRACT,
    eventAbi: TransformedERC20Event,
  });

  for (const log of logs) {
    let token = log.inputToken;
    if (log.inputToken === "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE") {
      // price for native token not supported - WXPL
      token = "0x6100E367285b01F48D07953803A2d8dCA5D19873";
    }
    dailyVolume.add(token, log.inputTokenAmount);
    dailyFees.add(token, Number(log.inputTokenAmount) * FLAT_FEE_RATE);
  }

  return {
    dailyVolume,
    dailyFees,
    dailyRevenue: dailyFees,
    dailyProtocolRevenue: dailyFees,
   };
};

const adapter: SimpleAdapter = {
  version: 2,
  pullHourly: true,
  fetch,
  start: "2025-10-14",
  methodology: {
    Volume: "Total trading volume aggregated via Aura routers.",
    Fees: "Flat 0.05% amount of trading fees on all trades.",
    Revenue: "Flat 0.05% amount of trading fees on all trades are revenue.",
    ProtocolRevenue: "Flat 0.05% amount of trading fees on all trades are revenue.",
  },
  chains: [CHAIN.PLASMA],
};

export default adapter;


================================================
FILE: aggregators/avnu/index.ts
================================================
import fetchURL from "../../utils/fetchURL"
import { FetchResult, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

const URL = 'https://starknet.api.avnu.fi';
const endpoint = '/v1/analytics/volumes/';

interface IAPIResponse {
    date: number;
    dailyVolume: string;
}

const fetch = async (timestamp: number): Promise<FetchResult> => {
    const { dailyVolume }: IAPIResponse = (await fetchURL(`${URL}${endpoint}${timestamp * 1000}`));
    if (Number(dailyVolume) >= 100000000) {
        throw new Error('Daily volume is greater than 100M unusually high');
    }
    return {
        dailyVolume,
    };
}

const adapter: SimpleAdapter = {
    version: 1,
    adapter: {
        [CHAIN.STARKNET]: {
            fetch,
            start: '2023-05-15',
        },
    },
};

export default adapter;


================================================
FILE: aggregators/barter/index.ts
================================================
import { ethers } from "ethers";
import { FetchOptions, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

const EXECUTORS = [
  "0x2c0552e5dcb79b064fd23e358a86810bc5994244",
  "0x2141af658ffda533da864dd11b2ffdb8529c8b94",
  "0xb2f72662ed42067ccce278f8462a0215b6adcabb",
];

const TRANSFER_TOPIC = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
const executorSet = new Set(EXECUTORS.map(e => e.toLowerCase()));

const fetch = async ({ createBalances, getLogs }: FetchOptions) => {
  const dailyVolume = createBalances();
  const allLogs: any[] = [];

  for (const executor of EXECUTORS) {
    const padded = ethers.zeroPadValue(executor, 32);

    const logs = await getLogs({
      topics: [TRANSFER_TOPIC, null as any, padded],
      noTarget: true,
      eventAbi: "event Transfer(address indexed from, address indexed to, uint256 value)",
      entireLog: true,
    });

    for (const log of logs) {
      if (log.data === "0x") continue;
      const from = "0x" + log.topics[1].slice(26).toLowerCase();
      if (executorSet.has(from)) continue;
      allLogs.push(log);
    }
  }

  // Per transaction: keep only the first Transfer (lowest log index).
  // This is the sell-token inflow from the user, before any DEX routing
  // or multi-hop returns inflate the count.
  const firstByTx: Record<string, any> = {};
  for (const log of allLogs) {
    const txHash = log.transactionHash.toLowerCase();
    const idx = log.logIndex ?? log.index ?? 0;
    const prev = firstByTx[txHash];
    if (!prev || idx < (prev.logIndex ?? prev.index ?? 0)) {
      firstByTx[txHash] = log;
    }
  }

  for (const log of Object.values(firstByTx)) {
    dailyVolume.add(log.address, log.data);
  }

  return { dailyVolume };
};

const methodology = {
  Volume:
    "For each transaction involving a Barter executor, the first ERC-20 Transfer " +
    "received by the executor (by log index) is taken as the sell-side volume. " +
    "Subsequent transfers (DEX returns, multi-hop intermediates) are excluded.",
};

const adapter: SimpleAdapter = {
  version: 2,
  pullHourly: true,
  adapter: {
    [CHAIN.ETHEREUM]: { fetch, start: "2023-01-01" },
  },
  methodology,
};

export default adapter;


================================================
FILE: aggregators/bebop/index.ts
================================================
import { ethers } from "ethers";
import { Adapter, Dependencies, FetchOptions } from "../../adapters/types";
import { getTransactions } from "../../helpers/getTxReceipts";
import JAM_ABI from "./jamAbi";
import {queryDuneSql} from "../../helpers/dune"
import { CHAIN } from "../../helpers/chains"

const abis = {
  "AggregateOrderExecuted": "event AggregateOrderExecuted(bytes32 order_hash)",
  "OrderSignerRegistered": "event OrderSignerRegistered(address maker, address signer, bool allowed)",
  "AGGREGATED_ORDER_TYPE_HASH": "function AGGREGATED_ORDER_TYPE_HASH() view returns (bytes32)",
  "DOMAIN_SEPARATOR": "function DOMAIN_SEPARATOR() view returns (bytes32)",
  "EIP712_DOMAIN_TYPEHASH": "function EIP712_DOMAIN_TYPEHASH() view returns (bytes32)",
  "PARTIAL_AGGREGATED_ORDER_TYPE_HASH": "function PARTIAL_AGGREGATED_ORDER_TYPE_HASH() view returns (bytes32)",
  "SettleAggregateOrder": "function SettleAggregateOrder((uint256 expiry, address taker_address, address[] maker_addresses, uint256[] maker_nonces, address[][] taker_tokens, address[][] maker_tokens, uint256[][] taker_amounts, uint256[][] maker_amounts, address receiver, bytes commands) order, (uint8 signatureType, bytes signatureBytes) takerSig, ((uint8 signatureType, bytes signatureBytes) signature, bool usingPermit2)[] makerSigs) payable returns (bool)",
  "SettleAggregateOrderWithTakerPermits": "function SettleAggregateOrderWithTakerPermits((uint256 expiry, address taker_address, address[] maker_addresses, uint256[] maker_nonces, address[][] taker_tokens, address[][] maker_tokens, uint256[][] taker_amounts, uint256[][] maker_amounts, address receiver, bytes commands) order, (uint8 signatureType, bytes signatureBytes) takerSig, ((uint8 signatureType, bytes signatureBytes) signature, bool usingPermit2)[] makerSigs, (bytes[] permitSignatures, bytes signatureBytesPermit2, uint48[] noncesPermit2, uint48 deadline) takerPermitsInfo) payable returns (bool)",
  "hashAggregateOrder": "function hashAggregateOrder((uint256 expiry, address taker_address, address[] maker_addresses, uint256[] maker_nonces, address[][] taker_tokens, address[][] maker_tokens, uint256[][] taker_amounts, uint256[][] maker_amounts, address receiver, bytes commands) order) view returns (bytes32)",
  "hashPartialOrder": "function hashPartialOrder((uint256 expiry, address taker_address, address maker_address, uint256 maker_nonce, address[] taker_tokens, address[] maker_tokens, uint256[] taker_amounts, uint256[] maker_amounts, address receiver, bytes commands) order) view returns (bytes32)",
  "Trade": "event Trade(address indexed owner, address sellToken, address buyToken, uint256 sellAmount, uint256 buyAmount, uint256 feeAmount, bytes orderUid)", // gnosis
  "swap": "function swap((bytes32 poolId, uint256 assetInIndex, uint256 assetOutIndex, uint256 amount, bytes userData)[] swaps, address[] tokens, (uint256 sellTokenIndex, uint256 buyTokenIndex, address receiver, uint256 sellAmount, uint256 buyAmount, uint32 validTo, bytes32 appData, uint256 feeAmount, uint256 flags, uint256 executedAmount, bytes signature) trade)", // gnosis
  "settle": "function settle(address[] tokens, uint256[] clearingPrices, (uint256 sellTokenIndex, uint256 buyTokenIndex, address receiver, uint256 sellAmount, uint256 buyAmount, uint32 validTo, bytes32 appData, uint256 feeAmount, uint256 flags, uint256 executedAmount, bytes signature)[] trades, (address target, uint256 value, bytes callData)[][3] interactions)", // gnosis
  "sellOrderSwap": "function sellOrderSwap((uint256 deadline, address tokenIn, uint256 amountIn, uint256 nonce, bytes signature, address allowanceTarget, address swapper, bytes swapData, address tokenOut, uint256 minAmountOut, (address recipient, uint256 shareBps)[] transferOut) _params) payable returns (uint256 _amountIn, uint256 _amountOut)",

  // maestro

  "swapAndDeposit": "function swapAndDeposit(address tokenToSell, address tokenToDeposit, (address router, address spender, uint256 amountIn, uint256 minAmountOut, bytes swapBytes) swapData) returns (uint256)",
  "swapAndDepositNative": "function swapAndDepositNative(address tokenToDeposit, (address router, address spender, uint256 amountIn, uint256 minAmountOut, bytes swapBytes) swapData) payable returns (uint256)",
  "swapAndDepositWithPermit": "function swapAndDepositWithPermit(address tokenToSell, address tokenToDeposit, (address router, address spender, uint256 amountIn, uint256 minAmountOut, bytes swapBytes) swapData, (uint256 amount, uint256 deadline, bytes32 r, bytes32 vs) permit) returns (uint256)",
  "swapAndDepositWithPermit2": "function swapAndDepositWithPermit2(address tokenToSell, address tokenToDeposit, (address router, address spender, uint256 amountIn, uint256 minAmountOut, bytes swapBytes) swapData, (uint256 amount, uint256 deadline, bytes32 r, bytes32 vs) permit) returns (uint256)",
  "swapAndWithdraw": "function swapAndWithdraw(address tokenToSell, address tokenToReceive, (address router, address spender, uint256 amountIn, uint256 minAmountOut, bytes swapBytes) swapData, address to) returns (uint256)",
  "swapAndWithdrawNative": "function swapAndWithdrawNative(address tokenToSell, (address router, address spender, uint256 amountIn, uint256 minAmountOut, bytes swapBytes) swapData, address to) returns (uint256 output)",
  "trade": "function trade((bytes32 positionId, int256 quantity, uint256 limitPrice, uint8 cashflowCcy, int256 cashflow) tradeParams, (address spender, address router, uint256 swapAmount, bytes swapBytes, address flashLoanProvider) execParams) returns (bytes32, (int256 quantity, (uint8 inputCcy, int256 input, int256 output, uint256 price) swap, uint8 cashflowCcy, int256 cashflow, uint256 fee, uint8 feeCcy, uint256 forwardPrice))",
  "tradeAndLinkedOrder": "function tradeAndLinkedOrder((bytes32 positionId, int256 quantity, uint256 limitPrice, uint8 cashflowCcy, int256 cashflow) tradeParams, (address spender, address router, uint256 swapAmount, bytes swapBytes, address flashLoanProvider) execParams, (uint128 limitPrice, uint128 tolerance, uint8 cashflowCcy, uint32 deadline, uint8 orderType) linkedOrderParams) payable returns (bytes32 positionId, (int256 quantity, (uint8 inputCcy, int256 input, int256 output, uint256 price) swap, uint8 cashflowCcy, int256 cashflow, uint256 fee, uint8 feeCcy, uint256 forwardPrice) trade_, bytes32 linkedOrderId)",
  "tradeAndLinkedOrders": "function tradeAndLinkedOrders((bytes32 positionId, int256 quantity, uint256 limitPrice, uint8 cashflowCcy, int256 cashflow) tradeParams, (address spender, address router, uint256 swapAmount, bytes swapBytes, address flashLoanProvider) execParams, (uint128 limitPrice, uint128 tolerance, uint8 cashflowCcy, uint32 deadline, uint8 orderType) linkedOrderParams1, (uint128 limitPrice, uint128 tolerance, uint8 cashflowCcy, uint32 deadline, uint8 orderType) linkedOrderParams2) payable returns (bytes32 positionId, (int256 quantity, (uint8 inputCcy, int256 input, int256 output, uint256 price) swap, uint8 cashflowCcy, int256 cashflow, uint256 fee, uint8 feeCcy, uint256 forwardPrice) trade_, bytes32 linkedOrderId1, bytes32 linkedOrderId2)",
  "tradeAndWithdraw": "function tradeAndWithdraw((bytes32 positionId, int256 quantity, uint256 limitPrice, uint8 cashflowCcy, int256 cashflow) tradeParams, (address spender, address router, uint256 swapAmount, bytes swapBytes, address flashLoanProvider) execParams, address to) returns (bytes32 positionId, (int256 quantity, (uint8 inputCcy, int256 input, int256 output, uint256 price) swap, uint8 cashflowCcy, int256 cashflow, uint256 fee, uint8 feeCcy, uint256 forwardPrice) trade_, uint256 amount)",
  "tradeAndWithdrawNative": "function tradeAndWithdrawNative((bytes32 positionId, int256 quantity, uint256 limitPrice, uint8 cashflowCcy, int256 cashflow) tradeParams, (address spender, address router, uint256 swapAmount, bytes swapBytes, address flashLoanProvider) execParams, address to) returns (bytes32 positionId, (int256 quantity, (uint8 inputCcy, int256 input, int256 output, uint256 price) swap, uint8 cashflowCcy, int256 cashflow, uint256 fee, uint8 feeCcy, uint256 forwardPrice) trade_, uint256 amount)",

}
const contract_interface = new ethers.Interface(Object.values(abis));

const JamContract = new ethers.Contract('0xbebebeb035351f58602e0c1c8b59ecbff5d5f47b', JAM_ABI)
const jamAddress: any = {
  [CHAIN.ERA]:'0x574d1fcF950eb48b11de5DF22A007703cbD2b129',
  default: '0xbebebeb035351f58602e0c1c8b59ecbff5d5f47b'
}


const fetch = async (_:any, _1:any, { createBalances, getLogs, chain, api }: FetchOptions) => {
  const dailyVolume = createBalances()
  const cowswapData: any = {}
  const logs = await getLogs({
    target: '0xBeB09000fa59627dc02Bb55448AC1893EAa501A5',
    topics: ['0xc59522161f93d59c8c4520b0e7a3635fb7544133275be812a4ea970f4f14251b'] // AggregateOrderExecuted
  });
  if (chain === CHAIN.ETHEREUM) {
    const cowswapLogs = await getLogs({
      target: '0x9008d19f58aabd9ed0d60971565aa8510560ab41',
      eventAbi: abis.Trade,
      onlyArgs: false,
      entireLog: true,
    });
    cowswapLogs.forEach((log: any) => {
      cowswapData[log.transactionHash.toLowerCase()] = contract_interface.parseLog(log)?.args
    })
  }
  const data: any = await getTransactions(chain, logs.map((log: any) => log.transactionHash), { cacheKey: 'bebop' })
  for (const d of data) {
    if (!d) continue;
    const decoded = contract_interface.parseTransaction(d)
    if (!decoded) {
      api.log('no decoded', d.hash, d.input.slice(0, 10), d.to, chain)
      continue;
    }
    if (decoded.args.order) {
      const { order: { taker_tokens, taker_amounts } } = decoded.args as any
      dailyVolume.add(taker_tokens.flat(), taker_amounts.flat())
    } else if (cowswapData[d.hash.toLowerCase()]) {
      const { buyToken, buyAmount } = cowswapData[d.hash.toLowerCase()]
      dailyVolume.add(buyToken, buyAmount)
    } else if (decoded.args._params?.minAmountOut) {
      const { tokenIn, amountIn } = decoded.args._params as any
      dailyVolume.add(tokenIn, amountIn)
    } else {
      api.log('no order', d.hash, d.input.slice(0, 10), d.to, chain, decoded.signature)
    }
  }

  const jamLogs = await getLogs({
    target: jamAddress[chain] || jamAddress.default,
    topics: ['0x7a70845dec8dc098eecb16e760b0c1569874487f0459ae689c738e281b28ed38'] // Settlement,
  });

  const jamData: any = await getTransactions(chain, jamLogs.map((log: any) => log.transactionHash), { cacheKey: 'bebop' })
  for (const d of jamData) {
    if (!d) continue;
    const decoded = JamContract.interface.parseTransaction(d)
    if (!decoded) {
      api.log('jam no decoded', d.hash, d.input.slice(0, 10), d.to, chain)
      continue;
    }
    const {buyAmounts = [], sellAmounts = [], buyTokens = [], sellTokens = []} = decoded?.args?.order  
    buyAmounts?.forEach((amount: any, i: number) => {
      dailyVolume.add(buyTokens[i], amount)
    })
    sellAmounts?.forEach((amount: any, i: number) => {
      dailyVolume.add(sellTokens[i], amount)
    })
  }

  return { dailyVolume }
};

// Prefetch function that will run once before any fetch calls
const prefetch = async (options: FetchOptions) => {
  return queryDuneSql(options, `
    SELECT 
      blockchain,
      SUM(amount_usd) AS vol 
    FROM bebop.trades 
    WHERE block_time >= from_unixtime(${options.startTimestamp})
    AND block_time < from_unixtime(${options.endTimestamp})
    GROUP BY blockchain
  `);
};

async function fetchDune(_:any, _1:any, options: FetchOptions){
  const results = options.preFetchedResults || [];
  const chainData = results.find((item: any) => item.blockchain.toLowerCase() === options.chain.toLowerCase());
  // volume can be null
  let dailyVolume = 0
  if (chainData) {
    dailyVolume = chainData.vol;
  }

  return { dailyVolume };
}

const adapter: Adapter = {
  version: 1,
  isExpensiveAdapter: true,
  dependencies: [Dependencies.DUNE],
  adapter: {
    [CHAIN.ARBITRUM]: { fetch: fetchDune, start: '2023-05-31', },
    [CHAIN.ETHEREUM]: { fetch: fetchDune, start: '2023-05-31', },
    [CHAIN.POLYGON]: { fetch: fetchDune, start: '2023-05-31', },
    [CHAIN.BSC]: { fetch: fetchDune, start: '2023-05-31', },
    [CHAIN.BLAST]: { fetch, start: '2023-05-31', },
    [CHAIN.ERA]: { fetch, start: '2023-05-31', },
    [CHAIN.OPTIMISM]: { fetch: fetchDune, start: '2023-05-31', },
    [CHAIN.MODE]: { fetch, start: '2023-05-31', },
    [CHAIN.BASE]: { fetch: fetchDune, start: '2023-05-31', },
    [CHAIN.SCROLL]: { fetch: fetchDune, start: '2023-05-31', },
    [CHAIN.TAIKO]: { fetch, start: '2023-05-31', },
  },
  prefetch: prefetch,
};

export default adapter;


================================================
FILE: aggregators/bebop/jamAbi.ts
================================================
const ABI = [
  {
    inputs: [
      { internalType: "address", name: "_permit2", type: "address" },
      { internalType: "address", name: "_daiAddress", type: "address" },
    ],
    stateMutability: "nonpayable",
    type: "constructor",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "address",
        name: "receiver",
        type: "address",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "amount",
        type: "uint256",
      },
    ],
    name: "NativeTransfer",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint256",
        name: "nonce",
        type: "uint256",
      },
    ],
    name: "Settlement",
    type: "event",
  },
  {
    inputs: [],
    name: "DOMAIN_SEPARATOR",
    outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "EIP712_DOMAIN_TYPEHASH",
    outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "JAM_ORDER_TYPE_HASH",
    outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "balanceManager",
    outputs: [
      {
        internalType: "contract IJamBalanceManager",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [{ internalType: "uint256", name: "nonce", type: "uint256" }],
    name: "cancelLimitOrder",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "beforeSettle",
            type: "tuple[]",
          },
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "afterSettle",
            type: "tuple[]",
          },
        ],
        internalType: "struct JamHooks.Def",
        name: "hooks",
        type: "tuple",
      },
    ],
    name: "hashHooks",
    outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          { internalType: "address", name: "taker", type: "address" },
          { internalType: "address", name: "receiver", type: "address" },
          { internalType: "uint256", name: "expiry", type: "uint256" },
          { internalType: "uint256", name: "nonce", type: "uint256" },
          { internalType: "address", name: "executor", type: "address" },
          { internalType: "uint16", name: "minFillPercent", type: "uint16" },
          { internalType: "bytes32", name: "hooksHash", type: "bytes32" },
          { internalType: "address[]", name: "sellTokens", type: "address[]" },
          { internalType: "address[]", name: "buyTokens", type: "address[]" },
          { internalType: "uint256[]", name: "sellAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "sellNFTIds", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyNFTIds", type: "uint256[]" },
          { internalType: "bytes", name: "sellTokenTransfers", type: "bytes" },
          { internalType: "bytes", name: "buyTokenTransfers", type: "bytes" },
        ],
        internalType: "struct JamOrder.Data",
        name: "order",
        type: "tuple",
      },
      { internalType: "bytes32", name: "hooksHash", type: "bytes32" },
    ],
    name: "hashOrder",
    outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      { internalType: "address", name: "taker", type: "address" },
      { internalType: "uint256", name: "nonce", type: "uint256" },
    ],
    name: "isLimitOrderNonceValid",
    outputs: [{ internalType: "bool", name: "", type: "bool" }],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      { internalType: "address", name: "", type: "address" },
      { internalType: "address", name: "", type: "address" },
      { internalType: "uint256[]", name: "", type: "uint256[]" },
      { internalType: "uint256[]", name: "", type: "uint256[]" },
      { internalType: "bytes", name: "", type: "bytes" },
    ],
    name: "onERC1155BatchReceived",
    outputs: [{ internalType: "bytes4", name: "", type: "bytes4" }],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      { internalType: "address", name: "", type: "address" },
      { internalType: "address", name: "", type: "address" },
      { internalType: "uint256", name: "", type: "uint256" },
      { internalType: "uint256", name: "", type: "uint256" },
      { internalType: "bytes", name: "", type: "bytes" },
    ],
    name: "onERC1155Received",
    outputs: [{ internalType: "bytes4", name: "", type: "bytes4" }],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      { internalType: "address", name: "", type: "address" },
      { internalType: "address", name: "", type: "address" },
      { internalType: "uint256", name: "", type: "uint256" },
      { internalType: "bytes", name: "", type: "bytes" },
    ],
    name: "onERC721Received",
    outputs: [{ internalType: "bytes4", name: "", type: "bytes4" }],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          { internalType: "address", name: "taker", type: "address" },
          { internalType: "address", name: "receiver", type: "address" },
          { internalType: "uint256", name: "expiry", type: "uint256" },
          { internalType: "uint256", name: "nonce", type: "uint256" },
          { internalType: "address", name: "executor", type: "address" },
          { internalType: "uint16", name: "minFillPercent", type: "uint16" },
          { internalType: "bytes32", name: "hooksHash", type: "bytes32" },
          { internalType: "address[]", name: "sellTokens", type: "address[]" },
          { internalType: "address[]", name: "buyTokens", type: "address[]" },
          { internalType: "uint256[]", name: "sellAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "sellNFTIds", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyNFTIds", type: "uint256[]" },
          { internalType: "bytes", name: "sellTokenTransfers", type: "bytes" },
          { internalType: "bytes", name: "buyTokenTransfers", type: "bytes" },
        ],
        internalType: "struct JamOrder.Data",
        name: "order",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "enum Signature.Type",
            name: "signatureType",
            type: "uint8",
          },
          { internalType: "bytes", name: "signatureBytes", type: "bytes" },
        ],
        internalType: "struct Signature.TypedSignature",
        name: "signature",
        type: "tuple",
      },
      {
        components: [
          { internalType: "bool", name: "result", type: "bool" },
          { internalType: "address", name: "to", type: "address" },
          { internalType: "uint256", name: "value", type: "uint256" },
          { internalType: "bytes", name: "data", type: "bytes" },
        ],
        internalType: "struct JamInteraction.Data[]",
        name: "interactions",
        type: "tuple[]",
      },
      {
        components: [
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "beforeSettle",
            type: "tuple[]",
          },
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "afterSettle",
            type: "tuple[]",
          },
        ],
        internalType: "struct JamHooks.Def",
        name: "hooks",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "address",
            name: "balanceRecipient",
            type: "address",
          },
          { internalType: "uint16", name: "curFillPercent", type: "uint16" },
        ],
        internalType: "struct ExecInfo.SolverData",
        name: "solverData",
        type: "tuple",
      },
    ],
    name: "settle",
    outputs: [],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          { internalType: "address", name: "taker", type: "address" },
          { internalType: "address", name: "receiver", type: "address" },
          { internalType: "uint256", name: "expiry", type: "uint256" },
          { internalType: "uint256", name: "nonce", type: "uint256" },
          { internalType: "address", name: "executor", type: "address" },
          { internalType: "uint16", name: "minFillPercent", type: "uint16" },
          { internalType: "bytes32", name: "hooksHash", type: "bytes32" },
          { internalType: "address[]", name: "sellTokens", type: "address[]" },
          { internalType: "address[]", name: "buyTokens", type: "address[]" },
          { internalType: "uint256[]", name: "sellAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "sellNFTIds", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyNFTIds", type: "uint256[]" },
          { internalType: "bytes", name: "sellTokenTransfers", type: "bytes" },
          { internalType: "bytes", name: "buyTokenTransfers", type: "bytes" },
        ],
        internalType: "struct JamOrder.Data[]",
        name: "orders",
        type: "tuple[]",
      },
      {
        components: [
          {
            internalType: "enum Signature.Type",
            name: "signatureType",
            type: "uint8",
          },
          { internalType: "bytes", name: "signatureBytes", type: "bytes" },
        ],
        internalType: "struct Signature.TypedSignature[]",
        name: "signatures",
        type: "tuple[]",
      },
      {
        components: [
          {
            internalType: "bytes[]",
            name: "permitSignatures",
            type: "bytes[]",
          },
          {
            internalType: "bytes",
            name: "signatureBytesPermit2",
            type: "bytes",
          },
          { internalType: "uint48[]", name: "noncesPermit2", type: "uint48[]" },
          { internalType: "uint48", name: "deadline", type: "uint48" },
        ],
        internalType: "struct Signature.TakerPermitsInfo[]",
        name: "takersPermitsInfo",
        type: "tuple[]",
      },
      {
        components: [
          { internalType: "bool", name: "result", type: "bool" },
          { internalType: "address", name: "to", type: "address" },
          { internalType: "uint256", name: "value", type: "uint256" },
          { internalType: "bytes", name: "data", type: "bytes" },
        ],
        internalType: "struct JamInteraction.Data[]",
        name: "interactions",
        type: "tuple[]",
      },
      {
        components: [
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "beforeSettle",
            type: "tuple[]",
          },
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "afterSettle",
            type: "tuple[]",
          },
        ],
        internalType: "struct JamHooks.Def[]",
        name: "hooks",
        type: "tuple[]",
      },
      {
        components: [
          {
            internalType: "address",
            name: "balanceRecipient",
            type: "address",
          },
          {
            internalType: "uint16[]",
            name: "curFillPercents",
            type: "uint16[]",
          },
          {
            internalType: "bool[]",
            name: "takersPermitsUsage",
            type: "bool[]",
          },
          { internalType: "bool", name: "transferExactAmounts", type: "bool" },
        ],
        internalType: "struct ExecInfo.BatchSolverData",
        name: "solverData",
        type: "tuple",
      },
    ],
    name: "settleBatch",
    outputs: [],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          { internalType: "address", name: "taker", type: "address" },
          { internalType: "address", name: "receiver", type: "address" },
          { internalType: "uint256", name: "expiry", type: "uint256" },
          { internalType: "uint256", name: "nonce", type: "uint256" },
          { internalType: "address", name: "executor", type: "address" },
          { internalType: "uint16", name: "minFillPercent", type: "uint16" },
          { internalType: "bytes32", name: "hooksHash", type: "bytes32" },
          { internalType: "address[]", name: "sellTokens", type: "address[]" },
          { internalType: "address[]", name: "buyTokens", type: "address[]" },
          { internalType: "uint256[]", name: "sellAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "sellNFTIds", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyNFTIds", type: "uint256[]" },
          { internalType: "bytes", name: "sellTokenTransfers", type: "bytes" },
          { internalType: "bytes", name: "buyTokenTransfers", type: "bytes" },
        ],
        internalType: "struct JamOrder.Data",
        name: "order",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "enum Signature.Type",
            name: "signatureType",
            type: "uint8",
          },
          { internalType: "bytes", name: "signatureBytes", type: "bytes" },
        ],
        internalType: "struct Signature.TypedSignature",
        name: "signature",
        type: "tuple",
      },
      {
        components: [
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "beforeSettle",
            type: "tuple[]",
          },
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "afterSettle",
            type: "tuple[]",
          },
        ],
        internalType: "struct JamHooks.Def",
        name: "hooks",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "uint256[]",
            name: "increasedBuyAmounts",
            type: "uint256[]",
          },
          { internalType: "uint16", name: "curFillPercent", type: "uint16" },
        ],
        internalType: "struct ExecInfo.MakerData",
        name: "makerData",
        type: "tuple",
      },
    ],
    name: "settleInternal",
    outputs: [],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          { internalType: "address", name: "taker", type: "address" },
          { internalType: "address", name: "receiver", type: "address" },
          { internalType: "uint256", name: "expiry", type: "uint256" },
          { internalType: "uint256", name: "nonce", type: "uint256" },
          { internalType: "address", name: "executor", type: "address" },
          { internalType: "uint16", name: "minFillPercent", type: "uint16" },
          { internalType: "bytes32", name: "hooksHash", type: "bytes32" },
          { internalType: "address[]", name: "sellTokens", type: "address[]" },
          { internalType: "address[]", name: "buyTokens", type: "address[]" },
          { internalType: "uint256[]", name: "sellAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "sellNFTIds", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyNFTIds", type: "uint256[]" },
          { internalType: "bytes", name: "sellTokenTransfers", type: "bytes" },
          { internalType: "bytes", name: "buyTokenTransfers", type: "bytes" },
        ],
        internalType: "struct JamOrder.Data",
        name: "order",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "enum Signature.Type",
            name: "signatureType",
            type: "uint8",
          },
          { internalType: "bytes", name: "signatureBytes", type: "bytes" },
        ],
        internalType: "struct Signature.TypedSignature",
        name: "signature",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "bytes[]",
            name: "permitSignatures",
            type: "bytes[]",
          },
          {
            internalType: "bytes",
            name: "signatureBytesPermit2",
            type: "bytes",
          },
          { internalType: "uint48[]", name: "noncesPermit2", type: "uint48[]" },
          { internalType: "uint48", name: "deadline", type: "uint48" },
        ],
        internalType: "struct Signature.TakerPermitsInfo",
        name: "takerPermitsInfo",
        type: "tuple",
      },
      {
        components: [
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "beforeSettle",
            type: "tuple[]",
          },
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "afterSettle",
            type: "tuple[]",
          },
        ],
        internalType: "struct JamHooks.Def",
        name: "hooks",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "uint256[]",
            name: "increasedBuyAmounts",
            type: "uint256[]",
          },
          { internalType: "uint16", name: "curFillPercent", type: "uint16" },
        ],
        internalType: "struct ExecInfo.MakerData",
        name: "makerData",
        type: "tuple",
      },
    ],
    name: "settleInternalWithPermitsSignatures",
    outputs: [],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          { internalType: "address", name: "taker", type: "address" },
          { internalType: "address", name: "receiver", type: "address" },
          { internalType: "uint256", name: "expiry", type: "uint256" },
          { internalType: "uint256", name: "nonce", type: "uint256" },
          { internalType: "address", name: "executor", type: "address" },
          { internalType: "uint16", name: "minFillPercent", type: "uint16" },
          { internalType: "bytes32", name: "hooksHash", type: "bytes32" },
          { internalType: "address[]", name: "sellTokens", type: "address[]" },
          { internalType: "address[]", name: "buyTokens", type: "address[]" },
          { internalType: "uint256[]", name: "sellAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyAmounts", type: "uint256[]" },
          { internalType: "uint256[]", name: "sellNFTIds", type: "uint256[]" },
          { internalType: "uint256[]", name: "buyNFTIds", type: "uint256[]" },
          { internalType: "bytes", name: "sellTokenTransfers", type: "bytes" },
          { internalType: "bytes", name: "buyTokenTransfers", type: "bytes" },
        ],
        internalType: "struct JamOrder.Data",
        name: "order",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "enum Signature.Type",
            name: "signatureType",
            type: "uint8",
          },
          { internalType: "bytes", name: "signatureBytes", type: "bytes" },
        ],
        internalType: "struct Signature.TypedSignature",
        name: "signature",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "bytes[]",
            name: "permitSignatures",
            type: "bytes[]",
          },
          {
            internalType: "bytes",
            name: "signatureBytesPermit2",
            type: "bytes",
          },
          { internalType: "uint48[]", name: "noncesPermit2", type: "uint48[]" },
          { internalType: "uint48", name: "deadline", type: "uint48" },
        ],
        internalType: "struct Signature.TakerPermitsInfo",
        name: "takerPermitsInfo",
        type: "tuple",
      },
      {
        components: [
          { internalType: "bool", name: "result", type: "bool" },
          { internalType: "address", name: "to", type: "address" },
          { internalType: "uint256", name: "value", type: "uint256" },
          { internalType: "bytes", name: "data", type: "bytes" },
        ],
        internalType: "struct JamInteraction.Data[]",
        name: "interactions",
        type: "tuple[]",
      },
      {
        components: [
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "beforeSettle",
            type: "tuple[]",
          },
          {
            components: [
              { internalType: "bool", name: "result", type: "bool" },
              { internalType: "address", name: "to", type: "address" },
              { internalType: "uint256", name: "value", type: "uint256" },
              { internalType: "bytes", name: "data", type: "bytes" },
            ],
            internalType: "struct JamInteraction.Data[]",
            name: "afterSettle",
            type: "tuple[]",
          },
        ],
        internalType: "struct JamHooks.Def",
        name: "hooks",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "address",
            name: "balanceRecipient",
            type: "address",
          },
          { internalType: "uint16", name: "curFillPercent", type: "uint16" },
        ],
        internalType: "struct ExecInfo.SolverData",
        name: "solverData",
        type: "tuple",
      },
    ],
    name: "settleWithPermitsSignatures",
    outputs: [],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [{ internalType: "bytes4", name: "interfaceId", type: "bytes4" }],
    name: "supportsInterface",
    outputs: [{ internalType: "bool", name: "", type: "bool" }],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      { internalType: "address", name: "receiver", type: "address" },
      { internalType: "uint256", name: "amount", type: "uint256" },
    ],
    name: "transferNativeFromContract",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      { internalType: "address", name: "validationAddress", type: "address" },
      { internalType: "bytes32", name: "hash", type: "bytes32" },
      {
        components: [
          {
            internalType: "enum Signature.Type",
            name: "signatureType",
            type: "uint8",
          },
          { internalType: "bytes", name: "signatureBytes", type: "bytes" },
        ],
        internalType: "struct Signature.TypedSignature",
        name: "signature",
        type: "tuple",
      },
    ],
    name: "validateSignature",
    outputs: [],
    stateMutability: "view",
    type: "function",
  },
  { stateMutability: "payable", type: "receive" },
];
export default ABI;


================================================
FILE: aggregators/bim/config.ts
================================================
import { CHAIN } from "../../helpers/chains";

const SocketGatewayContracts: { [key: string]: string } = {
    [CHAIN.ETHEREUM]: '0x3a23f943181408eac424116af7b7790c94cb97a5',
    [CHAIN.ARBITRUM]: '0x3a23f943181408eac424116af7b7790c94cb97a5',
    [CHAIN.OPTIMISM]: '0x3a23f943181408eac424116af7b7790c94cb97a5',
    [CHAIN.BASE]: '0x3a23f943181408eac424116af7b7790c94cb97a5',
    [CHAIN.BSC]: '0x3a23f943181408eac424116af7b7790c94cb97a5',
    [CHAIN.POLYGON]: '0x3a23f943181408eac424116af7b7790c94cb97a5',
}

const BungeeGatewayContracts: {
    [key: string]: {
        audited: Array<string>;
        unaudited: Array<string>;
    }
} = {
    [CHAIN.ETHEREUM]: {
        audited: [],
        unaudited: ['0xe772551F88E2c14aEcC880dF6b7CBd574561bf82'],
    },
    [CHAIN.OPTIMISM]: {
        audited: ['0x09DAbdD517Ff1e155DeDEF64EC629Ca0285a31af'],
        unaudited: ['0x9c366293ba7e893cE184d75794330d674E4D17c2']
    },
    [CHAIN.BASE]: {
        audited: ['0x84F06fBaCc4b64CA2f72a4B26191DAD97f2b52BA'],
        unaudited: ['0x01710cdb7319292ed50a3f92561a599f5c650e2c'],
    },
    [CHAIN.ARBITRUM]: {
        audited: ['0xCdEa28Ee7BD5bf7710B294d9391e1b6A318d809a'],
        unaudited: ['0x8d00ad02df0c7b0c379bc1cb49fd74aa10698bfc'],
    },
    [CHAIN.BSC]: {
        audited: ['0x9aF2b913679049c966b77934af4CbE7Bb36Cf9D3'],
        unaudited: ['0x6a138b12be537e3b47328d627c1699bfaaaa68ce'],
    },
    [CHAIN.POLYGON]: {
        audited: ['0x6DDe7CF4e6A6f53F058Bf5d2B4a54aFBba11EE54'],
        unaudited: ['0x652e1b759516fe79b2b63753f1c7b3c44faa3df8'],
    },
    [CHAIN.XDAI]: {
        audited: [
            '0x5e01dbBBe59F8987673FAdD1469DdD2Be71e00af',
        ],
        unaudited: ['0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849'],
    },
    [CHAIN.PLASMA]: {
        audited: ['0x8f503B6d9fFdae8d375d1E226b71B4B3144D3849'],
        unaudited: [],
    },
}

export function fetchBimChains(): Array<string> {
    const chains: { [key: string]: boolean } = {}
    for (const chain of Object.keys(SocketGatewayContracts).concat(Object.keys(BungeeGatewayContracts))) {
        chains[chain] = true
    }
    return Object.keys(chains)
}


================================================
FILE: aggregators/bim/index.ts
================================================
import { FetchOptions, FetchResultVolume, SimpleAdapter } from "../../adapters/types";
import { fetchBungeeData } from "../../helpers/aggregators/bungee";
import { fetchBimChains } from "./config";


const fetch: any = async (options: FetchOptions): Promise<FetchResultVolume> => {
    const { dailyVolume } = await fetchBungeeData(options, { swapVolume: true }, '2758')
    return {
        dailyVolume,
    };
};

const adapter: SimpleAdapter = {
    version: 2,
    pullHourly: true,
    doublecounted: true, //Bungee
    adapter: fetchBimChains().reduce((acc, chain) => {
        return {
            ...acc,
            [chain]: {
                fetch,
                start: '2026-01-13',
            }
        }
    }, {})
};

export default adapter;


================================================
FILE: aggregators/binancewallet/index.ts
================================================
import { Dependencies, FetchOptions, FetchResult, SimpleAdapter } from "../../adapters/types";
import { queryDuneSql } from "../../helpers/dune";
import { CHAIN } from "../../helpers/chains";
import { getAllDexTokensBlacklisted } from "../../helpers/lists";

const chainsMap: Record<string, string> = {
  [CHAIN.ETHEREUM]: 'ethereum',
  [CHAIN.ARBITRUM]: 'arbitrum',
  [CHAIN.POLYGON]: 'polygon',
  [CHAIN.BSC]: 'bnb',
  [CHAIN.AVAX]: 'avalanche_c',
  [CHAIN.OPTIMISM]: 'optimism',
  [CHAIN.BASE]: 'base',
  [CHAIN.LINEA]: 'linea',
  [CHAIN.SONIC]: 'sonic',
  [CHAIN.ERA]: 'zksync',
  [CHAIN.SOLANA]: 'solana',
  [CHAIN.PLASMA]: 'plasma'
};

const prefetch = async (options: FetchOptions) => {
  const blacklisted = getAllDexTokensBlacklisted();

  const sql_query = `
  with sol as (
        select
            tx_id
            , blockchain
            , block_time
            , trader_id tx_from
            , sum(amount_usd) amount_usd
            from dex_solana.trades
            where 1 = 1
            and TIME_RANGE
            and block_month >= date '2025-01-01'
            group by 1 , 2 , 3 , 4
    )
        , binance_wallet_tx as (
        select
            id as tx_id
            , block_date
            from solana.transactions
            , unnest (post_token_balances) as t (account, mint, owner, amount)
            , unnest (pre_token_balances) as t2 (account, mint, owner, amount)
            where (
                    t.owner in ('B3111yJCeHBcA1bizdJjUFPALfhAfSRnAbJzGUtnt56A')
                or t2.owner in ('B3111yJCeHBcA1bizdJjUFPALfhAfSRnAbJzGUtnt56A')
                or contains(account_keys, 'B3111yJCeHBcA1bizdJjUFPALfhAfSRnAbJzGUtnt56A')
                )
            and TIME_RANGE
            and success = true
            group by 1, 2
    )
        , evm as (
        select
            tx_hash
            , blockchain
            , tx_from
            , tx_to
            , block_date
            , evt_index
            , amount_usd
            from dex.trades
            where tx_to in (
                0xb300000b72DEAEb607a12d5f54773D1C19c7028d, -- all others  
                0x45a0B6ac062a6F137dDC12C01E580cfed1A6F4EC,  -- zksync  
                0xe8B592a331a192d5988EFFff40586CF032e26277,  -- linena  
                0x610776e63C5ca21B92217F4c06398E5437dB6A1E --sonic and plasma
                )
            and not amount_usd is null
            and TIME_RANGE
            and token_sold_address NOT IN (${blacklisted.toString()}) 
            and token_bought_address NOT IN (${blacklisted.toString()}) 
    )
        , total as (
        select
            blockchain
            , sum(a.amount_usd) as trading_volume
            from sol a
                inner join binance_wallet_tx b on a.tx_id = b.tx_id
            where a.amount_usd < 10000000
            group by 1
            union all
        select
            blockchain
            , SUM(amount_usd) as trading_volume
            from evm
            where amount_usd < 10000000
            group by 1
    )
    select
        blockchain
        , sum(trading_volume) as volume_24h
    from total
    group by 1
  `;
  const result = await queryDuneSql(options, sql_query);

  return result;
};

const fetch = async (_a: any, _b: any, options: FetchOptions): Promise<FetchResult> => {
  const results = options.preFetchedResults || [];
  const chainData = results.find((item: any) => item.blockchain === chainsMap[options.chain]);

  return {
    dailyVolume: chainData ? chainData.volume_24h : 0,
  };
};

const adapter: SimpleAdapter = {
  version: 1,
  dependencies: [Dependencies.DUNE],
  fetch,
  chains: Object.keys(chainsMap),
  start: "2025-01-01",
  prefetch,
  isExpensiveAdapter: true,
};

export default adapter;

================================================
FILE: aggregators/bitgetwallet/index.ts
================================================
import { FetchOptions, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import fetchURL from "../../utils/fetchURL";

const historicalVolumeEndpoint = "https://api-3rd.bitkeep.com/swap-go/open/getOrderDayVolume"

interface IVolumeall {
  volume: string;
  date: string;
}

//https://dune.com/queries/5561137/9053445
const inflatedApiVolumes: Record<string, { date: string, realVolume: number }[]> = {
  [CHAIN.SOLANA]: [
    {
      date: "2026-03-22",
      realVolume: 2681396
    }
  ],
  [CHAIN.ETHEREUM]: [
    {
      date: "2026-04-11",
      realVolume: 10274944
    }
  ],
  [CHAIN.BSC]: [
    {
      date: "2026-04-23",
      realVolume: 1928246
    },
    {
      date: "2026-04-26",
      realVolume: 7203337
    },
  ]
}

// to compute volume on chain: https://github.com/DefiLlama/dimension-adapters/pull/2059#issuecomment-2469986758
const fetch = async (_a: any, _b: any, options: FetchOptions) => {
  if (inflatedApiVolumes[options.chain]) {
    const realVolume = inflatedApiVolumes[options.chain].find(item => item.date === options.dateString)?.realVolume;
    if (realVolume) return { dailyVolume: realVolume }
  }
  const historicalVolume: IVolumeall[] = (await fetchURL(historicalVolumeEndpoint + `?chain=${options.chain}`))?.data?.list;
  const dailyVolume = historicalVolume?.find(dayItem => (new Date(dayItem.date).getTime() / 1000) === options.startOfDay)?.volume

  return { dailyVolume };
}

const CHAINS: Array<CHAIN> = [
  CHAIN.APTOS,
  CHAIN.HYPERLIQUID,
  CHAIN.SOLANA,
  CHAIN.BLAST,
  CHAIN.BITCOIN,
  CHAIN.ARBITRUM,
  CHAIN.KLAYTN,
  CHAIN.SONIC,
  CHAIN.MANTLE,
  CHAIN.RIPPLE,
  CHAIN.AVAX,
  CHAIN.LINEA,
  CHAIN.SUI,
  CHAIN.SCROLL,
  CHAIN.BASE,
  CHAIN.POLYGON,
  CHAIN.TON,
  CHAIN.CRONOS,
  CHAIN.DOGECHAIN,
  CHAIN.BERACHAIN,
  CHAIN.MONAD,
  CHAIN.TRON,
  CHAIN.CELO,
  CHAIN.BSC,
  CHAIN.MORPH,
  CHAIN.XLAYER,
  CHAIN.CORE,
  CHAIN.OP_BNB,
  CHAIN.ZKSYNC,
  CHAIN.ETHEREUM,
  CHAIN.OPTIMISM,
  CHAIN.FANTOM,
  CHAIN.PLASMA,
  CHAIN.SEI
];

const adapter: SimpleAdapter = {
  version: 1,
  fetch,
  chains: CHAINS,
  start: '2025-04-01',
  runAtCurrTime: true, //API has results only for the latest day
};

export default adapter;


================================================
FILE: aggregators/bluefin7k-aggregator/index.ts
================================================
import fetchURL from '../../utils/fetchURL';
import { FetchV2, SimpleAdapter } from '../../adapters/types';
import { CHAIN } from '../../helpers/chains';

// Bluefin7K Aggregator temporary use 7k.ag API to get volume data
const URL = 'https://statistic.7k.ag';

const fetch: FetchV2 = async ({ fromTimestamp, toTimestamp }) => {
	const dailyVolume = await fetchURL(
		`${URL}/volume-with-ts?from_timestamp=${fromTimestamp}&to_timestamp=${toTimestamp}`,
	);
	return { dailyVolume };
};

const adapter: SimpleAdapter = {
	version: 2,
	adapter: {
		[CHAIN.SUI]: {
			fetch,
			start: '2025-06-03',
		},
	},
};

export default adapter;

================================================
FILE: aggregators/bountive/index.ts
================================================
import fetchURL from "../../utils/fetchURL";
import { FetchOptions, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

const URL = 'https://api.bountive.fi/metrics/volume/';

interface IAPIResponse {
    date: number;
    dailyVolume: string;
}

const fetch = async ({ endTimestamp, startTimestamp }: FetchOptions) => {
    const { dailyVolume }: IAPIResponse = await fetchURL(
      `${URL}${startTimestamp * 1000}/${endTimestamp * 1000}`,
    );
    return {
      dailyVolume,
    };
};
  
const adapter: SimpleAdapter = {
    version: 2,
    adapter: {
        [CHAIN.STARKNET]: {
            fetch: fetch,
            start: '2024-11-20',
        },
    },
};

export default adapter;

================================================
FILE: aggregators/bungee-dex.ts
================================================
import { FetchOptions, FetchResultVolume, SimpleAdapter } from "../adapters/types";
import { fetchBungeeChains, fetchBungeeData } from "../helpers/aggregators/bungee";

const fetch: any = async (options: FetchOptions): Promise<FetchResultVolume> => {
  const { dailyVolume } = await fetchBungeeData(options, { swapVolume: true })
  return { 
    dailyVolume,
  };
};

const adapter: SimpleAdapter = {
  pullHourly: true,
  version: 2,
  adapter: fetchBungeeChains().reduce((acc, chain) => {
    return {
      ...acc,
      [chain]: {
        fetch,
        start: '2023-08-10',
      }
    }
  }, {})
};

export default adapter;


================================================
FILE: aggregators/bytzz/index.ts
================================================
import fetchURL from "../../utils/fetchURL";
import { CHAIN } from "../../helpers/chains";
import { FetchOptions, SimpleAdapter } from "../../adapters/types";

const fetch = async (_:any, _1:any, { startOfDay }: FetchOptions) => {
  const data = await fetchURL(
    `https://bytzz.xyz/api/stats?timestamp=${startOfDay}`
  );
  if (!data) throw new Error("No data");

  return {
    dailyVolume: data?.volume24h,
  };
};

const adapter: SimpleAdapter = {
  fetch,
  start: "2025-08-26",
  methodology: {
    Volume: "Volume from Bytzz",
  },
  chains: [CHAIN.XLAYER],
};

export default adapter;

================================================
FILE: aggregators/carina-aggregator/index.ts
================================================
import fetchURL from "../../utils/fetchURL";
import { FetchOptions } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

const URL = "https://core.carina.finance/v1/orders/volume";

const fetch = async ({ fromTimestamp, toTimestamp }: FetchOptions) => {
  const response = await fetchURL(
    `${URL}?startTimestamp=${fromTimestamp}&endTimestamp=${toTimestamp}`,
  );
  return { dailyVolume: response.data.volume };
};

export default {
  version: 2,
  adapter: {
    [CHAIN.SEI]: {
      fetch,
      start: "2025-11-03",
    },
  },
};


================================================
FILE: aggregators/cetus-aggregator/index.ts
================================================
import { CHAIN } from "../../helpers/chains";
import { httpGet } from "../../utils/fetchURL";
import { FetchOptions } from "../../adapters/types";

const fetchVolume = async (options: FetchOptions) => {
  const url = `https://api-sui.cetus.zone/v3/sui/vol/aggregator/time_range?date_type=hour&start_time=${options.startTimestamp}&end_time=${options.endTimestamp}`;
  const res = await httpGet(url);
  return {
    dailyVolume: res.data.vol_in_usd,
  }
};

const adapter_agge: any = {
  version: 2,
  adapter: {
    [CHAIN.SUI]: {
      fetch: fetchVolume,
      start: '2024-07-18',
    },
  },
};

export default adapter_agge;

================================================
FILE: aggregators/chainspot/index.ts
================================================
import { httpGet } from "../../utils/fetchURL";
import { CHAIN } from "../../helpers/chains";
import { FetchOptions, SimpleAdapter } from "../../adapters/types";

const chains = [
    CHAIN.ETHEREUM,
    CHAIN.POLYGON,
    CHAIN.BSC,
    CHAIN.AVAX,
    CHAIN.OPTIMISM,
    CHAIN.FANTOM,
    CHAIN.ARBITRUM,
    CHAIN.AURORA,
    CHAIN.CELO,
    CHAIN.BOBA,
    CHAIN.XDAI,
    CHAIN.TELOS,
    CHAIN.BASE,
    CHAIN.LINEA,
    CHAIN.MANTLE,
    CHAIN.MOONBEAM,
    CHAIN.CRONOS,
    CHAIN.BLAST,
    CHAIN.EVMOS,
    CHAIN.FUSE,
    CHAIN.HARMONY,
    CHAIN.KAVA,
    CHAIN.MOONRIVER,
    CHAIN.OKEXCHAIN,
    CHAIN.SCROLL,
    CHAIN.TRON,
    CHAIN.TON,
    CHAIN.WAN,
    CHAIN.ZKLINK,
    CHAIN.ZKSYNC,
];

const chainToId: Record<string, number> = {
    [CHAIN.ETHEREUM]: 1,
    [CHAIN.POLYGON]: 137,
    [CHAIN.BSC]: 56,
    [CHAIN.AVAX]: 43114,
    [CHAIN.OPTIMISM]: 10,
    [CHAIN.FANTOM]: 250,
    [CHAIN.ARBITRUM]: 42161,
    [CHAIN.AURORA]: 1313161554,
    [CHAIN.CELO]: 42220,
    [CHAIN.BOBA]: 288,
    [CHAIN.XDAI]: 100,
    [CHAIN.TELOS]: 40,
    [CHAIN.BASE]: 8453,
    [CHAIN.LINEA]: 59144,
    [CHAIN.MANTLE]: 5000,
    [CHAIN.MOONBEAM]: 1284,
    [CHAIN.CRONOS]: 25,
    [CHAIN.BLAST]: 81457,
    [CHAIN.EVMOS]: 9001,
    [CHAIN.FUSE]: 122,
    [CHAIN.HARMONY]: 1666600000,
    [CHAIN.KAVA]: 2222,
    [CHAIN.MOONRIVER]: 1285,
    [CHAIN.OKEXCHAIN]: 66,
    [CHAIN.SCROLL]: 534352,
    [CHAIN.TRON]: 728126428,
    [CHAIN.TON]: -239,
    [CHAIN.WAN]: 888,
    [CHAIN.ZKLINK]: 810180,
    [CHAIN.ZKSYNC]: 324,
};

const fetch = async (_at: number, _t: any, options: FetchOptions) => {
    const startOfDay = options.startOfDay
    const url = `https://app.chainspot.io/api/2.0/statistic/daily-volume?chainId=${chainToId[options.chain]}&timestamp=${startOfDay * 1e3}`;
    const volume = (
        await httpGet(url)
    )?.volume;

    return {
        dailyVolume: volume || 0,
    };
};

const adapter: SimpleAdapter = {
    fetch, chains,
};

export default adapter;


================================================
FILE: aggregators/chimpx/index.ts
================================================
import { CHAIN } from "../../helpers/chains";
import { FetchOptions, FetchResultVolume, SimpleAdapter } from "../../adapters/types";

// ChimpXVolumeRegistry deployed on BSC mainnet at block 82131810
// https://bscscan.com/address/0x8327839597934e1490f90D06F2b0A549dFC7edeB
const VOLUME_REGISTRY = "0x8327839597934e1490f90D06F2b0A549dFC7edeB";

// VolumeRegistered(address indexed user, uint8 indexed actionType, uint256 volumeUsd, bytes32 txRef, uint256 timestamp)
const EVENT_ABI = "event VolumeRegistered(address indexed user, uint8 indexed actionType, uint256 volumeUsd, bytes32 txRef, uint256 timestamp)";

const fetch = async (options: FetchOptions): Promise<FetchResultVolume> => {
  const dailyVolume = options.createBalances();

  // Trust model: volumeUsd values are relayer-attested. The ChimpX backend
  // relayer calls registerVolume() on-chain after verifying each completed
  // transaction (swap, bridge, lend, borrow, stake, perps) via the underlying
  // protocol's own on-chain receipt. The relayer wallet address is public and
  // auditable on BSCScan. Volume figures are denominated in USD with 18 decimals
  // and correspond to the input/output token value of the routed transaction.
  const logs = await options.getLogs({
    target: VOLUME_REGISTRY,
    eventAbi: EVENT_ABI,
  });

  for (const log of logs) {
    // volumeUsd is stored with 18 decimals; addUSDValue expects a plain number
    const volumeUsd = Number(log.volumeUsd) / 1e18;
    dailyVolume.addUSDValue(volumeUsd);
  }

  return { dailyVolume };
};

const adapter: SimpleAdapter = {
  version: 2,
  pullHourly: true,
  adapter: {
    [CHAIN.BSC]: {
      fetch,
      start: '2026-02-19',
    },
  },
  methodology: {
    Volume: "Volume is tracked via VolumeRegistered events emitted by the ChimpXVolumeRegistry contract on BNB Chain. The ChimpX backend relayer records USD volume (18 decimals) on-chain after each verified transaction. Covers swaps, bridges, lending, borrowing, staking, unstaking, and perpetuals (long/short) routed through the ChimpX AI-powered DeFi agent.",
  },
};

export default adapter;


================================================
FILE: aggregators/conveyor/index.ts
================================================
import { Dependencies, FetchOptions, FetchResult, SimpleAdapter, } from "../../adapters/types";
import { getSqlFromFile, queryDuneSql } from "../../helpers/dune";
import { CHAIN } from "../../helpers/chains";

const chainsMap: Record<string, string> = {
  ETHEREUM: CHAIN.ETHEREUM,
  ARBITRUM: CHAIN.ARBITRUM,
  POLYGON: CHAIN.POLYGON,
  BNB: CHAIN.BSC,
  OPTIMISM: CHAIN.OPTIMISM,
  BASE: CHAIN.BASE,
};

const prefetch = async (options: FetchOptions) => {
  const sql_query = getSqlFromFile('helpers/queries/conveyor.sql', {startTimestamp: options.startTimestamp, endTimestamp: options.endTimestamp})
  return await queryDuneSql(options, sql_query);
}

const fetch = async (_a:any, _b:any, options: FetchOptions): Promise<FetchResult> => {
  const results = options.preFetchedResults || [];
  const chainData = results.find((item: any) => chainsMap[item.blockchain] === options.chain.toLowerCase());

  return {
    dailyVolume: chainData?.volume_24h || 0,
  };
}


const adapter: SimpleAdapter = {
  version: 1,
  dependencies: [Dependencies.DUNE],
  adapter: {
    ...Object.values(chainsMap).reduce((acc, chain) => {
      return {
        ...acc,
        [(chainsMap as any)[chain] || chain]: {
          fetch: fetch,
          runAtCurrTime: true,
          start: '2023-08-24',
        },
      };
    }, {}),
  },
  prefetch,
  isExpensiveAdapter: true,
};

export default adapter;


================================================
FILE: aggregators/cowswap/index.ts
================================================
import { FetchOptions } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

const abis = {
  "Trade": "event Trade(address indexed owner, address sellToken, address buyToken, uint256 sellAmount, uint256 buyAmount, uint256 feeAmount, bytes orderUid)", // gnosis
}

const fetch = async ({ createBalances, getLogs, }: FetchOptions) => {
  const dailyVolume = createBalances()

  const logs = await getLogs({ target: '0x9008d19f58aabd9ed0d60971565aa8510560ab41', eventAbi: abis.Trade, })
  logs.forEach((log: any) => {
    dailyVolume.add(log.buyToken, log.buyAmount)
  })
  return { dailyVolume }
};

const adapter: any = {
  version: 2,
  fetch,
  adapter: {
    [CHAIN.ETHEREUM]: { start: '2023-05-31', },
    [CHAIN.XDAI]: { start: '2023-05-31', },
    [CHAIN.ARBITRUM]: { start: '2024-04-26', },
    [CHAIN.BASE]: { start: '2024-12-10', },
    [CHAIN.POLYGON]: { start: '2023-12-10', },
    [CHAIN.AVAX]: { start: '2025-03-10', },
    [CHAIN.LENS]: { start: '2025-06-16', },
    [CHAIN.BSC]: { start: '2025-09-04', },
  },
};

export default adapter;


================================================
FILE: aggregators/cro-ag/index.ts
================================================
import { CHAIN } from '../../helpers/chains'
import { httpGet } from '../../utils/fetchURL'
import { FetchOptions } from '../../adapters/types'

const fetchVolume = async (options: FetchOptions) => {
	const url = `https://cro.ag/api/volume?start_time=${options.startTimestamp}&end_time=${options.endTimestamp}`
	const res = await httpGet(url)
	return {
		dailyVolume: res.data.vol_in_usd,
	}
}

const adapter: any = {
	version: 2,
	adapter: {
		[CHAIN.SUI]: {
			fetch: fetchVolume,
			start: '2025-03-19',
		},
	},
}

export default adapter


================================================
FILE: aggregators/dedust/index.ts
================================================
import { CHAIN } from "../../helpers/chains";
import { Dependencies, FetchOptions } from "../../adapters/types";
import { queryDuneSql } from "../../helpers/dune";

const fetch = async (_a: any, _b: any, options: FetchOptions) => {
  const data = await queryDuneSql(
    options,
    `
    WITH jetton_query AS (
      SELECT
        trace_id,
        block_time,
        block_date,
        MAX(query_id) AS query_id
      FROM ton.jetton_events
      WHERE block_time >= from_unixtime(${options.startTimestamp})
        AND block_time < from_unixtime(${options.endTimestamp})
      GROUP BY trace_id, block_time, block_date
    )
    SELECT
      SUM(dt.volume_usd) as volume_usd
    FROM ton.dex_trades AS dt
    LEFT JOIN jetton_query AS je
      ON dt.trace_id = je.trace_id
      AND dt.block_time = je.block_time
    WHERE
      BITWISE_RIGHT_SHIFT(COALESCE(dt.query_id, je.query_id), 32) = 988556692
      AND dt.block_time >= from_unixtime(${options.startTimestamp})
      AND dt.block_time < from_unixtime(${options.endTimestamp});
  `,
  );

  const chainData = data[0];
  if (!chainData) throw new Error(`Dune query failed: ${JSON.stringify(data)}`);

  return {
    dailyVolume: chainData.volume_usd || "0",
  };
};

const adapter: any = {
  version: 1,
  dependencies: [Dependencies.DUNE],
  fetch,
  start: "2025-03-14",
  methodology: {
    Volume:
      "Volume is calculated by summing the USD volume of all trades routed through the DeDust aggregator that day.",
  },
  chains: [CHAIN.TON],
};

export default adapter;


================================================
FILE: aggregators/defiapp/index.ts
================================================
import { SimpleAdapter, FetchOptions } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { getEnv } from "../../helpers/env";
import { httpGet } from "../../utils/fetchURL";

const defiAppChainIdMap: Record<string, any> = {
  [CHAIN.ETHEREUM]: {
    id: "1",
    start: "2025-02-13",
  },
  [CHAIN.BSC]: {
    id: "56",
    start: "2025-02-13",
  },
  [CHAIN.ARBITRUM]: {
    id: "42161",
    start: "2025-02-13",
  },
  [CHAIN.SOLANA]: {
    id: "1151111081099710",
    start: "2025-02-13",
  },
  [CHAIN.BASE]: {
    id: "8453",
    start: "2025-02-13",
  },
};

const tsToISO = (ts: number) => new Date(ts * 1e3).toISOString()

const prefetch = async (options: FetchOptions) => {
  const res = await httpGet(`https://api.defi.app/api/stats/volume/between?startRefTime=${tsToISO(options.startTimestamp)}&endRefTime=${tsToISO(options.endTimestamp)}`, {
    headers: {
      "Content-Type": "application/json",
      "X-API-KEY": getEnv('DEFIAPP_API_KEY'),
      User: "defillama",
    },
  });
  return res;
}

const fetch = async (options: FetchOptions) => {
  const results = await options.preFetchedResults || [];
  const dailyVolume = results.perChainUsdVolume[defiAppChainIdMap[options.chain].id];
  return { dailyVolume };
};

const adapter: SimpleAdapter = {
  version: 2,
  adapter: Object.fromEntries(
    Object.entries(defiAppChainIdMap).map(([chain, config]) => [
      chain,
      { fetch, start: config.start }
    ])
  ),
  prefetch
};

export default adapter;


================================================
FILE: aggregators/deluthium/index.ts
================================================
import { FetchOptions } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { addOneToken } from "../../helpers/prices";

const quoteSettledEvent = `event QuoteSettled(
  address indexed maker,
  address indexed payer,
  address indexed inputToken,
  bytes32 quoteId,
  address to,
  address vault,
  address outputToken,
  uint256 grossAmountIn,
  uint256 feeAmount,
  address feeTo,
  uint256 amountOut,
  uint256 nonce
)`;

const settlementContracts: Record<string, string> = {
  [CHAIN.BSC]: "0x5F86475d57e9B488500d3CdA6F6Cb3938B192077",
  [CHAIN.BASE]: "0x5F86475d57e9B488500d3CdA6F6Cb3938B192077",
};

const SWAP_FEE_LABEL = "Swap Fees";

const fetch = async ({ getLogs, createBalances, chain }: FetchOptions) => {
  const settlement = settlementContracts[chain];
  const dailyVolume = createBalances();
  const dailyFees = createBalances();

  const logs = await getLogs({ target: settlement, eventAbi: quoteSettledEvent, });

  logs.forEach((log: any) => {
    addOneToken({ chain, balances: dailyVolume, token0: log.outputToken, amount0: log.amountOut, token1: log.inputToken, amount1: log.grossAmountIn });
    dailyVolume.add(log.outputToken, log.amountOut);
    dailyFees.add(log.feeTo, log.feeAmount, SWAP_FEE_LABEL);
  });

  return { dailyVolume, dailyFees, dailyRevenue: dailyFees, dailyProtocolRevenue: dailyFees, };
};

const methodology = {
  Volume: "Sum of output token amounts from QuoteSettled events emitted by the Deluthium settlement contract.",
  Fees: "Swap fees collected by the Deluthium settlement contract, taken from the feeAmount field of each QuoteSettled event.",
  Revenue: "All swap fees are retained by the protocol.",
  ProtocolRevenue: "All swap fees are retained by the protocol.",
};

const breakdownMethodology = {
  Fees: {
    [SWAP_FEE_LABEL]: "Swap fees paid by the user",
  },
  Revenue: {
    [SWAP_FEE_LABEL]: "Swap fees paid by the user",
  },
  ProtocolRevenue: {
    [SWAP_FEE_LABEL]: "Swap fees paid by the user",
  },
};

const adapter: any = {
  version: 2,
  pullHourly: true,
  fetch,
  adapter: {
    [CHAIN.BSC]: { start: '2026-03-24' },
    [CHAIN.BASE]: { start: '2026-03-24' },
  },
  methodology,
  breakdownMethodology,
};

export default adapter;


================================================
FILE: aggregators/dexhunter/index.ts
================================================
import { postURL } from "../../utils/fetchURL"
import { FetchResult, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

const URL = 'https://api-us.dexhunterv3.app/stats/fear_and_greed';

interface IAPIResponse {
  is_dexhunter: boolean;
  usd_volume: number;
}

const fetchData = async (period: '24h' | 'all'): Promise<string> => {
  const response = await postURL(`${URL}`, { period });
  const data: IAPIResponse[] = response;

  const dexhunterData = data.find(d => d.is_dexhunter);
  if (!dexhunterData) {
    throw new Error('No dexhunter data found');
  }

  return (dexhunterData.usd_volume / 1000000).toString()
}

const fetch = async (): Promise<FetchResult> => {
  const dailyVolume = await fetchData('24h');

  return {
    dailyVolume: dailyVolume,
  };
}

const adapter: SimpleAdapter = {
  adapter: {
    [CHAIN.CARDANO]: {
      fetch,
      runAtCurrTime: true,
      start: '2023-05-15',
    },
  },
};

export default adapter;


================================================
FILE: aggregators/dexr/index.ts
================================================
import { Adapter, FetchOptions } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { METRIC } from "../../helpers/metrics";

// ─────────────────────────────────────────────
// DEXR — DEX Aggregator
// https://dexr.finance
//
// Multi-chain volume tracking via SwapExecuted events emitted by the
// FeeAggregatorMaster contract. Each event represents a single swap
// routed through one of the chain's adapters (Uniswap V3/V4,
// Aerodrome / Velodrome family, Balancer V2/V3, PancakeSwap V3,
// THENA, Kumbaya, Prism, etc.).
//
// The Master contract is the same code on every chain — only the
// adapter set and deployed address differ. That uniformity is what
// makes one adapter file cover all four chains: same event ABI,
// same fee semantics (0.3% on tokenIn), same revenue path (100% to
// the Gnosis Safe replicated across chains via CREATE2).
//
// Scope of this adapter:
//   ✓ DEXR Master swaps on Base, Optimism, MegaETH, BNB Chain
//   ✗ LI.FI bridge / cross-chain swap volume (NOT included here)
//
// Why LI.FI volume is excluded: DEXR is a *direct* LI.FI integrator
// (registered at portal.li.fi as integrator "DEXR" with a 30 BPS fee)
// for cross-chain bridges and same-chain fallback on unsupported
// chains. Those swaps don't pass through the Master contract — they
// go through LI.FI's Diamond contract on each chain, which doesn't
// emit SwapExecuted. The fee paid via LI.FI accrues to the same Safe
// but is withdrawn through portal.li.fi rather than collected
// on-chain at swap time. Tracking that volume requires LI.FI's
// Analytics API (separate adapter — likely belongs under
// bridge-aggregators/, not aggregators/).
// ─────────────────────────────────────────────

// Master contract address per chain. Same Solidity (FeeAggregatorMaster.sol)
// at each address — chain-specific adapter wiring lives off-chain in
// the `registerAdapter` calls made at deploy time.
//
// Note: Optimism and BNB Chain share the same Master address
// (0x7eEdb990…F9377) because the contract was deployed via CREATE2
// with the same salt + bytecode on both chains. They are independent
// deployments — the address collision is by construction, not a typo.
const MASTER_ADDRESS: Record<string, string> = {
    [CHAIN.BASE]:     "0x4859608579D0f01605F6824ea173072a7Cc206c5",
    [CHAIN.OPTIMISM]: "0x7eEdb990a85Fd147BDCdDA651F9419E2741F9377",
    [CHAIN.MEGAETH]:  "0x094AAbf518B483713Fc920eCf8af0922F8E51EFD",
    [CHAIN.BSC]:      "0x7eEdb990a85Fd147BDCdDA651F9419E2741F9377",
};

const SWAP_EXECUTED_EVENT =
    "event SwapExecuted(address indexed user, uint8 indexed adapterId, address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOut, uint256 feeAmount)";

async function fetch(options: FetchOptions) {
    // SEPARATE balance objects for volume / fees / revenue.
    // Do not share references — the framework may post-process each
    // independently, so a shared object would conflate the three.
    const dailyVolume  = options.createBalances();
    const dailyFees    = options.createBalances();
    const dailyRevenue = options.createBalances();

    const target = MASTER_ADDRESS[options.chain];
    if (!target) {
        // Defensive guard — should never trip because `chains` below
        // is the source of truth, but keeps the function honest if
        // the framework ever passes a chain we haven't configured.
        return { dailyVolume, dailyFees, dailyRevenue, dailyProtocolRevenue: dailyRevenue };
    }

    const logs = await options.getLogs({
        target,
        eventAbi: SWAP_EXECUTED_EVENT,
    });

    for (const log of logs) {
        // Volume: sum the *output* token value (industry standard for
        // aggregators). tokenOut is what the user actually receives,
        // after slippage and pool fees.
        dailyVolume.add(log.tokenOut, log.amountOut);

        // Fees: 0.3% protocol fee taken from tokenIn before forwarding
        // to the adapter. Matches feeBps=30 set in the Master constructor.
        dailyFees.add(log.tokenIn, log.feeAmount, METRIC.SWAP_FEES);

        // Revenue: 100% of fees flow to the multisig (no token holders,
        // no buyback). The multisig is the same Safe address replicated
        // to each chain via CREATE2 (0xD55cE54Ce3e0985867CD57f4266c27a5b060D665).
        dailyRevenue.add(log.tokenIn, log.feeAmount, METRIC.SWAP_FEES);
    }

    return {
        dailyVolume,
        dailyFees,
        dailyRevenue,
        dailyProtocolRevenue: dailyRevenue,
    };
}

const methodology = {
    Volume: "Volume is the sum of tokenOut amounts from SwapExecuted events emitted by the DEXR FeeAggregatorMaster contract on each supported chain (Base, Optimism, MegaETH, BNB Chain). tokenOut represents the asset received by the user after the swap completes. Note: this counts only swaps that route through the on-chain Master contract; cross-chain bridges and same-chain swaps that fall back to LI.FI's router are not included here (DEXR is a direct LI.FI integrator but those flows accrue separately).",
    Fees: "DEXR charges a flat 0.3% protocol fee on the input token (tokenIn) of every swap. The feeAmount field of the SwapExecuted event captures this exactly. The same 0.3% rate applies to LI.FI-routed flows but those fees are collected via the LI.FI integrator portal, not on-chain — and are not counted here.",
    Revenue: "100% of the 0.3% protocol fee flows to a Gnosis Safe multisig (no token holders, no buyback). The same Safe address (0xD55cE54Ce3e0985867CD57f4266c27a5b060D665) is replicated across all chains. Revenue equals fees.",
};

const breakdownMethodology = {
    Fees: {
        [METRIC.SWAP_FEES]: "0.3% swap fee charged on input token before swap",
    },
    Revenue: {
        [METRIC.SWAP_FEES]: "0.3% swap fee charged on input token before swap",
    },
    ProtocolRevenue: {
        [METRIC.SWAP_FEES]: "0.3% swap fee charged on input token before swap",
    },
};

const adapter: Adapter = {
    version: 2,
    pullHourly: true,
    // Per-chain start dates. Base was deployed first; Optimism, MegaETH,
    // and BNB Chain followed once the adapter pattern proved stable.
    // Using per-chain `start` keys (not a top-level `start`) so DefiLlama
    // doesn't try to query historical events from before deployment
    // on chains that came online later.
    adapter: {
        [CHAIN.BASE]:     { fetch, start: "2026-05-04" },
        [CHAIN.OPTIMISM]: { fetch, start: "2026-05-09" },
        [CHAIN.MEGAETH]:  { fetch, start: "2026-05-10" },
        [CHAIN.BSC]:      { fetch, start: "2026-05-13" },
    },
    methodology,
    breakdownMethodology,
};

export default adapter;

================================================
FILE: aggregators/dflow/index.ts
================================================
import { CHAIN } from "../../helpers/chains";
import {
  Dependencies,
  FetchOptions,
  SimpleAdapter,
} from "../../adapters/types";
import { queryDuneSql } from "../../helpers/dune";

const fetch = async (_a: any, _b: any, options: FetchOptions) => {
  const data = await queryDuneSql(
    options,
    `
    WITH base_data AS (
      SELECT
        evt_block_time,
        input_mint,
        input_amount,
        output_mint,
        output_amount
      FROM dflow_solana.swap_orchestrator_evt_swapevent
      WHERE evt_block_time >= from_unixtime(${options.startTimestamp})
        AND evt_block_time < from_unixtime(${options.endTimestamp})
    ),
    prices AS (
      SELECT
        timestamp AS minute,
        contract_address_varchar AS mint_address,
        price,
        decimals
      FROM prices.minute
      WHERE timestamp >= from_unixtime(${options.startTimestamp})
        AND timestamp < from_unixtime(${options.endTimestamp})
        AND blockchain = 'solana'
    ),
    volumes AS (
      SELECT
        GREATEST(
          COALESCE(bd.input_amount / POW(10, p_in.decimals) * p_in.price, 0),
          COALESCE(bd.output_amount / POW(10, p_out.decimals) * p_out.price, 0)
        ) AS volume_usd
      FROM base_data bd
      LEFT JOIN prices p_in
        ON DATE_TRUNC('minute', bd.evt_block_time) = p_in.minute
        AND bd.input_mint = p_in.mint_address
      LEFT JOIN prices p_out
        ON DATE_TRUNC('minute', bd.evt_block_time) = p_out.minute
        AND bd.output_mint = p_out.mint_address
    )
    SELECT SUM(volume_usd) AS volume
    FROM volumes
    WHERE volume_usd > 0
  `,
  );

  return {
    dailyVolume: data[0].volume,
  };
};

const adapter: SimpleAdapter = {
  version: 1,
  fetch,
  start: "2025-04-01",
  chains: [CHAIN.SOLANA],
  dependencies: [Dependencies.DUNE],
  methodology: {
    Volume:
      "Volume is calculated by summing the USD value of all trades routed through DFlow aggregator.",
  },
  isExpensiveAdapter: true,
};

export default adapter;


================================================
FILE: aggregators/dirol/index.ts
================================================
import { FetchOptions, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";

const CORE_AGGREGATORS = [
  "0x77E73c3fCd3FEDba383025CDe4a5b97733A34c2E", // v1 (deprecated 2025-12-05 ~ 2026-02-27)
  "0x646462f4d0168A94fE1884c8ae82148a3618A18d", // v2 UUPS proxy (current)
];

const SWAP_EVENT = "event Swap(address indexed sender, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut)";

const fetch = async (options: FetchOptions) => {
  const dailyVolume = options.createBalances();

  const logs = await options.getLogs({
    targets: CORE_AGGREGATORS,
    eventAbi: SWAP_EVENT,
  });

  logs.forEach((log) => {
    dailyVolume.add(log.tokenIn, log.amountIn);
  });

  return { dailyVolume };
};

const adapter: SimpleAdapter = {
  version: 2,
  pullHourly: true,
  methodology: {
    Volume: "Sum of amountIn from Swap events emitted by CORE_AGGREGATOR (tokenIn side).",
  },
  adapter: {
    [CHAIN.MONAD]: {
      fetch,
      start: "2025-12-05",
    },
  },
};

export default adapter;


================================================
FILE: aggregators/dodo-agg/index.ts
================================================
import { FetchOptions, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { getDefaultDexTokensBlacklisted } from "../../helpers/lists";
import { formatAddress } from "../../utils/utils";

// https://api.dodoex.io/dodo-contract/list
const config: any = {
  [CHAIN.ETHEREUM]: {
    DODOFeeRouteProxys: [
      "0x21b9F852534Fb9DdC3A0A7B24f067B50d8AC9a99",
      "0x50f9bDe1c76bba997a5d6e7FEFff695ec8536194",
      "0xFe837A3530dD566401d35beFCd55582AF7c4dfFC",
      "0x5977F12664b4E634dFbAAD0ad4a6a81057254dA8",
    ],
  },
  [CHAIN.OPTIMISM]: {
    DODOFeeRouteProxys: [
      "0x716fcc67dcA500A91B4a28c9255262c398D8f971",
      "0xc7d7CC1e9f5E823887980c9C51F9c418ee3A3e28",
      "0x3a64Ec3606FF7310E8fAd6FcC008e39705fB496d",
      "0x8b09DB11ea380d6454D2592D334FFC319ce6EF3E",
    ],
  },
  [CHAIN.BSC]: {
    DODOFeeRouteProxys: [
      "0xa8b034301Bb5DD3610db585Def3e7C0d52f2319F",
      "0x0656fD85364d03b103CEEda192FB2D3906A6ac15",
      "0xb95ed7e958e196688984951f41ac2888f4b10ab9",
      "0x0343C5757Fb98aD9eF39824e08B852aF61C71c64",
      "0x701Ac6fAD7850956f966a85655348ac1B7c93368",
    ],
  },
  [CHAIN.POLYGON]: {
    DODOFeeRouteProxys: [
      "0x39E3e49C99834C9573c9FC7Ff5A4B226cD7B0E63",
      "0xA103206E7f19d1C1c0e31eFC4DFc7b299630F100",
      "0x46AFE01D758a46d64c7d8E0791314D5db3E2e683",
      "0x3a64Ec3606FF7310E8fAd6FcC008e39705fB496d",
    ],
  },
  [CHAIN.BOBA]: {
    DODOFeeRouteProxys: [
      "0x64842A3EbC09bB69429c1a34ae181375fea5f17F",
      "0xfcA520C94078b65F8237d4F566c438a9468917A1",
    ],
  },
  [CHAIN.CONFLUX]: {
    DODOFeeRouteProxys: [
      "0x3037e79FCe8817A6F21196d8D93C80F53ABB9267",
      "0x5a71a8524477Acd1807CFefD114Bf8904CD8dF96",
    ],
  },
  [CHAIN.MOONRIVER]: {
    DODOFeeRouteProxys: [
      "0x003B18357460e789e711849749A793c430d14f97",
      "0x2144BF2003bFd9Aa0950716333fBb5B7A1Caeda4",
    ],
  },
  [CHAIN.MANTLE]: {
    DODOFeeRouteProxys: [
      "0xB4E598688eC724DD00a8944E7c7b259BbB992c61",
      "0x70B9C57E1fF24761C1C3ced57Ddae9A3F3570698",
    ],
  },
  [CHAIN.BASE]: {
    DODOFeeRouteProxys: [
      "0x987bFBE33c9cF18cAA665B792Db66339a9c16D32",
      "0xA376762070F7fCE8f3646AAe90e6e375e6daF128",
      "0x8b09DB11ea380d6454D2592D334FFC319ce6EF3E",
      "0x3A7Bc5F9E41356728f037f17D88c642EE46d1Aaa",
    ],
  },
  [CHAIN.AVAX]: {
    DODOFeeRouteProxys: [
      "0xbce44767af0a53A108b3B7ba4F740E03D228Ec0A",
      "0x1F076a800005c758a505E759720eb6737136e893",
      "0x3a64Ec3606FF7310E8fAd6FcC008e39705fB496d",
      "0x8b09DB11ea380d6454D2592D334FFC319ce6EF3E",
    ],
  },
  [CHAIN.ARBITRUM]: {
    DODOFeeRouteProxys: [
      "0xe05dd51e4eB5636f4f0E8e7Fbe82eA31a2ecef16",
      "0xc4A1a152812dE96b2B1861E433f42290CDD7f113",
      "0x69716E51E3F8Bec9c3D4E1bB46396384AE11C594",
      "0x056FcE6B76AF3050F54B71Fc9B5fcb7C387BfC1A",
    ],
  },
  [CHAIN.LINEA]: {
    DODOFeeRouteProxys: [
      "0x70B9C57E1fF24761C1C3ced57Ddae9A3F3570698",
      "0x03e89fC55A5ad0531576E5a502c4CA52c8bf391B",
    ],
  },
  [CHAIN.SCROLL]: {
    DODOFeeRouteProxys: [
      "0xf0512872fEc0173d1d99c2dd8CDCb770054b675b",
      "0x4e998615aD430C1cA46A69d813edE6EB3EC55eDb",
    ],
  },
  [CHAIN.MANTA]: {
    DODOFeeRouteProxys: [
      "0x2933c0374089D7D98BA0C71c5E02E1A0e09deBEE",
      "0x200D866Edf41070DE251Ef92715a6Ea825A5Eb80",
    ],
  },
  [CHAIN.ZERO]: {
    DODOFeeRouteProxys: [
      "0x2aea827424f99a187A2bF056F0782E927AB2066a",
      "0x0e038eaEf8383dfcE2B80b6E4E3F25Fd963527C4",
    ],
  },
  [CHAIN.ZIRCUIT]: {
    DODOFeeRouteProxys: [
      "0x518Bfe0c91C1C8e9588b9218B87C38Fa6b9735D6",
      "0x3b0c6c0CE667844e742Ce0Ca533EaA2b6f422AA8",
    ],
  },
};

const abis = {
  OrderHistory:
    "event OrderHistory (address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)",
};

const fetch = async (
  { createBalances, getLogs, chain }: FetchOptions
) => {
  const dailyVolume = createBalances();
  const blacklistTokens = getDefaultDexTokensBlacklisted(chain)
  const logs = (await getLogs({
    targets: config[chain].DODOFeeRouteProxys,
    eventAbi: abis.OrderHistory,
  }))
    .filter(log => !blacklistTokens.includes(formatAddress(log.fromToken)) && !blacklistTokens.includes(formatAddress(log.toToken)))
  logs.forEach((log: any) => {
    dailyVolume.add(log.fromToken, log.fromAmount);
  });
  return { dailyVolume };
};

const adapter_agg = {
  adapter: {},
};

Object.keys(config).forEach(
  (chain) => ((adapter_agg.adapter as any)[chain] = { fetch, start: "2024-08-01" })
);

const adapter: SimpleAdapter = {
  version: 2,
  adapter: adapter_agg.adapter,
};

export default adapter;


================================================
FILE: aggregators/durianfun/index.ts
================================================
/**
 * Durianfun Aggregator — DEX-aggregator volume adapter.
 * ── Protocol ───────────────────────────────────────────────────────
 *
 * `DurianAggregatorRouter` is a Jupiter-style atomic multi-DEX router
 * on Bitkub Chain. There are TWO deployed generations:
 *
 *   V1 (canonical pre-V466 router, LIVE for pure-V4.5/Udonswap routes):
 *     - Address: 0x5078cE74728bC3F1313B55A04B79E227E1181918
 *     - Predecessors (paused, kept for historical-continuity sum):
 *         V3.1:          0xB85E049484f5c44A8D1407fF372081Fe3e2455BC
 *         V4 unpatched:  0x6334f9dbC8AE789DD642a915Ce884B65A887a4aC
 *     - Swapped event (7 fields, NO referrer):
 *         Swapped(user, tokenIn, tokenOut, amountIn, amountOutToUser,
 *                 fee, hops)
 *
 *   V2 (V4.6.6-aware aggregator, LIVE — deployed 2026-05-09):
 *     - Address: 0xf3d6896A5dCB6896d6F2DB55D6Eb0b41496f0215
 *     - Swapped event (8 fields, ADDS `referrer`):
 *         Swapped(user, tokenIn, tokenOut, amountIn, amountOutToUser,
 *                 fee, hops, referrer)
 *
 * The two ABIs share keccak-prefix `Swapped(address,...)` but the
 * topic-0 hashes differ because the trailing `referrer` field changes
 * the canonical signature string. We register BOTH ABIs against BOTH
 * router-address sets so DefiLlama's volume series is continuous
 * across the V1→V2 cutover.
 *
 */

import { Adapter, FetchOptions } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { addOneToken } from "../../helpers/prices";
import { METRIC } from "../../helpers/metrics"

// V1 routers (7-arg Swapped). Include all predecessors so the
// historical volume series is continuous before V2 cutover.
const ROUTERS_V1: string[] = [
  "0x5078cE74728bC3F1313B55A04B79E227E1181918", // V4-patched (current V1 LIVE)
  "0x6334f9dbC8AE789DD642a915Ce884B65A887a4aC", // V4 unpatched (paused)
  "0xB85E049484f5c44A8D1407fF372081Fe3e2455BC", // V3.1 (paused)
];

// V2 routers (8-arg Swapped with trailing `referrer`).
const ROUTERS_V2: string[] = [
  "0xf3d6896A5dCB6896d6F2DB55D6Eb0b41496f0215", // V2 LIVE (2026-05-09)
];

const SWAPPED_ABI_V1 =
  "event Swapped(address indexed user, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOutToUser, uint256 fee, uint8 hops)";

const SWAPPED_ABI_V2 =
  "event Swapped(address indexed user, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOutToUser, uint256 fee, uint8 hops, address referrer)";

const fetch = async ({ createBalances, getLogs, chain }: FetchOptions) => {
  const dailyVolume = createBalances();
  const dailyFees = createBalances();

  // Process V1 routers (predecessors + current V1).
  const v1Logs = await getLogs({
    targets: ROUTERS_V1,
    eventAbi: SWAPPED_ABI_V1
  })
  for (const log of v1Logs) {
    addOneToken({ chain, balances: dailyVolume, token0: log.tokenIn, amount0: log.amountIn, token1: log.tokenOut, amount1: log.amountOutToUser })
    dailyFees.add(log.tokenOut, log.fee, METRIC.SWAP_FEES)
  }

  // Process V2 routers (different event ABI / topic-0 hash).
  const v2Logs = await getLogs({
    targets: ROUTERS_V2,
    eventAbi: SWAPPED_ABI_V2,
  });
  for (const log of v2Logs) {
    addOneToken({ chain, balances: dailyVolume, token0: log.tokenIn, amount0: log.amountIn, token1: log.tokenOut, amount1: log.amountOutToUser })
    dailyFees.add(log.tokenOut, log.fee, METRIC.SWAP_FEES)
  }

  return { dailyVolume, dailyFees, dailyRevenue: dailyFees };
};

const methodology = {
  Volume: "Sum of swap volume routed through Durian Aggregator Router V1 and V2.",
  Fees: "Router-skim fee deducted from the output token of every Swapped event, capped at 1.0% per route.",
  Revenue: "100% of the swap fees accrue to the protocol.",
};

const breakdownMethodology = {
  Fees: {
    [METRIC.SWAP_FEES]: "Router-skim fee deducted from the output token of each swap, capped at 1.0% per route.",
  },
  Revenue: {
    [METRIC.SWAP_FEES]: "Router-skim fee deducted from the output token of each swap, capped at 1.0% per route.",
  },
};

const adapter: Adapter = {
  version: 2,
  pullHourly: true,
  adapter: {
    [CHAIN.BITKUB]: {
      fetch,
      start: "2026-04-26",
    },
  },
  methodology,
  breakdownMethodology,
};

export default adapter;


================================================
FILE: aggregators/dzap/index.ts
================================================
import { FetchOptions, SimpleAdapter } from "../../adapters/types";
import { DZAP_SUPPORTED_CHAINS, fetchChainWiseVolumeFromDZapAPI } from "../../helpers/aggregators/dzap";
import { CHAIN } from "../../helpers/chains";

const prefetch = async (options: FetchOptions) =>
  fetchChainWiseVolumeFromDZapAPI({ ...options, txType: "swap" });

const fetch = async (_a: any, _b: any, options: FetchOptions) => {
  // bad data, wash trade
  if (options.startOfDay === 1750982400 && options.chain === CHAIN.ARBITRUM) {
    return {
      dailyVolume: 0,
    };
  }
  const volume = options.preFetchedResults[options.chain] ?? 0;
  return {
    dailyVolume: volume,
  };
};

const adapter: SimpleAdapter = {
  version: 1,
  fetch,
  chains: Object.values(DZAP_SUPPORTED_CHAINS),
  start: "2023-01-01",
  prefetch,
};

export default adapter;


================================================
FILE: aggregators/eisen/index.ts
================================================
import { FetchOptions } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import ADDRESSES from "../../helpers/coreAssets.json";

const event_swap = "event EisenSwapCompleted(address indexed sender, address indexed fromAssetId, address indexed toAssetId, address receiver, uint256 fromAmount, uint256 toAmount, uint256 expectedToAmount, uint25
Download .txt
gitextract__lkgpfkp/

├── .coderabbit.yaml
├── .github/
│   ├── CODEOWNERS
│   └── workflows/
│       ├── build-modules-and-alert.yml
│       ├── comment.yml
│       ├── commentResult.js
│       ├── getFileList.js
│       ├── test-adapter.yml
│       └── ts-check.yml
├── .gitignore
├── GUIDELINES.md
├── README.md
├── active-users/
│   ├── aptos.ts
│   ├── kyan.ts
│   └── sui.ts
├── adapters/
│   ├── types.ts
│   └── utils/
│       ├── importAdapter.ts
│       └── runAdapter.ts
├── aggregator-derivatives/
│   ├── .gitkeep
│   ├── GUIDELINES.md
│   ├── defiapp/
│   │   └── index.ts
│   ├── flat-money/
│   │   ├── helper.ts
│   │   └── index.ts
│   ├── flat-money-v1/
│   │   └── index.ts
│   ├── flat-money-v2/
│   │   └── index.ts
│   ├── kwenta/
│   │   └── index.ts
│   ├── mux-protocol-agge.ts
│   └── vooi/
│       └── index.ts
├── aggregator-options/
│   ├── GUIDELINES.md
│   ├── example.ts
│   └── grix/
│       └── index.ts
├── aggregators/
│   ├── 1delta/
│   │   └── index.ts
│   ├── 1inch-agg/
│   │   └── index.ts
│   ├── 3route/
│   │   └── index.ts
│   ├── 8dx-aggregator/
│   │   └── index.ts
│   ├── GUIDELINES.md
│   ├── aftermath-aggregator/
│   │   └── index.ts
│   ├── aggre/
│   │   └── index.ts
│   ├── akka/
│   │   └── index.ts
│   ├── allox/
│   │   └── index.ts
│   ├── anqa/
│   │   └── index.ts
│   ├── apstation/
│   │   └── index.ts
│   ├── arbitrage-inc/
│   │   └── index.ts
│   ├── atmos-aggregator.ts
│   ├── aura-agg/
│   │   └── index.ts
│   ├── avnu/
│   │   └── index.ts
│   ├── barter/
│   │   └── index.ts
│   ├── bebop/
│   │   ├── index.ts
│   │   └── jamAbi.ts
│   ├── bim/
│   │   ├── config.ts
│   │   └── index.ts
│   ├── binancewallet/
│   │   └── index.ts
│   ├── bitgetwallet/
│   │   └── index.ts
│   ├── bluefin7k-aggregator/
│   │   └── index.ts
│   ├── bountive/
│   │   └── index.ts
│   ├── bungee-dex.ts
│   ├── bytzz/
│   │   └── index.ts
│   ├── carina-aggregator/
│   │   └── index.ts
│   ├── cetus-aggregator/
│   │   └── index.ts
│   ├── chainspot/
│   │   └── index.ts
│   ├── chimpx/
│   │   └── index.ts
│   ├── conveyor/
│   │   └── index.ts
│   ├── cowswap/
│   │   └── index.ts
│   ├── cro-ag/
│   │   └── index.ts
│   ├── dedust/
│   │   └── index.ts
│   ├── defiapp/
│   │   └── index.ts
│   ├── deluthium/
│   │   └── index.ts
│   ├── dexhunter/
│   │   └── index.ts
│   ├── dexr/
│   │   └── index.ts
│   ├── dflow/
│   │   └── index.ts
│   ├── dirol/
│   │   └── index.ts
│   ├── dodo-agg/
│   │   └── index.ts
│   ├── durianfun/
│   │   └── index.ts
│   ├── dzap/
│   │   └── index.ts
│   ├── eisen/
│   │   └── index.ts
│   ├── enso/
│   │   └── index.ts
│   ├── erc-burner/
│   │   └── index.ts
│   ├── etaswap/
│   │   └── index.ts
│   ├── fibrous-finance/
│   │   └── index.ts
│   ├── flowx-aggregator/
│   │   └── index.ts
│   ├── fluxa/
│   │   └── index.ts
│   ├── gluex-protocol/
│   │   └── index.ts
│   ├── grelfswap/
│   │   └── index.ts
│   ├── groypfi/
│   │   └── index.ts
│   ├── haiku/
│   │   └── index.ts
│   ├── hallswap/
│   │   └── index.ts
│   ├── hinkal/
│   │   └── index.ts
│   ├── holdstation-agg/
│   │   └── index.ts
│   ├── houdiniswap/
│   │   └── index.ts
│   ├── hyperbloom/
│   │   └── index.ts
│   ├── hyperflow/
│   │   └── index.ts
│   ├── injex/
│   │   └── index.ts
│   ├── inoswap/
│   │   └── index.ts
│   ├── jeton/
│   │   └── index.ts
│   ├── joe-agg/
│   │   └── index.ts
│   ├── jumper-exchange/
│   │   └── index.ts
│   ├── jupiter-aggregator/
│   │   └── index.ts
│   ├── kame-aggregator/
│   │   └── index.ts
│   ├── kanalabs/
│   │   └── index.ts
│   ├── kuru/
│   │   └── index.ts
│   ├── kyberswap/
│   │   └── index.ts
│   ├── kyoag/
│   │   └── index.ts
│   ├── lamboo/
│   │   └── index.ts
│   ├── lifi/
│   │   └── index.ts
│   ├── lilswap/
│   │   └── index.ts
│   ├── liquidmesh/
│   │   └── index.ts
│   ├── liquidswap/
│   │   └── index.ts
│   ├── llamaswap/
│   │   └── index.ts
│   ├── lunar-finance/
│   │   └── index.ts
│   ├── madhouse/
│   │   └── index.ts
│   ├── magpie/
│   │   └── index.ts
│   ├── metamask.ts
│   ├── mimboku-aggregator/
│   │   └── index.ts
│   ├── minswap/
│   │   └── index.ts
│   ├── monbridgedex/
│   │   └── index.ts
│   ├── monorail.ts
│   ├── mosaic/
│   │   └── index.ts
│   ├── nanoport/
│   │   └── index.ts
│   ├── navi/
│   │   └── index.ts
│   ├── neptune-swap/
│   │   └── index.ts
│   ├── nordstern-finance/
│   │   └── index.ts
│   ├── obsidian/
│   │   └── index.ts
│   ├── odos/
│   │   └── index.ts
│   ├── okx/
│   │   └── index.ts
│   ├── oogabooga/
│   │   └── index.ts
│   ├── ooia/
│   │   └── index.ts
│   ├── openocean/
│   │   └── index.ts
│   ├── opensea/
│   │   └── index.ts
│   ├── opt-agg/
│   │   └── index.ts
│   ├── orbiter-finance/
│   │   └── index.ts
│   ├── paraswap/
│   │   └── index.ts
│   ├── rainbow-swap/
│   │   └── index.ts
│   ├── rango/
│   │   └── index.ts
│   ├── rheon/
│   │   └── index.ts
│   ├── rubic/
│   │   └── index.ts
│   ├── scallop/
│   │   └── index.ts
│   ├── stackit/
│   │   └── index.ts
│   ├── superboring/
│   │   └── index.ts
│   ├── superswap/
│   │   └── index.ts
│   ├── sushiswap-agg.ts
│   ├── swap-coffee/
│   │   └── index.ts
│   ├── swapgpt/
│   │   └── index.ts
│   ├── swing/
│   │   └── index.ts
│   ├── symphony/
│   │   └── index.ts
│   ├── tephra/
│   │   └── index.ts
│   ├── tideswap/
│   │   └── index.ts
│   ├── titan/
│   │   └── index.ts
│   ├── titan-exchange/
│   │   └── index.ts
│   ├── tondiamonds/
│   │   └── index.ts
│   ├── udex-agg/
│   │   └── index.ts
│   ├── unizen/
│   │   └── index.ts
│   ├── venum/
│   │   └── index.ts
│   ├── vetrade/
│   │   └── index.ts
│   ├── virtus/
│   │   └── index.ts
│   ├── wolfswap/
│   │   └── index.ts
│   ├── wowmax/
│   │   └── index.ts
│   ├── yield-yak/
│   │   └── index.ts
│   └── zrx/
│       └── index.ts
├── bridge-aggregators/
│   ├── GUIDELINES.md
│   ├── babydoge-bridge/
│   │   └── index.ts
│   ├── bim/
│   │   └── index.ts
│   ├── bitgetwallet/
│   │   └── index.ts
│   ├── brotocol/
│   │   └── index.ts
│   ├── bungee-bridge/
│   │   └── index.ts
│   ├── dzap/
│   │   └── index.ts
│   ├── garden/
│   │   └── index.ts
│   ├── jumper.exchange/
│   │   └── index.ts
│   ├── lifi/
│   │   └── index.ts
│   ├── lunar-finance-bridge/
│   │   └── index.ts
│   ├── mynth/
│   │   └── index.ts
│   ├── okx/
│   │   └── index.ts
│   ├── opensea/
│   │   └── index.ts
│   ├── orbiter-finance/
│   │   └── index.ts
│   ├── rango/
│   │   └── index.ts
│   ├── rubic/
│   │   └── index.ts
│   ├── sharpe-bridge/
│   │   └── index.ts
│   ├── socket/
│   │   ├── contracts.ts
│   │   └── index.ts
│   ├── stableflow/
│   │   └── index.ts
│   ├── swing/
│   │   └── index.ts
│   ├── virtus/
│   │   └── index.ts
│   └── xy-finance/
│       └── index.ts
├── cli/
│   ├── buildModules.ts
│   ├── compareModules.js
│   ├── interactive.js
│   ├── migrateDeadProjects.ts
│   ├── moduleStats.js
│   ├── testAdapter.ts
│   └── utils.ts
├── dexs/
│   ├── 0x-limit.ts
│   ├── 0x-otc.ts
│   ├── 0x-rfq.ts
│   ├── 10kswap/
│   │   └── index.ts
│   ├── 1776meme/
│   │   └── index.ts
│   ├── 1dex/
│   │   └── index.ts
│   ├── 4swap/
│   │   └── index.ts
│   ├── ArbitrumExchange-v2.ts
│   ├── ArbitrumExchange-v3.ts
│   ├── FeeFree/
│   │   └── index.ts
│   ├── GUIDELINES.md
│   ├── ICDex/
│   │   └── index.ts
│   ├── MantisSwap/
│   │   └── index.ts
│   ├── Scopuly/
│   │   └── index.ts
│   ├── SecuredFinance/
│   │   └── index.ts
│   ├── SmarDex/
│   │   ├── abis.ts
│   │   ├── config.ts
│   │   ├── index.ts
│   │   └── usdn-volume.ts
│   ├── SubstanceX/
│   │   └── index.ts
│   ├── aark/
│   │   └── index.ts
│   ├── aborean/
│   │   ├── index.ts
│   │   └── utils.ts
│   ├── aborean-cl/
│   │   └── index.ts
│   ├── acala-swap/
│   │   └── index.ts
│   ├── adrena/
│   │   └── index.ts
│   ├── aerodrome/
│   │   ├── index.ts
│   │   └── utils.ts
│   ├── aerodrome-slipstream/
│   │   └── index.ts
│   ├── aevo/
│   │   └── index.ts
│   ├── aftermath-fi-amm/
│   │   └── index.ts
│   ├── aftermath-fi-perp/
│   │   └── index.ts
│   ├── agdex/
│   │   └── index.ts
│   ├── airswap/
│   │   └── index.ts
│   ├── alex/
│   │   └── index.ts
│   ├── allbridge-classic/
│   │   └── index.ts
│   ├── alpha-arcade/
│   │   └── index.ts
│   ├── alphaq/
│   │   └── index.ts
│   ├── alphasec-spot.ts
│   ├── alphix.ts
│   ├── althea-dex.ts
│   ├── ambient/
│   │   └── index.ts
│   ├── amigo.ts
│   ├── amped-derivatives.ts
│   ├── amped-swap.ts
│   ├── angstrom/
│   │   ├── helper/
│   │   │   ├── asset.ts
│   │   │   ├── binaryDecoder.ts
│   │   │   ├── index.ts
│   │   │   ├── pair.ts
│   │   │   ├── pool.ts
│   │   │   ├── type/
│   │   │   │   └── type.ts
│   │   │   └── utils.ts
│   │   └── index.ts
│   ├── anome/
│   │   └── index.ts
│   ├── antarctic/
│   │   └── index.ts
│   ├── anyhedge/
│   │   └── index.ts
│   ├── ape-church/
│   │   └── index.ts
│   ├── apestore/
│   │   └── index.ts
│   ├── apex-omni/
│   │   └── index.ts
│   ├── apollox/
│   │   └── index.ts
│   ├── aptos-caliber-prop-amm/
│   │   └── index.ts
│   ├── aqua-network/
│   │   └── index.ts
│   ├── arctic/
│   │   └── index.ts
│   ├── arena-launch.ts
│   ├── ash-perp/
│   │   └── index.ts
│   ├── ashswap/
│   │   └── index.ts
│   ├── aster-spot.ts
│   ├── astro-perp.ts
│   ├── astrolescent/
│   │   └── index.ts
│   ├── astroport-v2/
│   │   └── index.ts
│   ├── atmos-dex/
│   │   └── index.ts
│   ├── atmos-studio.ts
│   ├── aux-exchange/
│   │   └── index.ts
│   ├── avantis/
│   │   └── index.ts
│   ├── axial/
│   │   └── index.ts
│   ├── b402/
│   │   └── index.ts
│   ├── babydoge-algebra.ts
│   ├── balanced/
│   │   └── index.ts
│   ├── balancer-v1.ts
│   ├── balancer-v2.ts
│   ├── balancer-v3/
│   │   └── index.ts
│   ├── bancor-v2_1.ts
│   ├── bancor-v3.ts
│   ├── barterswap/
│   │   └── index.ts
│   ├── baryon/
│   │   └── index.ts
│   ├── baseswap-v2.ts
│   ├── baseswap-v3.ts
│   ├── basin/
│   │   ├── helper.ts
│   │   └── index.ts
│   ├── beamex-beamex-perps.ts
│   ├── beamex-beamex-swap.ts
│   ├── beamswap-classic.ts
│   ├── beamswap-stable-amm.ts
│   ├── bean-exchange/
│   │   └── index.ts
│   ├── beethoven-x/
│   │   └── index.ts
│   ├── beets-v3/
│   │   └── index.ts
│   ├── beezie.ts
│   ├── believe/
│   │   └── index.ts
│   ├── betterswap/
│   │   └── index.ts
│   ├── bifrost-dex.ts
│   ├── bigpump/
│   │   └── index.ts
│   ├── bisonfi/
│   │   └── index.ts
│   ├── bisq/
│   │   └── index.ts
│   ├── bitcoin-bridge/
│   │   └── index.ts
│   ├── bitflow-fi.ts
│   ├── bitflux/
│   │   └── index.ts
│   ├── bitget-wallet-card.ts
│   ├── bitkeep/
│   │   └── index.ts
│   ├── blackhole-CL.ts
│   ├── blackhole.ts
│   ├── bladeswap-v2.ts
│   ├── blastfutures/
│   │   └── index.ts
│   ├── blex-derivatives.ts
│   ├── blex-volume.ts
│   ├── bluefin/
│   │   └── index.ts
│   ├── bluefin-amm/
│   │   └── index.ts
│   ├── bluefin-pro/
│   │   └── index.ts
│   ├── bluemove.ts
│   ├── blum/
│   │   └── index.ts
│   ├── blur.ts
│   ├── bmx-derivatives.ts
│   ├── bmx-freestyle/
│   │   └── index.ts
│   ├── bmx-swap.ts
│   ├── bogged-finance/
│   │   └── index.ts
│   ├── boop-fun/
│   │   └── index.ts
│   ├── boros/
│   │   └── index.ts
│   ├── bounce-tech.ts
│   ├── brine/
│   │   └── index.ts
│   ├── brownfi/
│   │   └── index.ts
│   ├── bsx/
│   │   └── index.ts
│   ├── bulbaswap-v2.ts
│   ├── bulbaswap-v3.ts
│   ├── bullaexchange/
│   │   └── index.ts
│   ├── bullbit-ai/
│   │   └── index.ts
│   ├── bullbit-perp-dex/
│   │   └── index.ts
│   ├── bullet-perp/
│   │   └── index.ts
│   ├── bunni-v2.ts
│   ├── byreal/
│   │   └── index.ts
│   ├── c3-exchange/
│   │   └── index.ts
│   ├── cables/
│   │   └── index.ts
│   ├── camelot-v3/
│   │   └── index.ts
│   ├── canonic/
│   │   └── index.ts
│   ├── cap-finance-v4.ts
│   ├── capybara-exchange/
│   │   └── index.ts
│   ├── capybara-perp/
│   │   └── index.ts
│   ├── carbon/
│   │   └── index.ts
│   ├── carbondefi/
│   │   ├── index.ts
│   │   ├── types.ts
│   │   └── utils.ts
│   ├── carthage-v3.ts
│   ├── catalist-dex/
│   │   └── index.ts
│   ├── catton/
│   │   └── index.ts
│   ├── cauldron/
│   │   └── index.ts
│   ├── caviarnine-agg.ts
│   ├── caviarnine-lsu-pool/
│   │   └── index.ts
│   ├── caviarnine-orderbook.ts
│   ├── caviarnine-simplepool.ts
│   ├── cellana-finance/
│   │   └── index.ts
│   ├── cetus/
│   │   └── index.ts
│   ├── cetus-dlmm/
│   │   └── index.ts
│   ├── chainflip/
│   │   └── index.ts
│   ├── chainge-finance/
│   │   └── index.ts
│   ├── challenge4trading-perp.ts
│   ├── chapool.ts
│   ├── cherryswap/
│   │   └── index.ts
│   ├── citrex-markets/
│   │   └── index.ts
│   ├── claimswap/
│   │   └── index.ts
│   ├── clipper/
│   │   └── index.ts
│   ├── clob/
│   │   └── index.ts
│   ├── clober-v2/
│   │   └── index.ts
│   ├── cobaltx.ts
│   ├── coinhain/
│   │   └── index.ts
│   ├── colorpool.ts
│   ├── concordex-io/
│   │   └── index.ts
│   ├── contango/
│   │   └── index.ts
│   ├── copump.ts
│   ├── core-markets/
│   │   └── index.ts
│   ├── corex/
│   │   └── index.ts
│   ├── crema-finance/
│   │   └── index.ts
│   ├── cube/
│   │   └── index.ts
│   ├── curve/
│   │   ├── api.ts
│   │   └── index.ts
│   ├── cvex/
│   │   └── index.ts
│   ├── cyberperp/
│   │   ├── cyberperp.ts
│   │   └── index.ts
│   ├── d8x/
│   │   └── index.ts
│   ├── dackieswap/
│   │   └── index.ts
│   ├── dango/
│   │   └── index.ts
│   ├── danogo/
│   │   ├── index.ts
│   │   └── types.ts
│   ├── dappos-intentEx/
│   │   └── index.ts
│   ├── decibel/
│   │   └── index.ts
│   ├── dedust/
│   │   └── index.ts
│   ├── deepbookv3-sui/
│   │   └── index.ts
│   ├── deeptrade/
│   │   └── index.ts
│   ├── defibox/
│   │   └── index.ts
│   ├── defichain-dex/
│   │   └── index.ts
│   ├── defiplaza/
│   │   └── index.ts
│   ├── degen-launchpad/
│   │   └── index.ts
│   ├── delphi/
│   │   └── index.ts
│   ├── delta-trade/
│   │   └── index.ts
│   ├── deltadefi/
│   │   └── index.ts
│   ├── demex-demex-perp.ts
│   ├── demex-demex.ts
│   ├── denaria.ts
│   ├── derivio-derivatives.ts
│   ├── derivio-swap.ts
│   ├── desk/
│   │   └── index.ts
│   ├── dexalot/
│   │   └── index.ts
│   ├── dexswap/
│   │   └── index.ts
│   ├── dexter/
│   │   ├── constants.ts
│   │   ├── dimensions.ts
│   │   └── index.ts
│   ├── dexter-tezos/
│   │   └── index.ts
│   ├── dextrabot.ts
│   ├── dflow-prediction/
│   │   └── index.ts
│   ├── dinari/
│   │   └── index.ts
│   ├── dipcoin-perps/
│   │   └── index.ts
│   ├── dipcoin-spot/
│   │   └── index.ts
│   ├── dodo/
│   │   ├── dailyVolumePayload.ts
│   │   ├── index.ts
│   │   └── totalVolumePayload.ts
│   ├── dpex/
│   │   └── index.ts
│   ├── dragonswap-sei/
│   │   └── index.ts
│   ├── dragonswap-sei-v3/
│   │   └── index.ts
│   ├── dragonswap-v2.ts
│   ├── dragonswap-v3.ts
│   ├── drift-protocol-derivatives.ts
│   ├── drift-protocol-swap.ts
│   ├── drip-trade.ts
│   ├── duality/
│   │   └── index.ts
│   ├── durian-amm/
│   │   └── index.ts
│   ├── durianfun-launchpad/
│   │   └── index.ts
│   ├── dusa/
│   │   └── index.ts
│   ├── dx25/
│   │   └── index.ts
│   ├── dydx-v4/
│   │   └── index.ts
│   ├── dyorswap-launchpad/
│   │   └── index.ts
│   ├── e3/
│   │   └── index.ts
│   ├── eaglefi.ts
│   ├── earnium/
│   │   └── index.ts
│   ├── econia/
│   │   └── index.ts
│   ├── edgeX/
│   │   └── index.ts
│   ├── egas-swap/
│   │   └── index.ts
│   ├── ekubo/
│   │   └── index.ts
│   ├── ekubo-evm.ts
│   ├── electra/
│   │   └── index.ts
│   ├── elektrik/
│   │   └── index.ts
│   ├── elexium/
│   │   └── index.ts
│   ├── elfi/
│   │   └── index.ts
│   ├── elfomofi/
│   │   └── index.ts
│   ├── elix-fi/
│   │   └── index.ts
│   ├── elys-dex.ts
│   ├── elys-perp.ts
│   ├── emdx/
│   │   └── index.ts
│   ├── equity-spot/
│   │   └── index.ts
│   ├── ethereal-dex/
│   │   └── index.ts
│   ├── etherex-legacy.ts
│   ├── etherex.ts
│   ├── eulerswap/
│   │   └── index.ts
│   ├── evedex/
│   │   └── index.ts
│   ├── evently/
│   │   └── index.ts
│   ├── exa-card.ts
│   ├── exinswap/
│   │   └── index.ts
│   ├── extended/
│   │   └── index.ts
│   ├── farmcats-market/
│   │   └── index.ts
│   ├── fastjpeg/
│   │   └── index.ts
│   ├── fermi-dex/
│   │   └── index.ts
│   ├── ferra-clmm/
│   │   └── index.ts
│   ├── ferra-dlmm/
│   │   └── index.ts
│   ├── ferro/
│   │   └── index.ts
│   ├── figure-markets/
│   │   └── index.ts
│   ├── fjord-foundry-v1.ts
│   ├── fjord-foundry-v2.ts
│   ├── flamingo-finance/
│   │   └── index.ts
│   ├── flashnet/
│   │   └── index.ts
│   ├── flashtrade/
│   │   └── index.ts
│   ├── flexperp/
│   │   └── index.ts
│   ├── flowbot-perps.ts
│   ├── flowx-finance/
│   │   └── index.ts
│   ├── flowx-perps/
│   │   └── index.ts
│   ├── flowx-v3/
│   │   └── index.ts
│   ├── fluid-dex/
│   │   └── index.ts
│   ├── fluid-dex-lite/
│   │   └── index.ts
│   ├── four-meme/
│   │   └── index.ts
│   ├── foxify/
│   │   └── index.ts
│   ├── frax-swap/
│   │   └── index.ts
│   ├── friend-tech.ts
│   ├── fulcrom-finance-derivatives.ts
│   ├── fulcrom-finance-swap.ts
│   ├── fullsail-finance/
│   │   └── index.ts
│   ├── futarchy-amm/
│   │   └── index.ts
│   ├── fvm-exchange/
│   │   └── index.ts
│   ├── fwogfun/
│   │   └── index.ts
│   ├── fwx/
│   │   └── index.ts
│   ├── gains-network/
│   │   └── index.ts
│   ├── galaswap-v3.ts
│   ├── gambit/
│   │   └── index.ts
│   ├── garuda-defi/
│   │   └── index.ts
│   ├── gaspump/
│   │   └── index.ts
│   ├── gate-perps.ts
│   ├── gatefun/
│   │   └── index.ts
│   ├── genius-protocol/
│   │   └── index.ts
│   ├── glowswap/
│   │   └── index.ts
│   ├── glyph-exchange/
│   │   └── index.ts
│   ├── gmx-derivatives.ts
│   ├── gmx-sol.ts
│   ├── gmx-v2-gmx-v2-swap.ts
│   ├── gmx-v2-gmx-v2-trade.ts
│   ├── gnosispay.ts
│   ├── goosefx/
│   │   └── index.ts
│   ├── goosefx_v2/
│   │   └── index.ts
│   ├── grafun.ts
│   ├── grizzly-trade-derivatives-v2/
│   │   └── index.ts
│   ├── grvt-perps/
│   │   └── index.ts
│   ├── haedal/
│   │   └── index.ts
│   ├── hanji/
│   │   └── index.ts
│   ├── hashflow/
│   │   └── index.ts
│   ├── hashlock-markets/
│   │   ├── ethereum.ts
│   │   ├── index.ts
│   │   ├── shared.ts
│   │   └── sui.ts
│   ├── haven1-hswap/
│   │   └── index.ts
│   ├── hbarsuite-dex/
│   │   └── index.ts
│   ├── heaven-dex/
│   │   └── index.ts
│   ├── heliswap/
│   │   └── index.ts
│   ├── helix-helix-perp.ts
│   ├── helix-helix.ts
│   ├── helix-markets/
│   │   └── index.ts
│   ├── hibachi/
│   │   └── index.ts
│   ├── hitone/
│   │   └── index.ts
│   ├── hmx/
│   │   └── index.ts
│   ├── holdr/
│   │   └── index.ts
│   ├── holoworld/
│   │   └── index.ts
│   ├── honeypop-dex.ts
│   ├── horizondex/
│   │   └── index.ts
│   ├── hotstuff/
│   │   └── index.ts
│   ├── humanfi/
│   │   └── index.ts
│   ├── humidifi/
│   │   └── index.ts
│   ├── hummus/
│   │   └── index.ts
│   ├── hybra-v4.ts
│   ├── hydration-dex/
│   │   └── index.ts
│   ├── hyperion/
│   │   └── index.ts
│   ├── hyperliquid-perp/
│   │   └── index.ts
│   ├── hyperliquid-spot/
│   │   └── index.ts
│   ├── hyperpie-launchpad.ts
│   ├── hyperpie-v2-dex.ts
│   ├── hypersignals.ts
│   ├── hyperstitions/
│   │   └── index.ts
│   ├── hyperswap-v3/
│   │   └── index.ts
│   ├── hyperunit/
│   │   └── index.ts
│   ├── icpswap/
│   │   └── index.ts
│   ├── immortalx/
│   │   └── index.ts
│   ├── increment-protocol/
│   │   └── index.ts
│   ├── increment-swap/
│   │   └── index.ts
│   ├── infinityPools/
│   │   ├── index.ts
│   │   ├── quadHelper.ts
│   │   └── swapEventABI.ts
│   ├── initia-dex.ts
│   ├── injective-derivatives.ts
│   ├── injective-spot.ts
│   ├── integral/
│   │   └── index.ts
│   ├── intent-x/
│   │   └── index.ts
│   ├── interest-movement-curve/
│   │   └── index.ts
│   ├── interest-protocol/
│   │   └── index.ts
│   ├── interest-protocol-stable-swap/
│   │   └── index.ts
│   ├── invariant/
│   │   └── index.ts
│   ├── ipor/
│   │   └── index.ts
│   ├── iziswap/
│   │   └── index.ts
│   ├── javsphere/
│   │   └── index.ts
│   ├── jediswap/
│   │   └── index.ts
│   ├── jediswap-v2/
│   │   └── index.ts
│   ├── jellyverse/
│   │   └── index.ts
│   ├── jojo/
│   │   └── index.ts
│   ├── jup-ape/
│   │   └── index.ts
│   ├── jupiter-perpetual/
│   │   └── index.ts
│   ├── jupiter-prediction/
│   │   └── index.ts
│   ├── justbet/
│   │   ├── abis.ts
│   │   ├── constants.ts
│   │   ├── helpers.ts
│   │   └── index.ts
│   ├── k-bit/
│   │   └── index.ts
│   ├── kalshi.ts
│   ├── kanalabs-perp/
│   │   └── index.ts
│   ├── karura-swap/
│   │   └── index.ts
│   ├── kaspacom-dex/
│   │   └── index.ts
│   ├── kast-card.ts
│   ├── katana-perps.ts
│   ├── katana-v3/
│   │   └── index.ts
│   ├── kava-swap/
│   │   └── index.ts
│   ├── kensei/
│   │   └── index.ts
│   ├── kiloex/
│   │   └── index.ts
│   ├── kinetiq-markets.ts
│   ├── kinetix-v3/
│   │   └── index.ts
│   ├── kittenswap/
│   │   └── index.ts
│   ├── kittenswap-algebra/
│   │   └── index.ts
│   ├── kittenswap-cl/
│   │   └── index.ts
│   ├── kittypunch-stable.ts
│   ├── klayswap/
│   │   └── index.ts
│   ├── kodiak-v3.ts
│   ├── kokonut-swap/
│   │   └── index.ts
│   ├── kongswap/
│   │   └── index.ts
│   ├── kriya-clmm/
│   │   └── index.ts
│   ├── kriya-dex/
│   │   └── index.ts
│   ├── ktx-derivatives.ts
│   ├── ktx-swap.ts
│   ├── kuma-v1/
│   │   └── index.ts
│   ├── kuru-clob.ts
│   ├── kyan.ts
│   ├── kyex/
│   │   └── index.ts
│   ├── kyo-fi-v3.ts
│   ├── landbid.ts
│   ├── legion.ts
│   ├── levana/
│   │   ├── fetch.ts
│   │   └── index.ts
│   ├── level-finance-level-finance-derivative.ts
│   ├── level-finance-level-finance.ts
│   ├── leverup/
│   │   └── index.ts
│   ├── lexer-derivatives.ts
│   ├── lexer-swap.ts
│   ├── lighter-spot/
│   │   └── index.ts
│   ├── lighterv2/
│   │   └── index.ts
│   ├── limitless-exchange/
│   │   └── index.ts
│   ├── linehub-perps/
│   │   └── index.ts
│   ├── liquidcore.ts
│   ├── liquidswap/
│   │   └── index.ts
│   ├── lista-dex/
│   │   └── index.ts
│   ├── lithos/
│   │   └── index.ts
│   ├── lnexchange-perp/
│   │   └── index.ts
│   ├── lnexchange-spot/
│   │   └── index.ts
│   ├── lotto-run/
│   │   └── index.ts
│   ├── lotus-finance/
│   │   └── index.ts
│   ├── loxodrome-amm/
│   │   └── index.ts
│   ├── lumenswap/
│   │   └── index.ts
│   ├── luna-fun.ts
│   ├── lunarbase/
│   │   └── index.ts
│   ├── lyra/
│   │   └── index.ts
│   ├── macaron-xyz/
│   │   └── index.ts
│   ├── mach/
│   │   ├── deployments.ts
│   │   └── index.ts
│   ├── machinex-cl.ts
│   ├── machinex-legacy.ts
│   ├── magicsea-lb/
│   │   └── index.ts
│   ├── magma-finance/
│   │   └── index.ts
│   ├── mangrove/
│   │   └── index.ts
│   ├── manifest-trade/
│   │   └── index.ts
│   ├── mars-perp/
│   │   └── index.ts
│   ├── maverick/
│   │   ├── index.ts
│   │   └── maverick-v1.ts
│   ├── maverick-v2/
│   │   └── index.ts
│   ├── mcdex/
│   │   └── index.ts
│   ├── mdex/
│   │   └── index.ts
│   ├── megaton-finance/
│   │   └── index.ts
│   ├── mento/
│   │   └── index.ts
│   ├── mento-v3/
│   │   └── index.ts
│   ├── meridian-trade-derivatives.ts
│   ├── meridian-trade-swap.ts
│   ├── merkle-trade/
│   │   └── index.ts
│   ├── merlinswap/
│   │   └── index.ts
│   ├── meshswap/
│   │   └── index.ts
│   ├── metamask-card.ts
│   ├── metastable-musd/
│   │   └── index.ts
│   ├── metavault-derivatives-v2/
│   │   └── index.ts
│   ├── metavault_trade-metavault-derivative.ts
│   ├── metavault_trade-metavault_trade.ts
│   ├── meteora/
│   │   └── index.ts
│   ├── meteora-damm-v2/
│   │   └── index.ts
│   ├── meteora-dbc/
│   │   └── index.ts
│   ├── meteora-dlmm.ts
│   ├── metric/
│   │   └── index.ts
│   ├── metropolis-amm/
│   │   └── index.ts
│   ├── metropolis-dlmm/
│   │   └── index.ts
│   ├── minswap/
│   │   └── index.ts
│   ├── mintiq-market/
│   │   └── index.ts
│   ├── mira-ly/
│   │   └── index.ts
│   ├── miracletrade.ts
│   ├── mitte/
│   │   └── index.ts
│   ├── mobius-money/
│   │   └── index.ts
│   ├── momentum.ts
│   ├── monday-trade-perp/
│   │   └── index.ts
│   ├── moneyx-pro/
│   │   └── index.ts
│   ├── monster/
│   │   └── index.ts
│   ├── moon-swap/
│   │   └── index.ts
│   ├── mooniswap/
│   │   └── index.ts
│   ├── moonlander/
│   │   └── index.ts
│   ├── mosaic-amm/
│   │   └── index.ts
│   ├── mu-exchange/
│   │   └── index.ts
│   ├── muesliswap/
│   │   └── index.ts
│   ├── multiswap/
│   │   └── index.ts
│   ├── mummy-finance/
│   │   └── index.ts
│   ├── mux-protocol-perps.ts
│   ├── myswap/
│   │   └── index.ts
│   ├── myswap-cl/
│   │   └── index.ts
│   ├── myx-finance/
│   │   ├── helpers..ts
│   │   └── index.ts
│   ├── nabla/
│   │   └── index.ts
│   ├── nad-fun.ts
│   ├── nado-perp/
│   │   └── index.ts
│   ├── nado-spot/
│   │   └── index.ts
│   ├── napier/
│   │   └── index.ts
│   ├── narbet.ts
│   ├── narwhal-finance.ts
│   ├── native/
│   │   └── index.ts
│   ├── near-intents/
│   │   └── index.ts
│   ├── neony-perp/
│   │   └── index.ts
│   ├── neony-spot/
│   │   └── index.ts
│   ├── nest/
│   │   └── index.ts
│   ├── ninjablaze/
│   │   └── index.ts
│   ├── nlx-nlx-swap.ts
│   ├── nlx-nlx-trade.ts
│   ├── noah-swap/
│   │   └── index.ts
│   ├── nomiswap/
│   │   └── index.ts
│   ├── nostra-pools/
│   │   └── index.ts
│   ├── o1-exchange/
│   │   └── index.ts
│   ├── o2/
│   │   └── index.ts
│   ├── ocelex/
│   │   └── index.ts
│   ├── ociswap-basic.ts
│   ├── ociswap-precision.ts
│   ├── okie-launch.ts
│   ├── okie-stableswap.ts
│   ├── okieswap-v2.ts
│   ├── okieswap-v3.ts
│   ├── olab/
│   │   └── index.ts
│   ├── omni-exchange-flux/
│   │   └── index.ts
│   ├── omni-exchange-v2/
│   │   └── index.ts
│   ├── omnipair/
│   │   └── index.ts
│   ├── ondo-global-markets/
│   │   └── index.ts
│   ├── openleverage/
│   │   └── index.ts
│   ├── opinion/
│   │   └── index.ts
│   ├── optim-finance/
│   │   └── index.ts
│   ├── opx-finance/
│   │   └── index.ts
│   ├── oraidex/
│   │   └── index.ts
│   ├── oraidex-v3/
│   │   └── index.ts
│   ├── orbit-finance.ts
│   ├── orca/
│   │   └── index.ts
│   ├── orca-wavebreak.ts
│   ├── orderly-network-orderly-network-derivatives.ts
│   ├── orderly-network-orderly-network.ts
│   ├── orderly-perps-new.ts
│   ├── osmosis/
│   │   └── index.ts
│   ├── ostium/
│   │   └── index.ts
│   ├── ostrich/
│   │   └── index.ts
│   ├── oswap/
│   │   └── index.ts
│   ├── otomate.ts
│   ├── oxium/
│   │   ├── config.ts
│   │   ├── fetch.ts
│   │   └── index.ts
│   ├── pacaswap.ts
│   ├── pacifica/
│   │   └── index.ts
│   ├── pact/
│   │   └── index.ts
│   ├── paint-swap/
│   │   └── index.ts
│   ├── palmswap/
│   │   └── index.ts
│   ├── panacakeswap-perp/
│   │   └── index.ts
│   ├── pancakeswap-infinity.ts
│   ├── pancakeswap-prediction/
│   │   └── index.ts
│   ├── pancakeswap-v2.ts
│   ├── pancakeswap-v3.ts
│   ├── pandora-speed-trading/
│   │   └── index.ts
│   ├── pangea-swap/
│   │   └── index.ts
│   ├── pangolin-v3/
│   │   └── index.ts
│   ├── paradex/
│   │   └── index.ts
│   ├── paradex-spot/
│   │   └── index.ts
│   ├── paycash/
│   │   └── index.ts
│   ├── pear-protocol/
│   │   └── index.ts
│   ├── pegasys-v3/
│   │   └── index.ts
│   ├── pendle/
│   │   └── index.ts
│   ├── penumbra-dex.ts
│   ├── pepe-dex/
│   │   └── index.ts
│   ├── perennial-v2/
│   │   └── index.ts
│   ├── perpl/
│   │   └── index.ts
│   ├── pharaoh-v3-legacy.ts
│   ├── pharaoh-v3.ts
│   ├── pheasantswap/
│   │   └── index.ts
│   ├── phoenix/
│   │   └── index.ts
│   ├── phoenix-trade/
│   │   └── index.ts
│   ├── photon.ts
│   ├── pigeonhouse/
│   │   └── index.ts
│   ├── pika-protocol/
│   │   └── index.ts
│   ├── pika-protocol-v4/
│   │   └── index.ts
│   ├── pingu/
│   │   └── index.ts
│   ├── pinnako-derivatives.ts
│   ├── pinnako-swap.ts
│   ├── pinto/
│   │   └── index.ts
│   ├── piperx-v2/
│   │   └── index.ts
│   ├── piperx-v3/
│   │   └── index.ts
│   ├── pixelswap/
│   │   └── index.ts
│   ├── pixiechess/
│   │   └── index.ts
│   ├── planemo-trading.ts
│   ├── platypus/
│   │   └── index.ts
│   ├── plenty/
│   │   └── index.ts
│   ├── plunderswap/
│   │   └── index.ts
│   ├── polkadex/
│   │   └── index.ts
│   ├── polkaswap/
│   │   └── index.ts
│   ├── polymarket/
│   │   └── index.ts
│   ├── polymarket-us/
│   │   └── index.ts
│   ├── ponytaswap/
│   │   └── index.ts
│   ├── pool-party/
│   │   └── index.ts
│   ├── potatoswap-v3.ts
│   ├── potatoswap.ts
│   ├── predict-fun/
│   │   └── index.ts
│   ├── primex-finance/
│   │   ├── index.ts
│   │   └── utils.ts
│   ├── printr-protocol/
│   │   └── index.ts
│   ├── priority-trade/
│   │   └── index.ts
│   ├── privex/
│   │   └── index.ts
│   ├── probable.ts
│   ├── prophet-fun/
│   │   └── index.ts
│   ├── proton-dex/
│   │   └── index.ts
│   ├── pump-swap/
│   │   └── index.ts
│   ├── pumpfun.ts
│   ├── pumpspace-v2/
│   │   └── index.ts
│   ├── pumpspace-v3/
│   │   └── index.ts
│   ├── punk.coffee/
│   │   └── index.ts
│   ├── puppyfun/
│   │   └── index.ts
│   ├── quenta/
│   │   └── index.ts
│   ├── quickswap-hydra/
│   │   └── index.ts
│   ├── quickswap-liquidityHub.ts
│   ├── quickswap-perps/
│   │   └── index.ts
│   ├── quickswap-v2.ts
│   ├── quickswap-v3.ts
│   ├── quickswap-v4.ts
│   ├── quipuswap/
│   │   └── index.ts
│   ├── rabbitswap-v3/
│   │   └── index.ts
│   ├── rain-one/
│   │   └── index.ts
│   ├── raindex/
│   │   └── index.ts
│   ├── ramses-hl-cl.ts
│   ├── ramses-hl-legacy.ts
│   ├── ramsesx-arb-cl.ts
│   ├── ramsesx-arb-legacy.ts
│   ├── ramsesx-poly-cl.ts
│   ├── ramsesx-poly-legacy.ts
│   ├── rarible/
│   │   ├── helper.ts
│   │   └── index.ts
│   ├── rate-x/
│   │   └── index.ts
│   ├── raydium/
│   │   └── index.ts
│   ├── reactor-exchange/
│   │   └── index.ts
│   ├── ready-card.ts
│   ├── ref-finance/
│   │   └── index.ts
│   ├── renegade-fi/
│   │   └── index.ts
│   ├── reya-dex.ts
│   ├── rfx-rfx-swap.ts
│   ├── rfx-rfx-trade.ts
│   ├── rhea-cross-chain/
│   │   └── index.ts
│   ├── rho-protocol/
│   │   └── index.ts
│   ├── rho-x/
│   │   └── index.ts
│   ├── ring-dex.ts
│   ├── rise-launchpad.ts
│   ├── risex-perps/
│   │   └── index.ts
│   ├── rocket/
│   │   └── index.ts
│   ├── rollie-finance/
│   │   └── index.ts
│   ├── rollx/
│   │   └── index.ts
│   ├── rooster/
│   │   └── index.ts
│   ├── rubicon/
│   │   └── index.ts
│   ├── rush/
│   │   └── index.ts
│   ├── ryze/
│   │   └── index.ts
│   ├── saber/
│   │   └── index.ts
│   ├── saddle-finance/
│   │   └── index.ts
│   ├── sai-perps/
│   │   └── index.ts
│   ├── sailor-finance.ts
│   ├── sanctum/
│   │   └── index.ts
│   ├── sanctum-infinity/
│   │   └── index.ts
│   ├── sandglass/
│   │   └── index.ts
│   ├── saphyre-rfq/
│   │   └── index.ts
│   ├── saros/
│   │   └── index.ts
│   ├── saros-dlmm.ts
│   ├── satori/
│   │   └── index.ts
│   ├── saturnswap/
│   │   └── index.ts
│   ├── saucerswap/
│   │   └── index.ts
│   ├── saucerswap-v2/
│   │   └── index.ts
│   ├── secondswap/
│   │   └── index.ts
│   ├── sectorone-dlmm-v2/
│   │   └── index.ts
│   ├── seer/
│   │   └── index.ts
│   ├── seiyan-fun/
│   │   └── index.ts
│   ├── shadow-exchange.ts
│   ├── shadow-legacy.ts
│   ├── sharpe-dex/
│   │   └── index.ts
│   ├── shell-protocol/
│   │   ├── constants.ts
│   │   ├── helpers.ts
│   │   └── index.ts
│   ├── shiny/
│   │   └── index.ts
│   ├── shroomy-protocol/
│   │   └── index.ts
│   ├── silverswap/
│   │   └── index.ts
│   ├── simpledex/
│   │   └── index.ts
│   ├── sithswap/
│   │   └── index.ts
│   ├── skate-amm/
│   │   └── index.ts
│   ├── slingshot/
│   │   └── index.ts
│   ├── smardex-usdn/
│   │   └── index.ts
│   ├── smbswap-v2.ts
│   ├── sodex-perps/
│   │   └── index.ts
│   ├── sodex-spot/
│   │   └── index.ts
│   ├── solar-studios/
│   │   └── index.ts
│   ├── solayer-card.ts
│   ├── solfi-v2/
│   │   └── index.ts
│   ├── solidly-v3/
│   │   └── index.ts
│   ├── sologenic/
│   │   └── index.ts
│   ├── someswap/
│   │   └── index.ts
│   ├── somnex-perps.ts
│   ├── somnex-v3.ts
│   ├── somnex-xyz.ts
│   ├── somnia-exchange.ts
│   ├── sonic-market-orderbook/
│   │   └── index.ts
│   ├── sour/
│   │   └── index.ts
│   ├── spacedex-derivatives.ts
│   ├── spacedex-swap.ts
│   ├── spacewhale/
│   │   └── index.ts
│   ├── spark/
│   │   └── index.ts
│   ├── sparkdex-perps/
│   │   └── index.ts
│   ├── spartan/
│   │   └── index.ts
│   ├── spectra-v2.ts
│   ├── spectrum/
│   │   └── index.ts
│   ├── spicyswap/
│   │   └── index.ts
│   ├── spritz-card.ts
│   ├── squaretower.ts
│   ├── stabble/
│   │   └── index.ts
│   ├── stabble-clmm/
│   │   └── index.ts
│   ├── stabull/
│   │   └── index.ts
│   ├── standard-mode/
│   │   └── index.ts
│   ├── standard-spot/
│   │   └── index.ts
│   ├── standx/
│   │   └── index.ts
│   ├── starkdefi/
│   │   └── index.ts
│   ├── steamm.ts
│   ├── stellarx/
│   │   └── index.ts
│   ├── stellaswap-v4/
│   │   └── index.ts
│   ├── ston/
│   │   └── index.ts
│   ├── stormtrade/
│   │   └── index.ts
│   ├── storyhunt-v3.ts
│   ├── strike-finance/
│   │   └── index.ts
│   ├── sudofinance/
│   │   └── index.ts
│   ├── sudoswap-v2/
│   │   └── index.ts
│   ├── sundaeswap/
│   │   └── index.ts
│   ├── sunperp/
│   │   └── index.ts
│   ├── sunswap/
│   │   └── index.ts
│   ├── sunswap-v2/
│   │   └── index.ts
│   ├── sunswap-v3/
│   │   └── index.ts
│   ├── supernova-CL.ts
│   ├── supernova.ts
│   ├── surfswap-classic.ts
│   ├── surge-trade/
│   │   └── index.ts
│   ├── sushi-aptos/
│   │   └── index.ts
│   ├── sushiswap-trident.ts
│   ├── sushiswap-v3.ts
│   ├── swaap-v1.ts
│   ├── swaap-v2.ts
│   ├── swap-coffee/
│   │   └── index.ts
│   ├── swapbased-perps.ts
│   ├── swapbased-v2.ts
│   ├── swapbased-v3.ts
│   ├── swapline/
│   │   └── index.ts
│   ├── swapr-v3/
│   │   └── index.ts
│   ├── swaps-io/
│   │   └── index.ts
│   ├── swop/
│   │   └── index.ts
│   ├── sxbet/
│   │   └── index.ts
│   ├── symmetric/
│   │   └── index.ts
│   ├── symmio/
│   │   └── index.ts
│   ├── syncswap/
│   │   └── index.ts
│   ├── synfutures-v1/
│   │   └── index.ts
│   ├── synfutures-v2/
│   │   └── index.ts
│   ├── synfutures-v3/
│   │   └── index.ts
│   ├── synthetify/
│   │   └── index.ts
│   ├── synthetix/
│   │   └── index.ts
│   ├── synthetix-v3/
│   │   └── index.ts
│   ├── synthetix-v4/
│   │   └── index.ts
│   ├── taiko-swap.ts
│   ├── tangleswap/
│   │   └── index.ts
│   ├── tapp-exchange/
│   │   └── index.ts
│   ├── tea-fi.ts
│   ├── tealswap/
│   │   └── index.ts
│   ├── tearex/
│   │   └── index.ts
│   ├── teleswap/
│   │   └── index.ts
│   ├── tempo-fee-amm.ts
│   ├── tempo-stable-dex/
│   │   └── index.ts
│   ├── tessera/
│   │   └── index.ts
│   ├── testing-please-ignore-2/
│   │   └── index.ts
│   ├── thalaswap/
│   │   └── index.ts
│   ├── thalaswap-v2/
│   │   └── index.ts
│   ├── thalaswap-v3.ts
│   ├── thales/
│   │   ├── abis.ts
│   │   ├── config.ts
│   │   ├── eventArgs.ts
│   │   ├── index.ts
│   │   └── parsers.ts
│   ├── thaw.ts
│   ├── thirdfy.ts
│   ├── thorchain-dex.ts
│   ├── thorswap/
│   │   └── index.ts
│   ├── thorwallet/
│   │   └── index.ts
│   ├── tigris/
│   │   └── index.ts
│   ├── tinyman/
│   │   └── index.ts
│   ├── titan/
│   │   └── index.ts
│   ├── tlx-finance/
│   │   └── index.ts
│   ├── tokenlon-agg.ts
│   ├── tokenlon-dex.ts
│   ├── tonco/
│   │   └── index.ts
│   ├── tonpump/
│   │   └── index.ts
│   ├── topstrike/
│   │   └── index.ts
│   ├── torch/
│   │   └── index.ts
│   ├── toros/
│   │   └── index.ts
│   ├── trado/
│   │   └── index.ts
│   ├── trado-spot/
│   │   └── index.ts
│   ├── tradoor/
│   │   └── index.ts
│   ├── treadfi-perps.ts
│   ├── tristero/
│   │   └── index.ts
│   ├── truemarkets.ts
│   ├── ttswap/
│   │   └── index.ts
│   ├── turbolev/
│   │   └── index.ts
│   ├── turbos/
│   │   └── index.ts
│   ├── txflow-perps/
│   │   └── index.ts
│   ├── typus-perp/
│   │   └── index.ts
│   ├── umbra/
│   │   └── index.ts
│   ├── uniderp/
│   │   └── index.ts
│   ├── unidex-unidex-dexs-agg.ts
│   ├── unidex-unidex.ts
│   ├── uniswap-v1.ts
│   ├── uniswap-v2.ts
│   ├── uniswap-v3.ts
│   ├── uniswap-v4.ts
│   ├── updown/
│   │   └── index.ts
│   ├── upheaval-v3/
│   │   └── index.ts
│   ├── upscale/
│   │   └── index.ts
│   ├── urdex/
│   │   └── index.ts
│   ├── utyabswap/
│   │   └── index.ts
│   ├── valantis-stex/
│   │   └── index.ts
│   ├── valiant-trade/
│   │   └── index.ts
│   ├── vanilla-finance-perps/
│   │   └── index.ts
│   ├── vanswap/
│   │   └── index.ts
│   ├── vapordex-v1.ts
│   ├── vapordex-v2.ts
│   ├── variational-omni/
│   │   └── index.ts
│   ├── veax/
│   │   └── index.ts
│   ├── velar.ts
│   ├── velocore-v2/
│   │   └── index.ts
│   ├── velodrome-slipstream/
│   │   └── index.ts
│   ├── verus.ts
│   ├── vest/
│   │   └── index.ts
│   ├── vexchange/
│   │   └── index.ts
│   ├── vinunft/
│   │   └── index.ts
│   ├── vinuswap/
│   │   └── index.ts
│   ├── volmex/
│   │   └── index.ts
│   ├── volta-markets/
│   │   └── index.ts
│   ├── voltswap-v1.ts
│   ├── voltswap-v2.ts
│   ├── voodoo-trade-derivatives.ts
│   ├── voodoo-trade-swap.ts
│   ├── w-dex/
│   │   └── index.ts
│   ├── wasabi-prop-amm/
│   │   └── index.ts
│   ├── wavex-derivatives.ts
│   ├── wavex-swap.ts
│   ├── web3world/
│   │   └── index.ts
│   ├── wefi/
│   │   └── index.ts
│   ├── wemix.fi/
│   │   └── index.ts
│   ├── wingriders/
│   │   └── index.ts
│   ├── wombat-exchange/
│   │   └── index.ts
│   ├── woofi/
│   │   └── index.ts
│   ├── worldinc-perps/
│   │   ├── index.ts
│   │   └── worldinc.ts
│   ├── worldinc-spot/
│   │   └── index.ts
│   ├── worm-wtf/
│   │   └── index.ts
│   ├── wx.network/
│   │   └── index.ts
│   ├── x3x.ts
│   ├── x402/
│   │   ├── facilitators.ts
│   │   └── index.ts
│   ├── xei/
│   │   └── index.ts
│   ├── xena-finance/
│   │   └── index.ts
│   ├── xena-finance-derivative/
│   │   └── index.ts
│   ├── xexchange/
│   │   └── index.ts
│   ├── xfai/
│   │   └── index.ts
│   ├── xpress/
│   │   └── index.ts
│   ├── xrpl-dex/
│   │   └── index.ts
│   ├── y2k-v1.ts
│   ├── y2k-v2.ts
│   ├── yakafinance/
│   │   └── index.ts
│   ├── yakafinance-v3/
│   │   └── index.ts
│   ├── yei-swap.ts
│   ├── yfx-v3/
│   │   └── index.ts
│   ├── yfx-v4/
│   │   └── index.ts
│   ├── yield-basis.ts
│   ├── zeno/
│   │   └── index.ts
│   ├── zeta/
│   │   └── index.ts
│   ├── zilswap/
│   │   └── index.ts
│   ├── zkera-finance/
│   │   ├── index.ts
│   │   └── zkera.ts
│   ├── zkswap-stable/
│   │   └── index.ts
│   ├── zkswap-v3/
│   │   └── index.ts
│   ├── zo/
│   │   └── index.ts
│   ├── zora-sofi/
│   │   └── index.ts
│   ├── zyberswap-v2.ts
│   └── zyberswap-v3.ts
├── factory/
│   ├── alliumSolanaDex.ts
│   ├── blockscout.ts
│   ├── chainTxFees.ts
│   ├── compoundV2.ts
│   ├── curators.ts
│   ├── curve.ts
│   ├── deadAdapters.json
│   ├── duneSolanaDex.ts
│   ├── gmxV1.ts
│   ├── hyperliquid.ts
│   ├── joeLiquidityBook.ts
│   ├── nftVolume.ts
│   ├── normalizedVolume.ts
│   ├── orderly.ts
│   ├── polymarket.ts
│   ├── registry.ts
│   ├── saddle.ts
│   ├── solLst.ts
│   ├── subscan.ts
│   ├── symmio.ts
│   ├── uniSubgraph.ts
│   ├── uniV2.ts
│   └── uniV3.ts
├── fees/
│   ├── 0x0dex.ts
│   ├── 1776meme/
│   │   └── index.ts
│   ├── 1dex/
│   │   └── index.ts
│   ├── 3jane-lending.ts
│   ├── 40acres/
│   │   └── index.ts
│   ├── ArbitrumExchange-v2.ts
│   ├── ArbitrumExchange-v3.ts
│   ├── GUIDELINES.md
│   ├── LeadFi-leadBTC/
│   │   └── index.ts
│   ├── LiquidOps/
│   │   └── index.ts
│   ├── SmarDex/
│   │   └── index.ts
│   ├── aark/
│   │   └── index.ts
│   ├── aave-labs.ts
│   ├── aave-v3.ts
│   ├── aave-v4.ts
│   ├── aavechan.ts
│   ├── abracadabra.ts
│   ├── acred/
│   │   └── index.ts
│   ├── across.ts
│   ├── aden/
│   │   └── index.ts
│   ├── aegis-jusd/
│   │   └── index.ts
│   ├── aegis-yusd/
│   │   └── index.ts
│   ├── aera-v2/
│   │   └── index.ts
│   ├── aera-v3.ts
│   ├── aethir/
│   │   └── index.ts
│   ├── affluent/
│   │   └── index.ts
│   ├── afiprotocol/
│   │   └── index.ts
│   ├── aftermath-fi-amm.ts
│   ├── aimbot.ts
│   ├── airnft/
│   │   └── index.ts
│   ├── airswap.ts
│   ├── ajna-v1/
│   │   └── index.ts
│   ├── ajna-v2/
│   │   └── index.ts
│   ├── akash-network/
│   │   └── index.ts
│   ├── aktionariat/
│   │   └── index.ts
│   ├── alchemix.ts
│   ├── algorand.ts
│   ├── alkimi/
│   │   └── index.ts
│   ├── allbridge-classic.ts
│   ├── allbridge-core.ts
│   ├── allox/
│   │   └── index.ts
│   ├── almanak/
│   │   └── index.ts
│   ├── alpha-arcade/
│   │   └── index.ts
│   ├── alphafi/
│   │   └── index.ts
│   ├── alphix.ts
│   ├── amnis-finance/
│   │   └── index.ts
│   ├── amped/
│   │   └── index.ts
│   ├── amphor/
│   │   └── index.ts
│   ├── angle/
│   │   ├── index.ts
│   │   └── types.ts
│   ├── ankr-lst.ts
│   ├── anoncoin/
│   │   └── index.ts
│   ├── antfun.ts
│   ├── aori/
│   │   └── index.ts
│   ├── apebot/
│   │   └── index.ts
│   ├── apestore/
│   │   └── index.ts
│   ├── apex-omni.ts
│   ├── apexdefi/
│   │   ├── burst.ts
│   │   ├── dex.ts
│   │   └── index.ts
│   ├── apollox/
│   │   └── index.ts
│   ├── apricot/
│   │   └── index.ts
│   ├── apriori.ts
│   ├── aptos.ts
│   ├── apyx-protocol.ts
│   ├── aquabank.ts
│   ├── arbitrum-nova.ts
│   ├── arbitrum-timeboost/
│   │   └── index.ts
│   ├── aries-markets/
│   │   └── index.ts
│   ├── arkada/
│   │   └── index.ts
│   ├── arrakis-v2/
│   │   └── index.ts
│   ├── arweave/
│   │   └── index.ts
│   ├── ash-perp/
│   │   └── index.ts
│   ├── aspecta.ts
│   ├── assetchain.ts
│   ├── aster-spot/
│   │   └── index.ts
│   ├── asymmetry-usdaf.ts
│   ├── auki/
│   │   └── index.ts
│   ├── aur/
│   │   └── index.ts
│   ├── aura.ts
│   ├── autofinance/
│   │   └── index.ts
│   ├── autopilot/
│   │   └── index.ts
│   ├── avalanche.ts
│   ├── avalon-usda.ts
│   ├── avalon_old/
│   │   └── index.ts
│   ├── avant-avbtc/
│   │   └── index.ts
│   ├── avant-aveth/
│   │   └── index.ts
│   ├── avant-avusd/
│   │   └── index.ts
│   ├── avantis/
│   │   └── index.ts
│   ├── aveai/
│   │   └── index.ts
│   ├── aveforge/
│   │   └── index.ts
│   ├── axelar/
│   │   └── index.ts
│   ├── axie-infinity/
│   │   └── index.ts
│   ├── axiom.ts
│   ├── azuro/
│   │   └── index.ts
│   ├── b14g/
│   │   └── index.ts
│   ├── b402.ts
│   ├── babydoge-bridge/
│   │   └── index.ts
│   ├── babylon-genesis/
│   │   └── index.ts
│   ├── backedfi.ts
│   ├── badger-dao/
│   │   └── index.ts
│   ├── baker-dao/
│   │   └── index.ts
│   ├── balancer-v1.ts
│   ├── banana-gun-trading.ts
│   ├── bancor-v2.ts
│   ├── bankr.ts
│   ├── basecamp/
│   │   └── index.ts
│   ├── basepaint.ts
│   ├── baseswap-v2.ts
│   ├── baseswap-v3.ts
│   ├── basisos/
│   │   └── index.ts
│   ├── bcraft.ts
│   ├── beam-dex-v3.ts
│   ├── beamable-network/
│   │   └── index.ts
│   ├── beamex.ts
│   ├── bedrock-unibtc/
│   │   └── index.ts
│   ├── bedrock-unieth/
│   │   └── index.ts
│   ├── bedrock-uniiotx/
│   │   └── index.ts
│   ├── beefy/
│   │   └── index.ts
│   ├── beets-staked-sonic/
│   │   └── index.ts
│   ├── beezie.ts
│   ├── believe/
│   │   └── index.ts
│   ├── bellumexchange.ts
│   ├── bend/
│   │   └── index.ts
│   ├── benddao-lending-v1.ts
│   ├── benddao-lending-v2.ts
│   ├── benqi-staked-avax.ts
│   ├── beraborrow/
│   │   └── index.ts
│   ├── berachain-bribes/
│   │   └── index.ts
│   ├── beradrome/
│   │   └── index.ts
│   ├── betmode.ts
│   ├── betswirl/
│   │   └── index.ts
│   ├── bifrost-chain.ts
│   ├── bifrost-liquid-staking/
│   │   └── index.ts
│   ├── bim/
│   │   └── index.ts
│   ├── binance-alpha.ts
│   ├── binance-staked-eth.ts
│   ├── bitcoin-bridge/
│   │   └── index.ts
│   ├── bitcoin.ts
│   ├── bitfi-basis.ts
│   ├── bitfi-btc.ts
│   ├── bitflow-fi.ts
│   ├── bitlayer/
│   │   └── index.ts
│   ├── bitlayer-ybtc-family/
│   │   └── index.ts
│   ├── bitway-earn.ts
│   ├── blastapi.ts
│   ├── blazingbot.ts
│   ├── blend-backstop-v2/
│   │   └── index.ts
│   ├── blend-pools/
│   │   └── index.ts
│   ├── blend-pools-v2/
│   │   └── index.ts
│   ├── blex/
│   │   └── index.ts
│   ├── blockchain-capital/
│   │   └── index.ts
│   ├── blocxroute.ts
│   ├── bloom.ts
│   ├── bluefin-alphalend.ts
│   ├── bluefin-amm.ts
│   ├── bluefin-pro.ts
│   ├── bluefin.ts
│   ├── bluemove/
│   │   └── index.ts
│   ├── blur/
│   │   └── index.ts
│   ├── bmx-freestyle.ts
│   ├── bmx.ts
│   ├── bob.ts
│   ├── bodega-market/
│   │   └── index.ts
│   ├── bonk-bot/
│   │   └── index.ts
│   ├── bonk-staked-sol/
│   │   └── index.ts
│   ├── bonzo/
│   │   └── index.ts
│   ├── boop-fun/
│   │   └── index.ts
│   ├── boson/
│   │   └── index.ts
│   ├── botanix-stBTC.ts
│   ├── botanix.ts
│   ├── botfalcon.ts
│   ├── bounce-tech.ts
│   ├── bouncebit-cedefi/
│   │   └── index.ts
│   ├── bracket-lst/
│   │   └── index.ts
│   ├── bracket-vaults/
│   │   └── index.ts
│   ├── bsc.ts
│   ├── bucket-protocol/
│   │   └── index.ts
│   ├── bucket-protocol-v2/
│   │   └── index.ts
│   ├── buffer/
│   │   └── index.ts
│   ├── bulbaswap-v2.ts
│   ├── bulbaswap-v3.ts
│   ├── bullx.ts
│   ├── bungee-bridge.ts
│   ├── bungee.ts
│   ├── cakepie.ts
│   ├── calculus.ts
│   ├── canton.ts
│   ├── cap/
│   │   ├── config.ts
│   │   ├── helpers.ts
│   │   └── index.ts
│   ├── cap-finance-v4.ts
│   ├── cardano.ts
│   ├── cashmere/
│   │   └── index.ts
│   ├── catex/
│   │   └── index.ts
│   ├── catfee/
│   │   └── index.ts
│   ├── cattos.ts
│   ├── caviar-tangible.ts
│   ├── caviarnine-lsu-pool.ts
│   ├── caviarnine-shape-liquidity.ts
│   ├── cbbtc/
│   │   └── index.ts
│   ├── cbeth/
│   │   └── index.ts
│   ├── cctp/
│   │   └── index.ts
│   ├── celestia.ts
│   ├── cellula/
│   │   └── index.ts
│   ├── centrifuge/
│   │   └── index.ts
│   ├── cetus/
│   │   └── index.ts
│   ├── cetus-dlmm/
│   │   └── index.ts
│   ├── chainflip/
│   │   └── index.ts
│   ├── chainlink/
│   │   └── index.ts
│   ├── chainlink-ccip.ts
│   ├── chainlink-keepers.ts
│   ├── chainlink-requests.ts
│   ├── chainlink-vrf-v1.ts
│   ├── chainlink-vrf-v2.ts
│   ├── charm-fi-vaults-2/
│   │   └── index.ts
│   ├── chattershield/
│   │   └── index.ts
│   ├── cheapgm.ts
│   ├── chedda-finance/
│   │   └── index.ts
│   ├── cheesepad/
│   │   └── index.ts
│   ├── chopcorp/
│   │   └── index.ts
│   ├── chutes-ai.ts
│   ├── cian-yieldlayer/
│   │   └── index.ts
│   ├── circle.ts
│   ├── circuitdao.ts
│   ├── clanker.ts
│   ├── clawdstrategy.ts
│   ├── clearpool/
│   │   └── index.ts
│   ├── clearpool-rwa/
│   │   └── index.ts
│   ├── cleopatra-exchange.ts
│   ├── clever.ts
│   ├── clusters.ts
│   ├── coal-works/
│   │   └── index.ts
│   ├── cobaltx.ts
│   ├── coinbase-commerce.ts
│   ├── coinbase-wallet.ts
│   ├── collector-crypt/
│   │   └── index.ts
│   ├── collex.ts
│   ├── colony/
│   │   ├── airdrops.ts
│   │   ├── cai.ts
│   │   ├── dex.ts
│   │   ├── earlystage.ts
│   │   ├── index.ts
│   │   ├── masterChef.ts
│   │   ├── staking.ts
│   │   └── validatorProgram.ts
│   ├── colorpool.ts
│   ├── compound-v3.ts
│   ├── compound.ts
│   ├── concentrator.ts
│   ├── concrete/
│   │   └── index.ts
│   ├── contango/
│   │   └── index.ts
│   ├── convex.ts
│   ├── cooler-loans.ts
│   ├── core-markets/
│   │   └── index.ts
│   ├── corex/
│   │   └── index.ts
│   ├── cosmoshub/
│   │   └── index.ts
│   ├── courtyard/
│   │   └── index.ts
│   ├── covo-finance.ts
│   ├── covo-v2.ts
│   ├── cow-protocol.ts
│   ├── creator-bid.ts
│   ├── crv-usd.ts
│   ├── cryptex-v2.ts
│   ├── crypto-com-lst.ts
│   ├── crystal-terminal/
│   │   └── index.ts
│   ├── csc.ts
│   ├── current/
│   │   └── index.ts
│   ├── curvance.ts
│   ├── curve.ts
│   ├── cvex/
│   │   └── index.ts
│   ├── cyberperp.ts
│   ├── czt.ts
│   ├── d2finance/
│   │   └── index.ts
│   ├── danogo/
│   │   ├── index.ts
│   │   └── types.ts
│   ├── dappos-intentEx.ts
│   ├── debank-cloud.ts
│   ├── dedust/
│   │   └── index.ts
│   ├── deepbook-v3/
│   │   └── index.ts
│   ├── defi-saver.ts
│   ├── definitive.ts
│   ├── defiplaza/
│   │   └── index.ts
│   ├── defituna-amm/
│   │   └── index.ts
│   ├── defituna-liquidity/
│   │   └── index.ts
│   ├── degen-launchpad.ts
│   ├── deltadefi/
│   │   └── index.ts
│   ├── desk/
│   │   └── index.ts
│   ├── dexfi/
│   │   └── index.ts
│   ├── dexhunter/
│   │   └── index.ts
│   ├── dexscreener.ts
│   ├── dexter/
│   │   └── index.ts
│   ├── dextools.ts
│   ├── dextoro/
│   │   └── index.ts
│   ├── dhedge/
│   │   └── index.ts
│   ├── digift/
│   │   └── index.ts
│   ├── dinero-pxeth/
│   │   └── index.ts
│   ├── dln/
│   │   └── index.ts
│   ├── dodo-fees.ts
│   ├── doge.ts
│   ├── dogechain.ts
│   ├── dolomite/
│   │   └── index.ts
│   ├── donut/
│   │   └── index.ts
│   ├── doppler-finance/
│   │   └── index.ts
│   ├── doublezero/
│   │   └── index.ts
│   ├── dragonswap-v2.ts
│   ├── dragonswap-v3.ts
│   ├── dreaming.ts
│   ├── dsx/
│   │   └── index.ts
│   ├── duck-chain.ts
│   ├── dune-supply.ts
│   ├── dydx-v4/
│   │   └── index.ts
│   ├── e3.ts
│   ├── easya-kickstart/
│   │   └── index.ts
│   ├── echelon.ts
│   ├── echo/
│   │   └── index.ts
│   ├── echo-lending/
│   │   └── index.ts
│   ├── echo-lsd/
│   │   └── index.ts
│   ├── echo-strategy/
│   │   └── index.ts
│   ├── edebase.ts
│   ├── edgex/
│   │   └── index.ts
│   ├── eesee.ts
│   ├── eggs-finance/
│   │   └── index.ts
│   ├── eigenlayer.ts
│   ├── element/
│   │   └── index.ts
│   ├── ember-protocol.ts
│   ├── emdx.ts
│   ├── emojicoin.ts
│   ├── emporium/
│   │   └── index.ts
│   ├── ens.ts
│   ├── enzyme/
│   │   └── index.ts
│   ├── equilibria.ts
│   ├── equity/
│   │   └── index.ts
│   ├── erc-burner/
│   │   └── index.ts
│   ├── erinaceus/
│   │   └── index.ts
│   ├── ethena.ts
│   ├── ether-fi/
│   │   └── index.ts
│   ├── ethereum/
│   │   └── index.ts
│   ├── etherfi-cash-cards/
│   │   └── index.ts
│   ├── etherfi-cash-collateral-management/
│   │   └── index.ts
│   ├── ethervista.ts
│   ├── euler/
│   │   ├── config.ts
│   │   └── index.ts
│   ├── eva/
│   │   └── index.ts
│   ├── exponent/
│   │   └── index.ts
│   ├── extended.ts
│   ├── extra/
│   │   └── index.ts
│   ├── factor/
│   │   └── index.ts
│   ├── faith/
│   │   └── index.ts
│   ├── falcon-finance/
│   │   └── index.ts
│   ├── fantasy-top/
│   │   └── index.ts
│   ├── farcaster.ts
│   ├── fastjpeg/
│   │   └── index.ts
│   ├── fastlane/
│   │   └── index.ts
│   ├── fathom-cdp.ts
│   ├── felix-usdhl/
│   │   └── index.ts
│   ├── ferro.ts
│   ├── fidelity-crypto-fund/
│   │   └── index.ts
│   ├── fidelity-digital-interest/
│   │   └── index.ts
│   ├── filecoin.ts
│   ├── finder-bot/
│   │   └── index.ts
│   ├── fira.ts
│   ├── first-crypto-bank/
│   │   └── index.ts
│   ├── fjord-foundry-v1.ts
│   ├── fjord-foundry-v2.ts
│   ├── flarebank/
│   │   └── index.ts
│   ├── flashbot.ts
│   ├── flashtrade.ts
│   ├── flaunch.ts
│   ├── flexperp.ts
│   ├── flip/
│   │   └── index.ts
│   ├── flock/
│   │   └── index.ts
│   ├── flow/
│   │   └── index.ts
│   ├── flowx-finance/
│   │   └── index.ts
│   ├── flowx-v3/
│   │   └── index.ts
│   ├── fluence/
│   │   └── index.ts
│   ├── fluid/
│   │   ├── config.ts
│   │   ├── fees.ts
│   │   ├── index.ts
│   │   └── revenue.ts
│   ├── fluid-lite/
│   │   └── index.ts
│   ├── fluidtokens/
│   │   └── index.ts
│   ├── fluxbeam.ts
│   ├── fly-trade/
│   │   └── index.ts
│   ├── flying-tulip-ftusd.ts
│   ├── flying-tulip-lend.ts
│   ├── flying-tulip.ts
│   ├── fomo/
│   │   └── index.ts
│   ├── foom-cash/
│   │   └── index.ts
│   ├── footballdotfun/
│   │   └── index.ts
│   ├── foundation.ts
│   ├── four-meme.ts
│   ├── fragment/
│   │   └── index.ts
│   ├── fragmetric/
│   │   └── index.ts
│   ├── frankencoin/
│   │   └── index.ts
│   ├── franklin-templeton/
│   │   └── index.ts
│   ├── frax-amo.ts
│   ├── frax-ether.ts
│   ├── frax-fpi.ts
│   ├── frax-swap.ts
│   ├── fraxlend/
│   │   └── index.ts
│   ├── frenflow.ts
│   ├── friend-tech.ts
│   ├── fuel-ignition.ts
│   ├── fulcrom-finance.ts
│   ├── fullsail-finance/
│   │   └── index.ts
│   ├── furucombo/
│   │   └── index.ts
│   ├── futarchy-amm/
│   │   └── index.ts
│   ├── futureswap.ts
│   ├── fvm-exchange.ts
│   ├── fwx/
│   │   └── index.ts
│   ├── fx-protocol.ts
│   ├── g8keep.ts
│   ├── gacha/
│   │   └── index.ts
│   ├── gaib/
│   │   └── index.ts
│   ├── gains-network.ts
│   ├── gambit.ts
│   ├── gameclub.ts
│   ├── gamma.ts
│   ├── garden/
│   │   └── index.ts
│   ├── garuda-staking.ts
│   ├── gaspump/
│   │   └── index.ts
│   ├── gate-btc/
│   │   └── index.ts
│   ├── gate-perps.ts
│   ├── gauntlet.ts
│   ├── gearbox/
│   │   ├── configs.ts
│   │   └── index.ts
│   ├── geckoterminal.ts
│   ├── genius-protocol/
│   │   └── index.ts
│   ├── geodnet.ts
│   ├── get-protocol.ts
│   ├── getHemiNames/
│   │   └── index.ts
│   ├── gitcoin-passport/
│   │   └── index.ts
│   ├── giza/
│   │   └── index.ts
│   ├── gmgnai.ts
│   ├── gmx-sol.ts
│   ├── gmx-v2/
│   │   └── index.ts
│   ├── gmx.ts
│   ├── gnd-protocol.ts
│   ├── goat-protocol/
│   │   └── index.ts
│   ├── goblin/
│   │   └── index.ts
│   ├── godl/
│   │   └── index.ts
│   ├── goku-money/
│   │   └── index.ts
│   ├── goldfinch.ts
│   ├── gondi-v3/
│   │   └── index.ts
│   ├── goplus-locker.ts
│   ├── goplus.ts
│   ├── graphite-protocol/
│   │   └── index.ts
│   ├── graveyard-protocol/
│   │   └── index.ts
│   ├── gravity/
│   │   └── index.ts
│   ├── grayscale/
│   │   └── index.ts
│   ├── grelfswap/
│   │   └── index.ts
│   ├── grizzly-trade-derivatives-v2.ts
│   ├── grove/
│   │   └── index.ts
│   ├── gt3.ts
│   ├── gyroscope/
│   │   └── index.ts
│   ├── haedal/
│   │   └── index.ts
│   ├── haedal-protocol/
│   │   └── index.ts
│   ├── haedal-vault/
│   │   └── index.ts
│   ├── haiku/
│   │   └── index.ts
│   ├── harmonic.ts
│   ├── hashnote-usyc/
│   │   └── index.ts
│   ├── hashpaylink.ts
│   ├── hastra/
│   │   └── index.ts
│   ├── haven1-hswap/
│   │   └── index.ts
│   ├── hawkfi.ts
│   ├── haystack/
│   │   └── index.ts
│   ├── heaven-dex/
│   │   └── index.ts
│   ├── hedera.ts
│   ├── hedgey.ts
│   ├── hegic.ts
│   ├── helio.ts
│   ├── helium/
│   │   └── index.ts
│   ├── helix-helix-perp.ts
│   ├── helix-helix.ts
│   ├── hercules-v2.ts
│   ├── hercules-v3.ts
│   ├── hermes-v2/
│   │   └── index.ts
│   ├── hfun.ts
│   ├── hikari.ts
│   ├── hipo/
│   │   └── index.ts
│   ├── hivemapper/
│   │   └── index.ts
│   ├── hlscope/
│   │   └── index.ts
│   ├── holdstation-defutures.ts
│   ├── honeyplay-amm/
│   │   └── index.ts
│   ├── honeyplay-liquid-staking/
│   │   └── index.ts
│   ├── honeyplay-marketplace/
│   │   └── index.ts
│   ├── hono.ts
│   ├── hop-protocol.ts
│   ├── hopr/
│   │   └── index.ts
│   ├── houdini-swap.ts
│   ├── human-id/
│   │   └── index.ts
│   ├── humidifi.ts
│   ├── hydradx.ts
│   ├── hydrex/
│   │   └── index.ts
│   ├── hydro-inflow/
│   │   └── index.ts
│   ├── hylo-lst.ts
│   ├── hylo-protocol/
│   │   └── index.ts
│   ├── hyperbeat/
│   │   └── index.ts
│   ├── hyperbeat-lst/
│   │   └── index.ts
│   ├── hypercat.ts
│   ├── hyperevm.ts
│   ├── hyperlane.ts
│   ├── hyperlend-isolated.ts
│   ├── hyperliquid-hlp.ts
│   ├── hyperswap-terminal.ts
│   ├── hypertek/
│   │   └── index.ts
│   ├── hyperunit/
│   │   └── index.ts
│   ├── hyperwave/
│   │   ├── hwhlp.ts
│   │   ├── hwhype.ts
│   │   └── index.ts
│   ├── hypurrfi-isolated/
│   │   ├── abi.json
│   │   └── index.ts
│   ├── icp.ts
│   ├── idle/
│   │   └── index.ts
│   ├── illuvium.ts
│   ├── immortalx/
│   │   └── index.ts
│   ├── imx-seaport/
│   │   ├── index.ts
│   │   └── seaport.ts
│   ├── index-coop/
│   │   └── index.ts
│   ├── indigo/
│   │   └── index.ts
│   ├── infinex-swap.ts
│   ├── infinifi/
│   │   └── index.ts
│   ├── infinite/
│   │   └── index.ts
│   ├── infinityname/
│   │   └── index.ts
│   ├── infrared-finance.ts
│   ├── injective.ts
│   ├── ink.ts
│   ├── instadapp/
│   │   └── index.ts
│   ├── interface-app.ts
│   ├── inverse-finance/
│   │   └── index.ts
│   ├── iotex/
│   │   └── index.ts
│   ├── ipor-protocol/
│   │   └── index.ts
│   ├── ironbank/
│   │   └── index.ts
│   ├── ivx/
│   │   └── index.ts
│   ├── jade/
│   │   └── index.ts
│   ├── javsphere/
│   │   └── index.ts
│   ├── jeton/
│   │   └── index.ts
│   ├── jito/
│   │   └── index.ts
│   ├── jito-mev-tips/
│   │   └── index.ts
│   ├── jito-staked-sol/
│   │   └── index.ts
│   ├── jojo/
│   │   └── index.ts
│   ├── jpg-store/
│   │   └── index.ts
│   ├── juice-finance/
│   │   └── index.ts
│   ├── juicebox/
│   │   └── index.ts
│   ├── jumper-exchange/
│   │   └── index.ts
│   ├── jup-ape.ts
│   ├── jup-studio/
│   │   └── index.ts
│   ├── jupiter-dca.ts
│   ├── jupiter-lend/
│   │   └── index.ts
│   ├── jupiter-limit.ts
│   ├── jupiter-perpetual/
│   │   └── index.ts
│   ├── jupiter-staked-sol/
│   │   └── index.ts
│   ├── jupiter.ts
│   ├── justbet/
│   │   ├── constants.ts
│   │   └── index.ts
│   ├── justlend.ts
│   ├── k-bit/
│   │   └── index.ts
│   ├── kaching/
│   │   └── index.ts
│   ├── kaia/
│   │   └── index.ts
│   ├── kaio/
│   │   └── index.ts
│   ├── kairos/
│   │   └── index.ts
│   ├── kamino-lending/
│   │   └── index.ts
│   ├── kamino-liquidity/
│   │   └── index.ts
│   ├── kanalabs-perp/
│   │   └── index.ts
│   ├── kasu.ts
│   ├── keller-cl/
│   │   └── index.ts
│   ├── kelp.ts
│   ├── kensei.ts
│   ├── keom.ts
│   ├── kerberos/
│   │   ├── index.ts
│   │   └── routers.ts
│   ├── kgen.ts
│   ├── kiloex/
│   │   └── index.ts
│   ├── kinetic.ts
│   ├── kinetiq-staked-hype/
│   │   └── index.ts
│   ├── kinetix-v3/
│   │   └── index.ts
│   ├── kintsu.ts
│   ├── klaytn.ts
│   ├── kleros.ts
│   ├── kofi-finance/
│   │   └── index.ts
│   ├── kpk.ts
│   ├── kreo.ts
│   ├── kromatika.ts
│   ├── kumbaya/
│   │   └── index.ts
│   ├── kyan.ts
│   ├── kyberswap-aggregator.ts
│   ├── kyros/
│   │   └── index.ts
│   ├── lab-terminal.ts
│   ├── lagoon/
│   │   ├── config.ts
│   │   └── index.ts
│   ├── lamboo.ts
│   ├── launch-on-bags/
│   │   └── index.ts
│   ├── launchlab/
│   │   └── index.ts
│   ├── lavarage.ts
│   ├── layer3/
│   │   └── index.ts
│   ├── layerzero.ts
│   ├── layerzerov1.ts
│   ├── lazy-summer-protocol/
│   │   └── index.ts
│   ├── lens-protocol.ts
│   ├── letsbonk/
│   │   └── index.ts
│   ├── level-finance.ts
│   ├── level.ts
│   ├── levvy-fi/
│   │   └── index.ts
│   ├── levvy-fi-tokens/
│   │   └── index.ts
│   ├── lexer/
│   │   └── index.ts
│   ├── lido.ts
│   ├── lifi/
│   │   └── index.ts
│   ├── lighterv2/
│   │   └── index.ts
│   ├── lighterv2-spot/
│   │   └── index.ts
│   ├── linehub-perps/
│   │   └── index.ts
│   ├── liquid-bolt.ts
│   ├── liquid-collective/
│   │   └── index.ts
│   ├── liquid-protocol/
│   │   └── index.ts
│   ├── liquid-ron/
│   │   └── index.ts
│   ├── liquidity-slicing/
│   │   └── index.ts
│   ├── liquidlaunch/
│   │   └── index.ts
│   ├── liquis.ts
│   ├── liquity-v2.ts
│   ├── lista-dex.ts
│   ├── lista-lending/
│   │   └── index.ts
│   ├── lista-lisusd/
│   │   └── index.ts
│   ├── lista-rwa/
│   │   └── index.ts
│   ├── lista-slisbnb/
│   │   └── index.ts
│   ├── litecoin.ts
│   ├── livepeer/
│   │   └── index.ts
│   ├── llamalend-curve.ts
│   ├── llamalend.ts
│   ├── lnexchange-perp.ts
│   ├── lobbyfi.ts
│   ├── lombard-lbtc/
│   │   └── index.ts
│   ├── lombard-vault/
│   │   └── index.ts
│   ├── looksrare.ts
│   ├── looped-hype/
│   │   └── index.ts
│   ├── loopscale/
│   │   └── index.ts
│   ├── looter.ts
│   ├── lorenzo-susd1/
│   │   └── index.ts
│   ├── luna-fun.ts
│   ├── lybra-finance.ts
│   ├── lybra-v2.ts
│   ├── lynex.ts
│   ├── lyra-v2-options.ts
│   ├── lyra-v2.ts
│   ├── lyra.ts
│   ├── m0.ts
│   ├── macaron-bid.ts
│   ├── maestro.ts
│   ├── magnum-trading-bot/
│   │   └── index.ts
│   ├── magpie.ts
│   ├── maia-dao/
│   │   └── index.ts
│   ├── mainstreet/
│   │   └── index.ts
│   ├── makenow-meme.ts
│   ├── makerdao.ts
│   ├── makina/
│   │   └── index.ts
│   ├── mamo.ts
│   ├── manifold.ts
│   ├── manta.ts
│   ├── mantle-restaking/
│   │   └── index.ts
│   ├── maple-finance.ts
│   ├── margin-zero.ts
│   ├── marinade-liquid-staking/
│   │   └── index.ts
│   ├── marinade-native/
│   │   └── index.ts
│   ├── marinade-select/
│   │   └── index.ts
│   ├── markit.ts
│   ├── marquee/
│   │   └── index.ts
│   ├── matcha-xyz.ts
│   ├── maverick.ts
│   ├── maxapy/
│   │   └── index.ts
│   ├── maxbid/
│   │   └── index.ts
│   ├── mayan.ts
│   ├── megamine/
│   │   └── index.ts
│   ├── mellow-lrt.ts
│   ├── memecooking/
│   │   └── index.ts
│   ├── memejob/
│   │   └── index.ts
│   ├── mememarket/
│   │   └── index.ts
│   ├── meridian-amm.ts
│   ├── meridian-trade.ts
│   ├── merkle-trade.ts
│   ├── meso-finance.ts
│   ├── meta-pool-eth/
│   │   └── index.ts
│   ├── metalex/
│   │   └── index.ts
│   ├── metamask-musd/
│   │   └── index.ts
│   ├── metamask.ts
│   ├── metaplex.ts
│   ├── metavault-derivatives-v2/
│   │   └── index.ts
│   ├── metavault-v3/
│   │   └── index.ts
│   ├── metavault.trade/
│   │   └── index.ts
│   ├── meth-protocol.ts
│   ├── metronome-synth/
│   │   └── index.ts
│   ├── mevx.ts
│   ├── mi4/
│   │   └── index.ts
│   ├── midas-rwa/
│   │   └── index.ts
│   ├── migrate-fun/
│   │   └── index.ts
│   ├── mimboku-aggregator.ts
│   ├── minebean.ts
│   ├── minebtc.ts
│   ├── mineloot.ts
│   ├── minswap/
│   │   └── index.ts
│   ├── minswap-aggregator/
│   │   └── index.ts
│   ├── mint.ts
│   ├── mintpark/
│   │   └── index.ts
│   ├── mixoor/
│   │   └── index.ts
│   ├── moar.ts
│   ├── monad/
│   │   └── index.ts
│   ├── monarchpay/
│   │   └── index.ts
│   ├── moneyfi/
│   │   └── index.ts
│   ├── monorail.ts
│   ├── moonpiefun.ts
│   ├── moonriver.ts
│   ├── moonshot-create.ts
│   ├── moonshot-money.ts
│   ├── moonshot.ts
│   ├── moonwell/
│   │   └── index.ts
│   ├── moonwell-apollo.ts
│   ├── moonwell-artemis.ts
│   ├── morph.ts
│   ├── morpheus-ai.ts
│   ├── morpho/
│   │   └── index.ts
│   ├── mosaic-amm.ts
│   ├── move-dollar.ts
│   ├── move.ts
│   ├── mstable-v2/
│   │   └── index.ts
│   ├── mu-digital.ts
│   ├── multichain/
│   │   └── index.ts
│   ├── multipli-fi/
│   │   └── index.ts
│   ├── multiversx/
│   │   └── index.ts
│   ├── mummy-finance.ts
│   ├── musical-chairs.ts
│   ├── mux.ts
│   ├── myriadmarkets/
│   │   └── index.ts
│   ├── myx-finance/
│   │   └── index.ts
│   ├── nado-perp.ts
│   ├── nado-spot.ts
│   ├── namoshi.ts
│   ├── napier/
│   │   └── index.ts
│   ├── native.ts
│   ├── navi/
│   │   └── index.ts
│   ├── navigator/
│   │   └── index.ts
│   ├── near/
│   │   └── index.ts
│   ├── near-intents/
│   │   └── index.ts
│   ├── neby-dex.ts
│   ├── nemo-vault/
│   │   └── index.ts
│   ├── nemo-yield-trading/
│   │   └── index.ts
│   ├── nest-credit.ts
│   ├── nextrare/
│   │   └── index.ts
│   ├── nexus-mutual.ts
│   ├── nfprompt/
│   │   └── index.ts
│   ├── nickel/
│   │   └── index.ts
│   ├── nile-exchange/
│   │   ├── bribes.ts
│   │   └── index.ts
│   ├── noble.ts
│   ├── node-dao/
│   │   └── index.ts
│   ├── node-ops.ts
│   ├── noon/
│   │   └── index.ts
│   ├── nouns/
│   │   └── index.ts
│   ├── nova/
│   │   └── index.ts
│   ├── nozomi.ts
│   ├── ntm/
│   │   └── index.ts
│   ├── nuri-exchange-v2/
│   │   ├── bribes.ts
│   │   └── index.ts
│   ├── o2/
│   │   └── index.ts
│   ├── obol/
│   │   └── index.ts
│   ├── ociswap-basic.ts
│   ├── ociswap-precision.ts
│   ├── odyssey-finance/
│   │   └── index.ts
│   ├── okx-swap.ts
│   ├── olympus-dao.ts
│   ├── omnihub/
│   │   └── index.ts
│   ├── onchain-checkin/
│   │   └── index.ts
│   ├── ondo.ts
│   ├── onre/
│   │   └── index.ts
│   ├── open-stablecoin-index/
│   │   └── index.ts
│   ├── openchat/
│   │   └── index.ts
│   ├── openeden-t-bills/
│   │   └── index.ts
│   ├── openeden-usdo.ts
│   ├── openledger/
│   │   └── index.ts
│   ├── opensea-seaport.ts
│   ├── opentrade.ts
│   ├── optfun/
│   │   └── index.ts
│   ├── optionBlitz/
│   │   └── index.ts
│   ├── opus.ts
│   ├── orb/
│   │   └── index.ts
│   ├── orderly/
│   │   └── index.ts
│   ├── ore/
│   │   └── index.ts
│   ├── origami-finance.ts
│   ├── origin-dollar/
│   │   └── index.ts
│   ├── orynth.ts
│   ├── osmosis.ts
│   ├── ostium/
│   │   └── index.ts
│   ├── oxfun.ts
│   ├── p2p-lending/
│   │   └── index.ts
│   ├── p2pme/
│   │   └── index.ts
│   ├── paal-ai/
│   │   └── index.ts
│   ├── pact.ts
│   ├── padre/
│   │   └── index.ts
│   ├── pagcrypto/
│   │   └── index.ts
│   ├── paint-swap.ts
│   ├── pancakeswap-lottery/
│   │   └── index.ts
│   ├── pandora-speed-trading/
│   │   └── index.ts
│   ├── paradex/
│   │   └── index.ts
│   ├── parcl/
│   │   └── index.ts
│   ├── parity-dex.ts
│   ├── paxos/
│   │   └── index.ts
│   ├── paxos-gold/
│   │   └── index.ts
│   ├── paycash/
│   │   └── index.ts
│   ├── peapods-finance/
│   │   └── index.ts
│   ├── pear-protocol/
│   │   └── index.ts
│   ├── pendle.ts
│   ├── penpie.ts
│   ├── pepe-swaves/
│   │   └── index.ts
│   ├── pepeboost/
│   │   └── index.ts
│   ├── perp88.ts
│   ├── perpetual-protocol.ts
│   ├── phantom.ts
│   ├── pharaoh-exchange.ts
│   ├── phoenix/
│   │   └── index.ts
│   ├── photon.ts
│   ├── phygitals/
│   │   └── index.ts
│   ├── pika-protocol.ts
│   ├── pinksale/
│   │   └── index.ts
│   ├── pinnako.ts
│   ├── pistachio.ts
│   ├── pizza-city.ts
│   ├── plasma-one/
│   │   └── index.ts
│   ├── plasma-saving-vaults/
│   │   └── index.ts
│   ├── plasma.ts
│   ├── playground/
│   │   └── index.ts
│   ├── pleasing-gold.ts
│   ├── pocket-universe.ts
│   ├── polter/
│   │   ├── index.ts
│   │   └── types.ts
│   ├── polycule.ts
│   ├── polygon.ts
│   ├── polymarket.ts
│   ├── polynomial.ts
│   ├── pooltogether-v5/
│   │   └── index.ts
│   ├── possumlabs/
│   │   └── index.ts
│   ├── predict-fun/
│   │   └── index.ts
│   ├── predy-finance-v5.ts
│   ├── premia-v2.ts
│   ├── premia-v3.ts
│   ├── prerich-app.ts
│   ├── prestocks/
│   │   └── index.ts
│   ├── primordium.ts
│   ├── prisma-finance.ts
│   ├── privacy-cash/
│   │   └── index.ts
│   ├── privacy-pools.ts
│   ├── provenance.ts
│   ├── puffer-finance/
│   │   └── index.ts
│   ├── puffer-vaults.ts
│   ├── pulsechain.ts
│   ├── pump-swap/
│   │   └── index.ts
│   ├── pumpdotfun.ts
│   ├── pumper/
│   │   └── index.ts
│   ├── pumpparty/
│   │   └── index.ts
│   ├── pumpup.ts
│   ├── punk-strategy.ts
│   ├── punk.coffee/
│   │   └── index.ts
│   ├── pyth-entropy/
│   │   └── index.ts
│   ├── pyth-express/
│   │   └── index.ts
│   ├── pyth-network/
│   │   └── index.ts
│   ├── pyth-pro/
│   │   └── index.ts
│   ├── qidao.ts
│   ├── quai-network/
│   │   └── index.ts
│   ├── quanto/
│   │   └── index.ts
│   ├── qubic-mining/
│   │   └── index.ts
│   ├── quenta/
│   │   └── index.ts
│   ├── quickswap-hydra/
│   │   └── index.ts
│   ├── quickswap-perps/
│   │   └── index.ts
│   ├── rabby.ts
│   ├── radiant.ts
│   ├── radpie.ts
│   ├── railgun.ts
│   ├── rain/
│   │   └── index.ts
│   ├── rain-one/
│   │   └── index.ts
│   ├── rainbow-predictions.ts
│   ├── rainbow-token-launchpad.ts
│   ├── rainbow-wallet.ts
│   ├── ramses-exchange-v1/
│   │   ├── bribes.ts
│   │   └── index.ts
│   ├── ramses-exchange-v2/
│   │   ├── bribes.ts
│   │   └── index.ts
│   ├── rank-trading/
│   │   └── index.ts
│   ├── rarible/
│   │   └── index.ts
│   ├── ratio/
│   │   └── index.ts
│   ├── raybot.ts
│   ├── razordex.ts
│   ├── re-protocol/
│   │   └── index.ts
│   ├── reachme/
│   │   └── index.ts
│   ├── ready-cards.ts
│   ├── reental/
│   │   └── index.ts
│   ├── renzo/
│   │   ├── common.ts
│   │   └── index.ts
│   ├── rerange/
│   │   └── index.ts
│   ├── reserve/
│   │   └── index.ts
│   ├── reservoir-protocol.ts
│   ├── resolv/
│   │   └── index.ts
│   ├── resupply/
│   │   └── index.ts
│   ├── rezerve-money/
│   │   ├── bonds.ts
│   │   ├── index.ts
│   │   ├── rebases.ts
│   │   └── shadow.ts
│   ├── rfx/
│   │   └── index.ts
│   ├── rhea-cross-chain/
│   │   └── index.ts
│   ├── rhea-lend/
│   │   └── index.ts
│   ├── rhea-lst/
│   │   └── index.ts
│   ├── ribbon/
│   │   └── index.ts
│   ├── rifts/
│   │   └── index.ts
│   ├── rings/
│   │   └── index.ts
│   ├── rip-fun/
│   │   └── index.ts
│   ├── ripple.ts
│   ├── rise-launchpad.ts
│   ├── river/
│   │   ├── config.ts
│   │   └── index.ts
│   ├── rocketpool.ts
│   ├── rocksolid-network/
│   │   └── index.ts
│   ├── rollbit.ts
│   ├── roots/
│   │   └── index.ts
│   ├── rosetta.ts
│   ├── royalbet.ts
│   ├── royco.ts
│   ├── rubicon/
│   │   └── index.ts
│   ├── rubyscore/
│   │   └── index.ts
│   ├── saber/
│   │   └── index.ts
│   ├── sablier.ts
│   ├── safe.ts
│   ├── sanctum/
│   │   └── index.ts
│   ├── sanctum-infinity/
│   │   └── index.ts
│   ├── sanctum-validator-lsts/
│   │   └── index.ts
│   ├── santa-browser/
│   │   └── index.ts
│   ├── saros.ts
│   ├── satoshi-perps/
│   │   └── index.ts
│   ├── saturn-protocol/
│   │   └── index.ts
│   ├── scallop/
│   │   └── index.ts
│   ├── scatter.ts
│   ├── scoop.ts
│   ├── sdai.ts
│   ├── seamless-v2.ts
│   ├── securitize/
│   │   └── index.ts
│   ├── seda.ts
│   ├── sedge/
│   │   └── index.ts
│   ├── segment-finance.ts
│   ├── sei.ts
│   ├── sendshot.ts
│   ├── sentinel-trader-bot.ts
│   ├── sharky/
│   │   └── index.ts
│   ├── sharpe-earn/
│   │   └── index.ts
│   ├── shmonad/
│   │   └── index.ts
│   ├── shoebillFinance-v2/
│   │   └── index.ts
│   ├── shuriken.ts
│   ├── sideshift.ts
│   ├── sierra/
│   │   └── index.ts
│   ├── silent.ts
│   ├── silo-finance/
│   │   └── index.ts
│   ├── silo-finance-v2/
│   │   └── index.ts
│   ├── size-credit.ts
│   ├── skale.ts
│   ├── smithii/
│   │   └── index.ts
│   ├── snakefinance.ts
│   ├── sns.ts
│   ├── socket/
│   │   └── index.ts
│   ├── sofa-org/
│   │   └── index.ts
│   ├── sol-trading-bot/
│   │   └── index.ts
│   ├── solana.ts
│   ├── solar-studios/
│   │   └── index.ts
│   ├── solend.ts
│   ├── solid-yield.ts
│   ├── solidly-v3.ts
│   ├── solidlydex.ts
│   ├── solomon-usdv.ts
│   ├── solstice-usx/
│   │   └── index.ts
│   ├── solv-finance/
│   │   └── index.ts
│   ├── sommelier.ts
│   ├── soneium.ts
│   ├── sonne-finance/
│   │   ├── helpers.ts
│   │   └── index.ts
│   ├── sosovalue/
│   │   └── index.ts
│   ├── sosovalue-basis/
│   │   └── index.ts
│   ├── spaace/
│   │   └── index.ts
│   ├── space-and-time.ts
│   ├── spark/
│   │   └── index.ts
│   ├── spark-liquidity-layer/
│   │   ├── index.ts
│   │   └── spark-liquidity-layer-revenue.sql
│   ├── sparkdex-v3-1/
│   │   └── index.ts
│   ├── spiko/
│   │   └── index.ts
│   ├── splash/
│   │   └── index.ts
│   ├── splitswap/
│   │   └── index.ts
│   ├── springsui/
│   │   └── index.ts
│   ├── springsui-ecosystem/
│   │   └── index.ts
│   ├── ssv-network.ts
│   ├── stUSDT/
│   │   └── index.ts
│   ├── stability/
│   │   └── index.ts
│   ├── stac-clo/
│   │   └── index.ts
│   ├── stackingdao/
│   │   └── index.ts
│   ├── stacks.ts
│   ├── stader.ts
│   ├── staked-hype/
│   │   └── index.ts
│   ├── stakedao/
│   │   └── index.ts
│   ├── stakedotlink/
│   │   └── index.ts
│   ├── stakee/
│   │   └── index.ts
│   ├── stakestone-stone/
│   │   └── index.ts
│   ├── stakewise.ts
│   ├── standx-dusd/
│   │   └── index.ts
│   ├── stargate-finance-v2/
│   │   └── index.ts
│   ├── stargate.ts
│   ├── starknet.ts
│   ├── stars-arena.ts
│   ├── stbot.ts
│   ├── stealcam.ts
│   ├── steamm/
│   │   └── index.ts
│   ├── steer/
│   │   └── index.ts
│   ├── stellar/
│   │   └── index.ts
│   ├── step-finance/
│   │   └── index.ts
│   ├── stockfi/
│   │   └── index.ts
│   ├── ston/
│   │   └── index.ts
│   ├── stormtrade/
│   │   └── index.ts
│   ├── stout/
│   │   └── index.ts
│   ├── strata-markets/
│   │   └── index.ts
│   ├── stratex/
│   │   └── index.ts
│   ├── streamflow/
│   │   └── index.ts
│   ├── stride.ts
│   ├── strike-finance/
│   │   └── index.ts
│   ├── substanceX/
│   │   └── index.ts
│   ├── sudofinance/
│   │   └── index.ts
│   ├── sudoswap-v1.ts
│   ├── sudoswap-v2.ts
│   ├── sui.ts
│   ├── suilend/
│   │   └── index.ts
│   ├── suite/
│   │   └── index.ts
│   ├── summer.fi/
│   │   └── index.ts
│   ├── sundaeswap/
│   │   └── index.ts
│   ├── sunpump.ts
│   ├── sunswap-v1.ts
│   ├── sunswap-v2.ts
│   ├── sunswap-v3.ts
│   ├── superchain.ts
│   ├── superfund/
│   │   └── index.ts
│   ├── superstate/
│   │   └── index.ts
│   ├── superstate-uscc/
│   │   └── index.ts
│   ├── surf-liquid.ts
│   ├── surge-trade.ts
│   ├── sushiswap-agg.ts
│   ├── swap-coffee/
│   │   └── index.ts
│   ├── swell-restaking/
│   │   └── index.ts
│   ├── swell.ts
│   ├── swing/
│   │   └── index.ts
│   ├── symbiotic/
│   │   └── index.ts
│   ├── symmio/
│   │   └── index.ts
│   ├── synapse/
│   │   └── index.ts
│   ├── synfutures-v3/
│   │   └── index.ts
│   ├── synthetix-v3.ts
│   ├── synthetix.ts
│   ├── tangible-rwa.ts
│   ├── tarot.ts
│   ├── taulabs.ts
│   ├── tbtc.ts
│   ├── tectonic/
│   │   └── index.ts
│   ├── telegram-wallet-perps/
│   │   └── index.ts
│   ├── tempo/
│   │   └── index.ts
│   ├── termmax.ts
│   ├── tether/
│   │   └── index.ts
│   ├── tether-gold/
│   │   └── index.ts
│   ├── tezos.ts
│   ├── thegraph.ts
│   ├── thena-integral.ts
│   ├── thena-v1.ts
│   ├── thena-v3.ts
│   ├── theo/
│   │   └── index.ts
│   ├── theo-straddle-vaults/
│   │   └── index.ts
│   ├── thorchain-dex/
│   │   └── index.ts
│   ├── thorchain.ts
│   ├── thorswap/
│   │   └── index.ts
│   ├── thorwallet/
│   │   └── index.ts
│   ├── tickr.ts
│   ├── tigris/
│   │   └── index.ts
│   ├── time-fun.ts
│   ├── tlx-finance/
│   │   └── index.ts
│   ├── tna.ts
│   ├── token-works/
│   │   └── index.ts
│   ├── ton.ts
│   ├── ton4you/
│   │   └── index.ts
│   ├── tonco/
│   │   └── index.ts
│   ├── tonstakers-lsd/
│   │   └── index.ts
│   ├── topcut/
│   │   └── index.ts
│   ├── torch/
│   │   └── index.ts
│   ├── tornado/
│   │   └── index.ts
│   ├── toros/
│   │   └── index.ts
│   ├── touch.fan.ts
│   ├── trade-wiz.ts
│   ├── trading-terminal/
│   │   └── index.ts
│   ├── trado/
│   │   └── index.ts
│   ├── tree-news/
│   │   └── index.ts
│   ├── treehouse-protocol/
│   │   └── index.ts
│   ├── trends-curve.ts
│   ├── trends.ts
│   ├── tria-card.ts
│   ├── tribe-run.ts
│   ├── triggerx/
│   │   └── index.ts
│   ├── tristero-margin.ts
│   ├── tron.ts
│   ├── tronsave/
│   │   └── index.ts
│   ├── trust-wallet.ts
│   ├── turbos/
│   │   └── index.ts
│   ├── typus-dov.ts
│   ├── typus-perp.ts
│   ├── typus-safu.ts
│   ├── unibot.ts
│   ├── unichain.ts
│   ├── unicornx.ts
│   ├── unicrypt.ts
│   ├── uniderp/
│   │   └── index.ts
│   ├── unidex.ts
│   ├── uniswap-lab.ts
│   ├── universalx.ts
│   ├── unlock-protocol.ts
│   ├── up-vs-down-game.ts
│   ├── updown/
│   │   └── index.ts
│   ├── upheaval-spot/
│   │   └── index.ts
│   ├── upshift/
│   │   └── index.ts
│   ├── usdai/
│   │   ├── index.ts
│   │   ├── legacyUtils.ts
│   │   └── metrics.ts
│   ├── usdd/
│   │   └── index.ts
│   ├── usdo.ts
│   ├── usdx.ts
│   ├── usual.ts
│   ├── vader-ai.ts
│   ├── valas-finance.ts
│   ├── valorem/
│   │   ├── constants.ts
│   │   ├── helpers.ts
│   │   ├── index.ts
│   │   └── interfaces.ts
│   ├── variational/
│   │   └── index.ts
│   ├── varlamore/
│   │   └── index.ts
│   ├── vaulta-ram/
│   │   └── index.ts
│   ├── vaulta-rex/
│   │   └── index.ts
│   ├── vaultcraft.ts
│   ├── vaultka.ts
│   ├── vbill/
│   │   └── index.ts
│   ├── veax.ts
│   ├── vectorfun.ts
│   ├── veda.ts
│   ├── velo/
│   │   └── index.ts
│   ├── velodrome/
│   │   └── index.ts
│   ├── velodrome-v2/
│   │   └── index.ts
│   ├── veno-finance.ts
│   ├── venus-finance.ts
│   ├── venus-flux/
│   │   ├── index.ts
│   │   └── revenue.ts
│   ├── verse.ts
│   ├── vesper/
│   │   └── index.ts
│   ├── vest-markets/
│   │   └── index.ts
│   ├── vesta-finance.ts
│   ├── vexy/
│   │   └── index.ts
│   ├── vfat/
│   │   └── index.ts
│   ├── vibes-meme.ts
│   ├── vicuna-finance/
│   │   └── index.ts
│   ├── vinufinance/
│   │   └── index.ts
│   ├── virtual-protocol.ts
│   ├── virtue/
│   │   └── index.ts
│   ├── volboost.ts
│   ├── volo-vault/
│   │   └── index.ts
│   ├── volta-markets/
│   │   └── index.ts
│   ├── voodoo-trade.ts
│   ├── votre/
│   │   └── index.ts
│   ├── walrus.ts
│   ├── waterneuron.ts
│   ├── waves/
│   │   └── index.ts
│   ├── wavex/
│   │   └── index.ts
│   ├── wbtc/
│   │   └── index.ts
│   ├── wedefin.ts
│   ├── welephant/
│   │   └── index.ts
│   ├── wen-markets.ts
│   ├── wigoswap.ts
│   ├── wildcat.ts
│   ├── wingriders/
│   │   └── index.ts
│   ├── wisdomtree/
│   │   └── index.ts
│   ├── wise-lending-v2/
│   │   └── index.ts
│   ├── witty/
│   │   └── index.ts
│   ├── woofi.ts
│   ├── worldle/
│   │   └── index.ts
│   ├── worm-wtf/
│   │   └── index.ts
│   ├── wormhole/
│   │   └── index.ts
│   ├── wrapped-hlp/
│   │   └── index.ts
│   ├── x2y2.ts
│   ├── xaue/
│   │   └── index.ts
│   ├── xdc.ts
│   ├── xdock-meme.ts
│   ├── xeleb/
│   │   └── index.ts
│   ├── xena-finance.ts
│   ├── xlayer.ts
│   ├── xmarket.ts
│   ├── xrpl/
│   │   └── index.ts
│   ├── xtrade-protocol.ts
│   ├── y2k-v1.ts
│   ├── y2k-v2.ts
│   ├── yakafinance/
│   │   └── index.ts
│   ├── yala/
│   │   └── index.ts
│   ├── yamfore.ts
│   ├── yearn-ether.ts
│   ├── yearn-finance.ts
│   ├── yeet-bgt-auction.ts
│   ├── yfx-v3.ts
│   ├── yfx-v4.ts
│   ├── yield-basis/
│   │   └── index.ts
│   ├── yield-yak-staked-avax.ts
│   ├── yieldfi/
│   │   └── index.ts
│   ├── yieldnest.ts
│   ├── yo-protocol/
│   │   └── index.ts
│   ├── yologames/
│   │   └── index.ts
│   ├── yusan.ts
│   ├── yuzu-finance.ts
│   ├── zapfi/
│   │   └── index.ts
│   ├── zapzy/
│   │   └── index.ts
│   ├── zarban/
│   │   └── index.ts
│   ├── zcash/
│   │   └── index.ts
│   ├── zeebu/
│   │   └── index.ts
│   ├── zenland/
│   │   └── index.ts
│   ├── zeno.ts
│   ├── zerion-wallet.ts
│   ├── zircuit-staking/
│   │   └── index.ts
│   ├── zivoe/
│   │   └── index.ts
│   ├── zns/
│   │   └── index.ts
│   ├── zo/
│   │   └── index.ts
│   ├── zonic.ts
│   ├── zoodotfun.ts
│   ├── zora-sofi.ts
│   ├── zora.ts
│   ├── zunami/
│   │   └── index.ts
│   ├── zyberswap-v2.ts
│   ├── zyberswap-v3.ts
│   └── zyfai.ts
├── helpers/
│   ├── GUIDELINES.md
│   ├── aave/
│   │   ├── abi.ts
│   │   ├── helper.ts
│   │   └── index.ts
│   ├── aggregators/
│   │   ├── bungee.ts
│   │   ├── dzap.ts
│   │   ├── haiku.ts
│   │   └── lifi.ts
│   ├── allium.ts
│   ├── alliumDex.ts
│   ├── aptos.ts
│   ├── attestations-stablecoins.ts
│   ├── balancer.ts
│   ├── bitqueryFees.ts
│   ├── blockscoutFees.ts
│   ├── cache.ts
│   ├── cardano.ts
│   ├── chains.ts
│   ├── coinbase-commerce.ts
│   ├── compoundV2.ts
│   ├── coreAssets.json
│   ├── crypto-card.ts
│   ├── curators/
│   │   ├── configs.ts
│   │   └── index.ts
│   ├── curve/
│   │   ├── helpers.ts
│   │   └── index.ts
│   ├── dune.ts
│   ├── duneSolanaDex.ts
│   ├── env.ts
│   ├── erc4626.ts
│   ├── ethereum-builder.ts
│   ├── ethereum-l2.ts
│   ├── etherscanFees.ts
│   ├── extended-exchange.ts
│   ├── fraxlend.ts
│   ├── friend-tech.ts
│   ├── getBlock.ts
│   ├── getChainFees.ts
│   ├── getTxReceipts.ts
│   ├── getUniSubgraph/
│   │   ├── index.ts
│   │   └── utils.ts
│   ├── getUniSubgraphVolume.ts
│   ├── gmx.ts
│   ├── hyperliquid.ts
│   ├── indexer.ts
│   ├── joe.ts
│   ├── liquity.ts
│   ├── lists.ts
│   ├── metrics.ts
│   ├── neony.ts
│   ├── orderly.ts
│   ├── polymarket.ts
│   ├── pool.ts
│   ├── prices.ts
│   ├── queries/
│   │   ├── bags.sql
│   │   ├── bitget-wallet-card.sql
│   │   ├── bob-blockchain.sql
│   │   ├── conveyor.sql
│   │   ├── cow-protocol.sql
│   │   ├── dbc-config.sql
│   │   ├── dbc.sql
│   │   ├── definitive.sql
│   │   ├── drift-protocol.sql
│   │   ├── eulerswap.sql
│   │   ├── exa-card.sql
│   │   ├── flashbots.sql
│   │   ├── futarchy.sql
│   │   ├── jito.sql
│   │   ├── jupiter-lend.sql
│   │   ├── jupiter-perpetual-oi.sql
│   │   ├── jupiter-perpetual.sql
│   │   ├── kyros.sql
│   │   ├── sol-lst.sql
│   │   ├── stader.sql
│   │   └── virtual-protocol.sql
│   ├── readableStartTimestamp.js
│   ├── ripple.ts
│   ├── saddle.ts
│   ├── solana.ts
│   ├── solidly.ts
│   ├── subscanFees.ts
│   ├── sui.ts
│   ├── symmio.ts
│   ├── time-fun.ts
│   ├── token.ts
│   ├── tonLst.ts
│   ├── tristeroMargin.ts
│   ├── uniswap.ts
│   ├── useTokenLabels.js
│   └── utils/
│       ├── findClosest.ts
│       └── index.ts
├── incentives/
│   ├── GUIDELINES.md
│   └── bitcoin/
│       └── index.ts
├── normalized-volume/
│   └── .gitkeep
├── open-interest/
│   ├── 01-xyz.ts
│   ├── GUIDELINES.md
│   ├── aevo-options-oi.ts
│   ├── aevo-perps-oi.ts
│   ├── aftermath-fi-perp.ts
│   ├── antarctic-oi.ts
│   ├── apollox.ts
│   ├── astro-perp-oi.ts
│   ├── boros-oi.ts
│   ├── bounce-tech-oi.ts
│   ├── bullet.ts
│   ├── capybara-perp.ts
│   ├── challenge4trading-perp.ts
│   ├── dango-oi.ts
│   ├── defx.ts
│   ├── denaria.ts
│   ├── derive-options.ts
│   ├── drift-trade.ts
│   ├── edgeX.ts
│   ├── ethereal-oi.ts
│   ├── evedex.ts
│   ├── flashtrade-oi.ts
│   ├── gameclub.ts
│   ├── gmtrade-oi.ts
│   ├── gmx-v2-gmx-v2-trade.ts
│   ├── hibachi.ts
│   ├── holdstation-defutures-oi.ts
│   ├── hotstuff-oi.ts
│   ├── hyperliquid-perp-oi.ts
│   ├── injective-derivatives.ts
│   ├── jupiter-perpetual-oi.ts
│   ├── leverup-oi.ts
│   ├── lighter-v2.ts
│   ├── lyra-v2.ts
│   ├── monday-trade-perp-oi.ts
│   ├── myx-finance.ts
│   ├── nado.ts
│   ├── neony.ts
│   ├── opinion-oi.ts
│   ├── orderly-perps-oi.ts
│   ├── pacifica-oi.ts
│   ├── paradex.ts
│   ├── perpl.ts
│   ├── perptools-perp-oi.ts
│   ├── phoenix-trade-oi.ts
│   ├── pika-v4.ts
│   ├── polymarket-oi.ts
│   ├── polymarket-us-oi.ts
│   ├── reya-dex-oi.ts
│   ├── rho-trading.ts
│   ├── risex-perps-oi.ts
│   ├── rocket-oi.ts
│   ├── satori-oi.ts
│   ├── sodex-perps-oi.ts
│   ├── standx.ts
│   ├── sunperp-oi.ts
│   ├── synfutures-v3.ts
│   ├── synthetix-v3.ts
│   ├── synthetix-v4.ts
│   ├── synthetix.ts
│   ├── tristero-margin.ts
│   ├── txflow-perps-oi.ts
│   └── vest-markets.ts
├── options/
│   ├── GUIDELINES.md
│   ├── aevo/
│   │   └── index.ts
│   ├── arrow-markets/
│   │   └── index.ts
│   ├── dopex/
│   │   ├── clamm.ts
│   │   └── index.ts
│   ├── hegic/
│   │   ├── index.ts
│   │   └── interfaces.ts
│   ├── hypersurface/
│   │   └── index.ts
│   ├── ithaca/
│   │   └── index.ts
│   ├── ivx/
│   │   └── index.ts
│   ├── jaspervault/
│   │   └── index.ts
│   ├── kyan.ts
│   ├── lyra-v2/
│   │   └── index.ts
│   ├── moby/
│   │   └── index.ts
│   ├── optfun/
│   │   └── index.ts
│   ├── optionBlitz/
│   │   └── index.ts
│   ├── opyn/
│   │   └── index.ts
│   ├── pancakeswap-options/
│   │   └── index.ts
│   ├── paradex/
│   │   └── index.ts
│   ├── premia-v2.ts
│   ├── premia-v3.ts
│   ├── rysk-finance/
│   │   └── index.ts
│   ├── rysk-v12/
│   │   └── index.ts
│   ├── sofa-org/
│   │   └── index.ts
│   ├── tigris/
│   │   └── index.ts
│   ├── ton-hedge.ts
│   ├── toros/
│   │   └── index.ts
│   ├── typus/
│   │   ├── getChainData.ts
│   │   └── index.ts
│   └── valorem/
│       └── index.ts
├── package.json
├── pnpm-workspace.yaml
├── pull_request_template.md
├── skills/
│   └── adapter-author/
│       ├── SKILL.md
│       └── references/
│           ├── intake.md
│           ├── patterns.md
│           └── validation.md
├── tsconfig.cli.json
├── tsconfig.json
├── users/
│   ├── chains.ts
│   ├── compound-v2/
│   │   └── index.ts
│   ├── list.ts
│   ├── routers/
│   │   ├── index.ts
│   │   └── routerAddresses.ts
│   └── utils/
│       ├── convertChain.ts
│       ├── countUsers.ts
│       └── types.ts
└── utils/
    ├── date.ts
    ├── deleteRedundantFiles.ts
    ├── fetchURL.ts
    ├── prices.ts
    └── utils.ts
Download .txt
Showing preview only (433K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4674 symbols across 1712 files)

FILE: .github/workflows/commentResult.js
  function main (line 4) | function main() {

FILE: .github/workflows/getFileList.js
  constant ALLOWED_ROOTS (line 1) | const ALLOWED_ROOTS = ['volumes', 'dexs', 'options', 'derivatives', 'inc...
  constant MODIFIED (line 2) | const MODIFIED = parse(process.env.MODIFIED)
  constant ADDED (line 3) | const ADDED = parse(process.env.ADDED)
  function parse (line 17) | function parse(data) {

FILE: active-users/kyan.ts
  constant API_URL (line 5) | const API_URL = "https://production.kyan.sh/api/v1/defillama/overview";
  constant ONE_DAY (line 6) | const ONE_DAY = 24 * 60 * 60;

FILE: adapters/types.ts
  type Chain (line 3) | type Chain = string
  type ChainBlocks (line 7) | type ChainBlocks = Awaited<ReturnType<typeof getChainBlocks>>
  type ChainEndpoints (line 9) | type ChainEndpoints = {
  type FetchResultBase (line 13) | type FetchResultBase = {
  type FetchResultV2 (line 18) | type FetchResultV2 = {
  type FetchResultGeneric (line 22) | type FetchResultGeneric = FetchResultBase & {
  type FetchOptions (line 26) | type FetchOptions = {
  type FetchGetLogsOptions (line 61) | type FetchGetLogsOptions = {
  type Fetch (line 80) | type Fetch = (
  type FetchV2 (line 86) | type FetchV2 = (
  type IStartTimestamp (line 90) | type IStartTimestamp = () => Promise<number>
  type BaseAdapterChainConfig (line 92) | type BaseAdapterChainConfig = {
  type BaseAdapter (line 103) | type BaseAdapter = {
  type ProtocolType (line 107) | enum ProtocolType {
  type Dependencies (line 113) | enum Dependencies {
  type AdapterBase (line 119) | type AdapterBase = {
  type SimpleAdapter (line 140) | type SimpleAdapter = AdapterBase & {
  type Adapter (line 144) | type Adapter = SimpleAdapter;
  type FetchResponseValue (line 145) | type FetchResponseValue = string | number | Balances;
  type FetchResultVolume (line 152) | type FetchResultVolume = FetchResultBase & {
  type FetchResultFees (line 163) | type FetchResultFees = FetchResultBase & {
  type FetchResultIncentives (line 178) | type FetchResultIncentives = FetchResultBase & {
  type FetchResultAggregators (line 183) | type FetchResultAggregators = FetchResultBase & {
  type FetchResultActiveUsers (line 187) | type FetchResultActiveUsers = FetchResultBase & {
  type FetchResultNewUsers (line 193) | type FetchResultNewUsers = FetchResultBase & {
  type FetchResultOptions (line 198) | type FetchResultOptions = FetchResultBase & {
  type AdapterType (line 207) | enum AdapterType {
  type FetchResult (line 225) | type FetchResult = FetchResultVolume & FetchResultFees & FetchResultAggr...
  type IJSON (line 243) | interface IJSON<T> {
  constant ADAPTER_TYPES (line 247) | const ADAPTER_TYPES = Object.values(AdapterType).filter((adapterType: an...

FILE: adapters/utils/importAdapter.ts
  type ImportAdapterResult (line 4) | interface ImportAdapterResult {
  function importAdapter (line 18) | async function importAdapter(

FILE: adapters/utils/runAdapter.ts
  constant ONE_DAY_IN_SECONDS (line 13) | const ONE_DAY_IN_SECONDS = 60 * 60 * 24
  function getUnixTimeNow (line 15) | function getUnixTimeNow() {
  function genUID (line 19) | function genUID(length: number = 10): string {
  function roundValue (line 28) | function roundValue(value: any): number {
  function setModuleDefaults (line 38) | async function setModuleDefaults(module: SimpleAdapter) {
  function isHourlyAdapter (line 86) | function isHourlyAdapter(module: SimpleAdapter) {
  function isPlainDateArg (line 91) | function isPlainDateArg(rawTimeArg?: string) {
  type AdapterRunOptions (line 95) | type AdapterRunOptions = {
  function runAdapter (line 115) | async function runAdapter(options: AdapterRunOptions) {
  function getStartOfDayId (line 126) | function getStartOfDayId(timestamp: number): string {
  function _runAdapter (line 134) | async function _runAdapter({
  function createBalanceFrom (line 507) | function createBalanceFrom(options: { chain: string, timestamp: number |...
  function subtractBalance (line 521) | function subtractBalance(options: { balance: Balances, amount: FetchResp...
  function validateAdapterResult (line 533) | function validateAdapterResult(result: any, module: any) {
  function addMissingMetrics (line 544) | function addMissingMetrics(chain: string, result: any) {

FILE: aggregator-derivatives/flat-money/helper.ts
  constant CONFIG (line 4) | const CONFIG = {
  function sleep (line 86) | function sleep(ms) {

FILE: aggregator-derivatives/kwenta/index.ts
  constant PROVIDER_CONFIG (line 5) | const PROVIDER_CONFIG = {

FILE: aggregator-derivatives/mux-protocol-agge.ts
  type IVolumeall (line 7) | interface IVolumeall {

FILE: aggregator-derivatives/vooi/index.ts
  function fetchStatistics (line 6) | async function fetchStatistics(startOfDay: number) {

FILE: aggregator-options/grix/index.ts
  type GrixMetricsData (line 5) | type GrixMetricsData = {

FILE: aggregators/1delta/index.ts
  constant FUEL_SUBGRAPH_URL (line 5) | const FUEL_SUBGRAPH_URL = 'https://endpoint.sentio.xyz/1delta/fuel-subgr...
  constant FUEL_SUBGRAPH_API_KEY (line 6) | const FUEL_SUBGRAPH_API_KEY = 'mHWELZ01Oo3BRfGb0WrhFvryge78baQVT'

FILE: aggregators/3route/index.ts
  type DappStat (line 7) | interface DappStat {
  type TezosVolumeResponse (line 11) | interface TezosVolumeResponse {
  type EtherlinkVolumeResponse (line 15) | interface EtherlinkVolumeResponse {

FILE: aggregators/8dx-aggregator/index.ts
  constant EVENT_SWAP_EXECUTED (line 5) | const EVENT_SWAP_EXECUTED =
  constant CONTRACTS (line 8) | const CONTRACTS: Record<string, string> = {
  constant START_DATE (line 12) | const START_DATE: Record<string, string> = {

FILE: aggregators/aftermath-aggregator/index.ts
  constant URL (line 5) | const URL = "https://aftermath.finance/api/router/volume-24hrs";

FILE: aggregators/aggre/index.ts
  type IContract (line 7) | type IContract = {

FILE: aggregators/akka/index.ts
  constant URL (line 5) | const URL = 'https://routerv2.akka.finance';
  type IAPIResponse (line 7) | interface IAPIResponse {

FILE: aggregators/allox/index.ts
  constant FEE_RECIPIENT (line 5) | const FEE_RECIPIENT = "0x6A80f57ac54123cB71e6c79B3935A381b87B4308";

FILE: aggregators/arbitrage-inc/index.ts
  constant FEE_RECEIVER (line 5) | const FEE_RECEIVER = '0xafF5340ECFaf7ce049261cff193f5FED6BDF04E7';
  constant FEE_RATE (line 6) | const FEE_RATE = 0.001;
  constant DEV_FEE_DESC (line 24) | const DEV_FEE_DESC = "Developer fees (0.1% per swap) are collected from ...

FILE: aggregators/atmos-aggregator.ts
  constant API_ENDPOINT (line 5) | const API_ENDPOINT = "https://api.atmos.ag/stats/defillama/stats";

FILE: aggregators/aura-agg/index.ts
  constant AURA_AGGREGATOR_CONTRACT (line 7) | const AURA_AGGREGATOR_CONTRACT = "0xEc46A87ba4d423BaF59aeD8e16AE3E918005...
  constant FLAT_FEE_RATE (line 9) | const FLAT_FEE_RATE = 0.0005 // 0.05%

FILE: aggregators/avnu/index.ts
  constant URL (line 5) | const URL = 'https://starknet.api.avnu.fi';
  type IAPIResponse (line 8) | interface IAPIResponse {

FILE: aggregators/barter/index.ts
  constant EXECUTORS (line 5) | const EXECUTORS = [
  constant TRANSFER_TOPIC (line 11) | const TRANSFER_TOPIC = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a1...

FILE: aggregators/bebop/index.ts
  function fetchDune (line 126) | async function fetchDune(_:any, _1:any, options: FetchOptions){

FILE: aggregators/bebop/jamAbi.ts
  constant ABI (line 1) | const ABI = [

FILE: aggregators/bim/config.ts
  function fetchBimChains (line 54) | function fetchBimChains(): Array<string> {

FILE: aggregators/bitgetwallet/index.ts
  type IVolumeall (line 7) | interface IVolumeall {
  constant CHAINS (line 50) | const CHAINS: Array<CHAIN> = [

FILE: aggregators/bluefin7k-aggregator/index.ts
  constant URL (line 6) | const URL = 'https://statistic.7k.ag';

FILE: aggregators/bountive/index.ts
  constant URL (line 5) | const URL = 'https://api.bountive.fi/metrics/volume/';
  type IAPIResponse (line 7) | interface IAPIResponse {

FILE: aggregators/carina-aggregator/index.ts
  constant URL (line 5) | const URL = "https://core.carina.finance/v1/orders/volume";

FILE: aggregators/chimpx/index.ts
  constant VOLUME_REGISTRY (line 6) | const VOLUME_REGISTRY = "0x8327839597934e1490f90D06F2b0A549dFC7edeB";
  constant EVENT_ABI (line 9) | const EVENT_ABI = "event VolumeRegistered(address indexed user, uint8 in...

FILE: aggregators/deluthium/index.ts
  constant SWAP_FEE_LABEL (line 25) | const SWAP_FEE_LABEL = "Swap Fees";

FILE: aggregators/dexhunter/index.ts
  constant URL (line 5) | const URL = 'https://api-us.dexhunterv3.app/stats/fear_and_greed';
  type IAPIResponse (line 7) | interface IAPIResponse {

FILE: aggregators/dexr/index.ts
  constant MASTER_ADDRESS (line 45) | const MASTER_ADDRESS: Record<string, string> = {
  constant SWAP_EXECUTED_EVENT (line 52) | const SWAP_EXECUTED_EVENT =
  function fetch (line 55) | async function fetch(options: FetchOptions) {

FILE: aggregators/dirol/index.ts
  constant CORE_AGGREGATORS (line 4) | const CORE_AGGREGATORS = [
  constant SWAP_EVENT (line 9) | const SWAP_EVENT = "event Swap(address indexed sender, address indexed t...

FILE: aggregators/durianfun/index.ts
  constant ROUTERS_V1 (line 38) | const ROUTERS_V1: string[] = [
  constant ROUTERS_V2 (line 45) | const ROUTERS_V2: string[] = [
  constant SWAPPED_ABI_V1 (line 49) | const SWAPPED_ABI_V1 =
  constant SWAPPED_ABI_V2 (line 52) | const SWAPPED_ABI_V2 =

FILE: aggregators/eisen/index.ts
  function fetch (line 34) | async function fetch(options: FetchOptions) {

FILE: aggregators/erc-burner/index.ts
  constant BURNER_CONTRACTS (line 5) | const BURNER_CONTRACTS = {

FILE: aggregators/fibrous-finance/index.ts
  constant URL (line 14) | const URL = "https://graph.fibrous.finance/volume/daily";
  type IAPIResponse (line 16) | interface IAPIResponse {

FILE: aggregators/fluxa/index.ts
  constant BASE_URL (line 5) | const BASE_URL = "https://api-fluxa.capylabs.io/api/v1";

FILE: aggregators/gluex-protocol/index.ts
  constant ROUTERS_OLD (line 19) | const ROUTERS_OLD: Partial<Record<string, string>> = {
  constant ROUTERS_NEW (line 40) | const ROUTERS_NEW: Partial<Record<string, string>> = {
  function fetch (line 61) | async function fetch(options: FetchOptions) {

FILE: aggregators/groypfi/index.ts
  constant FEE_RECIPIENT (line 27) | const FEE_RECIPIENT = "0:eee00893fff24abaa4f46678ded11a1721030f723e2e206...

FILE: aggregators/haiku/index.ts
  type IResponse (line 11) | interface IResponse {

FILE: aggregators/hallswap/index.ts
  constant API_URL (line 6) | const API_URL = "https://api.seer.coinhall.org/api/hallswap/metrics";
  constant CHAINS (line 9) | const CHAINS: Record<string, string> = {
  constant DAY_IN_MILLIS (line 26) | const DAY_IN_MILLIS = 86_400_000;

FILE: aggregators/houdiniswap/index.ts
  constant URL (line 51) | const URL = "https://api.houdiniswap.com/api/aggregator-vol?";

FILE: aggregators/hyperbloom/index.ts
  constant HYPERBLOOM_ADDRESSES (line 6) | const HYPERBLOOM_ADDRESSES = [

FILE: aggregators/hyperflow/index.ts
  constant STATS_API (line 5) | const STATS_API = "https://api.hyperflow.fun/v1/aggregator/stats/daily"

FILE: aggregators/inoswap/index.ts
  constant ROUTERS (line 5) | const ROUTERS = [
  constant FEE_RECIPIENT (line 11) | const FEE_RECIPIENT = '0x53a7fcdbb5d9a8d6a9f2b83d6e70cd1efdaf76c6'
  constant PROTOCOL_FEE_BPS (line 12) | const PROTOCOL_FEE_BPS = 10 // 0.10%

FILE: aggregators/jeton/index.ts
  type Responce (line 18) | type Responce = {

FILE: aggregators/jumper-exchange/index.ts
  type IContract (line 7) | type IContract = {

FILE: aggregators/kame-aggregator/index.ts
  constant URL (line 5) | const URL = "https://api.kame.ag/api/statistics";

FILE: aggregators/kanalabs/index.ts
  constant URL (line 6) | const URL = "https://stats.kanalabs.io/transaction/volume";
  constant TRADE_URL (line 7) | const TRADE_URL = "https://stats.kanalabs.io/trade/volume";
  constant GRAPHQL_URL (line 8) | const GRAPHQL_URL = "https://api-mainnet.kanalabs.io/graphql";
  type KanaChainID (line 10) | enum KanaChainID {

FILE: aggregators/kyoag/index.ts
  constant LEGACY_ROUTERS (line 6) | const LEGACY_ROUTERS: Record<string, string[]> = {
  constant LOGICS (line 19) | const LOGICS: Record<string, string[]> = {
  constant EVENT_ROUTERS (line 45) | const EVENT_ROUTERS: Record<string, string[]> = {
  constant TRANSFER_TOPIC (line 51) | const TRANSFER_TOPIC =
  constant DEPOSIT_TOPIC (line 53) | const DEPOSIT_TOPIC =
  constant NATIVE_TOKEN (line 55) | const NATIVE_TOKEN = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
  constant SWAP_EXECUTED_EVENT (line 56) | const SWAP_EXECUTED_EVENT =
  constant WRAPPED_NATIVE_TOKENS (line 59) | const WRAPPED_NATIVE_TOKENS: Record<string, string[]> = {

FILE: aggregators/lamboo/index.ts
  constant INTEGRATOR_ADDRESS (line 5) | const INTEGRATOR_ADDRESS = "0xc6cc6a4f294c4cab2b749721afc56e9f7e4ad695d4...
  constant ROUTER_FEE_EVENT (line 6) | const ROUTER_FEE_EVENT = "0x1cb4fd7144568b4eae2b0d32aaf51fe87fc729eb4982...
  constant PANORA_INTEGRATOR_FEE_EVENT (line 7) | const PANORA_INTEGRATOR_FEE_EVENT = "0x1c3206329806286fd2223647c9f9b130e...
  constant BOOSTER_FEE_EVENT (line 8) | const BOOSTER_FEE_EVENT = "0xd5864a543c1d6dbf4f6f3b0a2c660746366cb65fc34...
  constant LAMBOO_FEE_EVENT (line 9) | const LAMBOO_FEE_EVENT = "0xd5864a543c1d6dbf4f6f3b0a2c660746366cb65fc340...
  constant WITHDRAW_EVENT (line 10) | const WITHDRAW_EVENT = "0x1::fungible_asset::Withdraw";
  constant DEPOSIT_EVENT (line 11) | const DEPOSIT_EVENT = "0x1::fungible_asset::Deposit";
  constant FEE_EVENT_TYPE_LIST (line 13) | const FEE_EVENT_TYPE_LIST = [
  constant FEE_EVENT_TYPES (line 19) | const FEE_EVENT_TYPES = FEE_EVENT_TYPE_LIST.map((eventType) => `'${event...
  constant APT_CANONICAL (line 21) | const APT_CANONICAL = "0x1::aptos_coin::AptosCoin";
  constant APT_SHORT (line 22) | const APT_SHORT = "0xa";
  constant APT_TOKEN (line 23) | const APT_TOKEN = "0x000000000000000000000000000000000000000000000000000...
  constant USD1_SHORT (line 24) | const USD1_SHORT = "0x5fabd1b12e39967a3c24e91b7b8f67719a6dacee74f3c8b9fb...
  constant USD1_TOKEN (line 25) | const USD1_TOKEN = "0x05fabd1b12e39967a3c24e91b7b8f67719a6dacee74f3c8b9f...
  constant APT_TOKEN_VARIANTS (line 26) | const APT_TOKEN_VARIANTS = [APT_CANONICAL, APT_SHORT, APT_TOKEN];
  constant USD1_TOKEN_VARIANTS (line 27) | const USD1_TOKEN_VARIANTS = [USD1_SHORT, USD1_TOKEN];
  constant TRACKED_TOKEN_VARIANTS (line 28) | const TRACKED_TOKEN_VARIANTS = [...APT_TOKEN_VARIANTS, ...USD1_TOKEN_VAR...
  constant TRACKED_TOKEN_TYPES (line 29) | const TRACKED_TOKEN_TYPES = TRACKED_TOKEN_VARIANTS.map((token) => `'${to...
  constant APT_TOKEN_TYPES (line 30) | const APT_TOKEN_TYPES = APT_TOKEN_VARIANTS.map((token) => `'${token}'`)....
  constant USD1_TOKEN_TYPES (line 31) | const USD1_TOKEN_TYPES = USD1_TOKEN_VARIANTS.map((token) => `'${token}'`...

FILE: aggregators/lilswap/index.ts
  constant BASE_URL (line 17) | const BASE_URL = 'https://api.lilswap.xyz/v1/metrics/daily';
  constant LABELS (line 19) | const LABELS = {
  function fetch (line 25) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: aggregators/liquidmesh/index.ts
  type IData (line 8) | interface IData {

FILE: aggregators/liquidswap/index.ts
  constant LIQUIDSWAP_ADDRESS (line 13) | const LIQUIDSWAP_ADDRESS = "0x744489ee3d540777a66f2cf297479745e0852f7a";
  constant METRICS (line 17) | const METRICS = {

FILE: aggregators/llamaswap/index.ts
  constant URL (line 5) | const URL = "https://api.llama.fi/";

FILE: aggregators/lunar-finance/index.ts
  constant LUNA_API_BASE (line 5) | const LUNA_API_BASE = "https://api.lunarfinance.io";
  constant SWAP_ANALYTICS_ENDPOINT (line 6) | const SWAP_ANALYTICS_ENDPOINT = `${LUNA_API_BASE}/api/analytics/dexs`;
  type LunaAnalyticsResponse (line 8) | interface LunaAnalyticsResponse {

FILE: aggregators/madhouse/index.ts
  constant CONTRACTS (line 4) | const CONTRACTS: Record<string, string> = {

FILE: aggregators/metamask.ts
  type IConfig (line 8) | type IConfig = {
  function retry (line 69) | async function retry(chain: string, fromBlock: number, toBlock: number, ...

FILE: aggregators/mimboku-aggregator/index.ts
  constant URL_V3 (line 5) | const URL_V3 = 'https://graph-api.tentou.tech/subgraphs/name/mimboku'
  constant URL_V2 (line 6) | const URL_V2 = 'https://graph-api.tentou.tech/subgraphs/name/mimboku-v2'
  function getTotalVolumeV3 (line 8) | async function getTotalVolumeV3(block: number): Promise<number> {
  function getTotalVolumeV2 (line 34) | async function getTotalVolumeV2(block: number): Promise<number> {

FILE: aggregators/minswap/index.ts
  constant URL (line 5) | const URL = 'https://api-mainnet-prod.minswap.org/defillama/v2/aggregato...

FILE: aggregators/monbridgedex/index.ts
  constant CONTRACTS (line 4) | const CONTRACTS: Record<string, string> = {

FILE: aggregators/mosaic/index.ts
  constant STATS_BASE_URL (line 5) | const STATS_BASE_URL = "https://stats.mosaic.ag"

FILE: aggregators/nanoport/index.ts
  constant EXECUTOR (line 5) | const EXECUTOR = "0xF0E9286CfCB75c94ac19E99bCD93D814da55e304";

FILE: aggregators/navi/index.ts
  constant API_URL (line 6) | const API_URL =
  constant HEADERS (line 9) | const HEADERS = {

FILE: aggregators/neptune-swap/index.ts
  constant AGGREGATOR_CONTRACT (line 4) | const AGGREGATOR_CONTRACT = "0xb3f2B217B024700b6B85bB0941d4958EF17214C1";

FILE: aggregators/nordstern-finance/index.ts
  constant URL (line 5) | const URL = 'https://volume-tracking.icecreamswap.dev';
  type IAPIResponse (line 7) | interface IAPIResponse {

FILE: aggregators/odos/index.ts
  constant ODOS_ROUTER_V3 (line 10) | const ODOS_ROUTER_V3 = "0x0D05a7D3448512B78fa8A9e46c4872C88C4a0D05"
  type TPool (line 15) | type TPool = {
  constant ODOS_V2_ROUTERS (line 18) | const ODOS_V2_ROUTERS: TPool = {
  function fetch (line 37) | async function fetch({ getLogs, createBalances, chain }: FetchOptions) {

FILE: aggregators/okx/index.ts
  type TChain (line 11) | type TChain = {
  constant CHAINS (line 14) | const CHAINS: TChain = {
  type ISwapRouter (line 58) | interface ISwapRouter {
  function queryOkxApi (line 140) | async function queryOkxApi(timestamp:string, path:string){

FILE: aggregators/oogabooga/index.ts
  constant OBEXECUTOR_FEE_MODULE (line 9) | const OBEXECUTOR_FEE_MODULE: Record<string, string[]> = {
  constant OBROUTER (line 19) | const OBROUTER: Record<string, string> = {

FILE: aggregators/ooia/index.ts
  type IAPIResponse (line 8) | interface IAPIResponse {

FILE: aggregators/openocean/index.ts
  constant URL (line 5) | const URL = "https://open-api.openocean.finance/v3";
  constant CHAINS (line 6) | const CHAINS: Record<string, string> = {

FILE: aggregators/opt-agg/index.ts
  constant URL (line 5) | const URL = "https://api.opt.finance/stat/vol";

FILE: aggregators/orbiter-finance/index.ts
  constant DEFAULT_AGGREGATOR (line 4) | const DEFAULT_AGGREGATOR = '0xe530d28960d48708ccf3e62aa7b42a80bc427aef'
  constant SWAP_ROUTER (line 5) | const SWAP_ROUTER: Record<string, string> = {

FILE: aggregators/paraswap/index.ts
  type IResponse (line 8) | interface IResponse {

FILE: aggregators/rainbow-swap/index.ts
  type IAPIResponse (line 7) | interface IAPIResponse {

FILE: aggregators/rango/index.ts
  type ChainInfo (line 5) | type ChainInfo = { code: string; start: string };
  constant DEFAULT_START (line 6) | const DEFAULT_START = '2021-08-01'

FILE: aggregators/rheon/index.ts
  constant AGGREGATOR (line 4) | const AGGREGATOR = "0x311D2A611C59F11516256e14683fB6d9Bc3A97a4";

FILE: aggregators/rubic/index.ts
  type ApiResponse (line 70) | interface ApiResponse {
  function sleep (line 77) | async function sleep(time: number) {

FILE: aggregators/stackit/index.ts
  constant CONTRACT (line 4) | const CONTRACT = "0xE31eE34E37752d90dF52E251069352ba67284807";
  constant DEPLOY_BLOCK (line 5) | const DEPLOY_BLOCK = 455464291;

FILE: aggregators/superboring/index.ts
  constant ZERO_ADDRESS (line 5) | const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'
  constant TOREX_GRAPHQL_ENDPOINTS (line 8) | const TOREX_GRAPHQL_ENDPOINTS: Record<string, string> = {
  constant TOREXES_QUERY (line 15) | const TOREXES_QUERY = gql`
  constant LIQUIDITY_MOVED_EVENT (line 28) | const LIQUIDITY_MOVED_EVENT = 'event LiquidityMoved(address indexed liqu...
  constant SUPERTOKEN_ABI (line 30) | const SUPERTOKEN_ABI = {
  type TorexData (line 37) | type TorexData = {
  function fetchTorexes (line 42) | async function fetchTorexes(chain: string): Promise<TorexData[]> {
  function fetchLiquidityMovedAmount (line 60) | async function fetchLiquidityMovedAmount(
  function getSuperTokenMetadata (line 84) | async function getSuperTokenMetadata(superTokenAddress: string, options:...
  function fetchDailyVolume (line 134) | async function fetchDailyVolume(options: FetchOptions) {

FILE: aggregators/superswap/index.ts
  type ChainConfig (line 7) | type ChainConfig = {
  constant FEES (line 14) | const FEES = {
  constant SWAP_FEES (line 18) | const SWAP_FEES = 'Swap Fees'
  constant SWAP_FEES_TO_PROTOCOL (line 19) | const SWAP_FEES_TO_PROTOCOL = 'Swap Fees To Protocol'

FILE: aggregators/sushiswap-agg.ts
  constant ROUTE_RP45_EVENT (line 8) | const ROUTE_RP45_EVENT = 'event Route(address indexed from, address to, ...
  constant ROUTE_RP6_EVENT (line 9) | const ROUTE_RP6_EVENT = 'event Route(address indexed from, address to, a...
  constant ROUTE_RP7_EVENT (line 10) | const ROUTE_RP7_EVENT = 'event Route(address indexed from, address to, a...
  constant ROUTE_RP9_EVENT (line 11) | const ROUTE_RP9_EVENT = 'event Route(address indexed from, address to, a...
  constant CHAIN_ID (line 13) | const CHAIN_ID: any = {
  constant RP4_ADDRESS (line 65) | const RP4_ADDRESS: any = {
  constant RP5_ADDRESS (line 101) | const RP5_ADDRESS: any = {
  constant RP6_ADDRESS (line 144) | const RP6_ADDRESS: any = {
  constant RP7_ADDRESS (line 189) | const RP7_ADDRESS: any = {
  constant RP8_ADDRESS (line 235) | const RP8_ADDRESS: any = {
  constant RP9_ADDRESS (line 247) | const RP9_ADDRESS: any = {
  constant RP9_1_ADDRESS (line 295) | const RP9_1_ADDRESS: any = {
  constant RP9_2_ADDRESS (line 340) | const RP9_2_ADDRESS: any = {
  constant RP10_ADDRESS (line 386) | const RP10_ADDRESS: any = {
  constant RP11_ADDRESS (line 434) | const RP11_ADDRESS: any = {
  constant WNATIVE_ADDRESS (line 481) | const WNATIVE_ADDRESS: any = {
  type Log (line 538) | interface Log {

FILE: aggregators/swapgpt/index.ts
  type IVolumeall (line 5) | interface IVolumeall {

FILE: aggregators/symphony/index.ts
  constant API_ENDPOINT (line 5) | const API_ENDPOINT = "http://stats.symphony.ag/api/v1/stats";
  type IVolumeResponse (line 7) | interface IVolumeResponse {

FILE: aggregators/tephra/index.ts
  constant FLAT_FEE_RATE (line 6) | const FLAT_FEE_RATE = 0.0005;
  constant TEPHRA_AGGREGATOR_CONTRACTS (line 7) | const TEPHRA_AGGREGATOR_CONTRACTS = [

FILE: aggregators/tideswap/index.ts
  constant TREASURY (line 5) | const TREASURY = "0x647128722e6aC0FDF10C1c5bEB9d37C66cE6f907";
  constant FEE_BPS (line 6) | const FEE_BPS = 5;
  constant INK_TOKENS (line 8) | const INK_TOKENS = [

FILE: aggregators/titan-exchange/index.ts
  constant API_URL (line 5) | const API_URL = "https://titan.exchange/public/hourly-volume";

FILE: aggregators/udex-agg/index.ts
  type IContract (line 8) | type IContract = {

FILE: aggregators/unizen/index.ts
  type TChain (line 5) | type TChain = {
  constant CHAINS (line 8) | const CHAINS: TChain = {
  type VolumeReport (line 27) | interface VolumeReport {
  function isVolumeReport (line 38) | function isVolumeReport(data: any): data is VolumeReport {

FILE: aggregators/vetrade/index.ts
  constant URL (line 5) | const URL = 'https://vetrade.vet/api/index/analytics/volumes/';
  type IAPIResponse (line 7) | interface IAPIResponse {

FILE: aggregators/virtus/index.ts
  constant BACKEND_BASE (line 7) | const BACKEND_BASE = getEnv('VIRTUS_BACKEND_BASE');
  constant CHAINS (line 10) | const CHAINS: Record<string, { id: string }> = {
  constant CHAINS_UNION (line 75) | const CHAINS_UNION: Record<string, { start: string; id: string }> = Obje...

FILE: aggregators/zrx/index.ts
  type TChain (line 6) | type TChain = {
  constant CHAINS (line 9) | const CHAINS: TChain = {

FILE: bridge-aggregators/babydoge-bridge/index.ts
  constant API_BASE (line 5) | const API_BASE = "https://axelar-bridge-connector-backend-main.babybulld...
  constant API_TON (line 6) | const API_TON = "https://defillama-bsc-ton-bridge-backend-main.babybulld...
  constant API_SOL (line 7) | const API_SOL = "https://wormhole-bridge-defilama-connector-backend-main...

FILE: bridge-aggregators/bitgetwallet/index.ts
  constant CHAINS (line 5) | const CHAINS: Array<CHAIN> = [
  type IVolumeBridge (line 42) | interface IVolumeBridge {
  function queryDataByApi (line 47) | async function queryDataByApi(path: string) {

FILE: bridge-aggregators/brotocol/index.ts
  type ApiResponse (line 5) | interface ApiResponse {

FILE: bridge-aggregators/garden/index.ts
  type SwapDetails (line 87) | type SwapDetails = {
  type GardenTransaction (line 94) | type GardenTransaction = {
  type GardenApiResponse (line 100) | type GardenApiResponse = {
  type ChainVolumes (line 111) | type ChainVolumes = {
  type VolumeCounters (line 117) | type VolumeCounters = {
  function addToVolume (line 122) | function addToVolume(volumes: ChainVolumes, chain: string, tokenAddress:...
  function fetchTransactionsInDateRange (line 141) | async function fetchTransactionsInDateRange(startTimestamp: number, endT...

FILE: bridge-aggregators/lunar-finance-bridge/index.ts
  constant LUNA_API_BASE (line 5) | const LUNA_API_BASE = "https://api.lunarfinance.io";
  constant BRIDGE_ANALYTICS_ENDPOINT (line 6) | const BRIDGE_ANALYTICS_ENDPOINT = `${LUNA_API_BASE}/api/analytics/bridge`;
  type LunaAnalyticsResponse (line 8) | interface LunaAnalyticsResponse {

FILE: bridge-aggregators/mynth/index.ts
  type Transfer (line 6) | type Transfer = {
  type NovaApiResponse (line 18) | type NovaApiResponse = {
  type PrefetchResults (line 55) | type PrefetchResults = Awaited<ReturnType<typeof prefetch>>;

FILE: bridge-aggregators/okx/index.ts
  type TChain (line 10) | type TChain = {
  constant CHAINS (line 13) | const CHAINS: TChain = {
  function queryOkxApi (line 53) | async function queryOkxApi(timestamp:string, path:string){

FILE: bridge-aggregators/orbiter-finance/index.ts
  constant DEFAULT_AGGREGATOR (line 4) | const DEFAULT_AGGREGATOR = '0xe530d28960d48708ccf3e62aa7b42a80bc427aef'
  constant SWAP_ROUTER (line 5) | const SWAP_ROUTER: Record<string, string> = {

FILE: bridge-aggregators/rubic/index.ts
  type ApiResponse (line 95) | interface ApiResponse {

FILE: bridge-aggregators/sharpe-bridge/index.ts
  type IContract (line 5) | type IContract = {

FILE: bridge-aggregators/socket/index.ts
  function getToken (line 13) | function getToken(chain: string, vaultAddress: string): string | null {

FILE: bridge-aggregators/stableflow/index.ts
  type ApiResponse (line 5) | interface ApiResponse {

FILE: bridge-aggregators/virtus/index.ts
  constant BACKEND_BASE (line 6) | const BACKEND_BASE = getEnv('VIRTUS_BACKEND_BASE');
  constant UNIFORM_START (line 7) | const UNIFORM_START = '2025-09-03';
  constant CHAINS (line 9) | const CHAINS: Record<string, { id: string }> = {

FILE: bridge-aggregators/xy-finance/index.ts
  type Contract (line 5) | type Contract = {

FILE: cli/buildModules.ts
  function run (line 13) | async function run() {
  function mockFunctions (line 154) | function mockFunctions(obj: any) {
  function removeDotTs (line 165) | function removeDotTs(s: string) {
  function getDirectoriesAsync (line 173) | async function getDirectoriesAsync(source: string): Promise<string[]> {

FILE: cli/compareModules.js
  constant SKIP_FIELDS (line 4) | const SKIP_FIELDS = new Set(["moduleFilePath", "codePath", "_randomUID"]);
  function deepCompare (line 90) | function deepCompare(a, b, path) {
  function fmt (line 238) | function fmt(v) {
  function cleanup (line 244) | function cleanup(obj) {

FILE: cli/interactive.js
  constant NEW_DIR (line 7) | const NEW_DIR = './' + (args[0] ?? '')
  function run (line 33) | async function run() {
  function runAdapter (line 48) | async function runAdapter(adapterPath, debugMode) {

FILE: cli/migrateDeadProjects.ts
  type DeadAdapterInfo (line 28) | interface DeadAdapterInfo {
  function sortObjectByKey (line 37) | function sortObjectByKey(obj: Record<string, any>) {
  function mockFunctions (line 44) | function mockFunctions(obj: any): any {
  function removeDotTs (line 53) | function removeDotTs(s: string) {
  function getDirectoriesAsync (line 60) | async function getDirectoriesAsync(source: string): Promise<string[]> {
  function deleteAdapter (line 65) | async function deleteAdapter(info: DeadAdapterInfo): Promise<boolean> {
  function scanAdapter (line 108) | async function scanAdapter(adapterType: string, path: string): Promise<D...
  function run (line 147) | async function run() {

FILE: cli/moduleStats.js
  function newStat (line 3) | function newStat() {
  function isFactory (line 7) | function isFactory(codePath) {
  function printTable (line 36) | function printTable(title, stats) {

FILE: cli/testAdapter.ts
  constant DEBUG_MODE (line 11) | const DEBUG_MODE = Boolean(process.env.DEBUG_MODE)
  function formatHourLabel (line 13) | function formatHourLabel(timestamp: number) {
  function checkIfFileExistsInMasterBranch (line 24) | function checkIfFileExistsInMasterBranch(filePath: any) {
  function getTimestamp30MinutesAgo (line 44) | function getTimestamp30MinutesAgo() {
  function toTimestamp (line 49) | function toTimestamp(timeArg: string) {
  function mergeAggregated (line 115) | function mergeAggregated(target: any, source: any) {
  function runHourlyMultiSlot (line 193) | async function runHourlyMultiSlot(dayStart: number, lastHour: number) {

FILE: cli/utils.ts
  constant ERROR_STRING (line 6) | const ERROR_STRING = "------ ERROR ------";
  function checkArguments (line 8) | function checkArguments(argv: string[]) {
  function getLatestBlockRetry (line 17) | async function getLatestBlockRetry(chain: string) {
  function printVolumes (line 27) | function printVolumes(volumes: any[], _?: SimpleAdapter) {
  function printVolumes2 (line 86) | function printVolumes2(volumes: any[]) {
  function getLabel (line 149) | function getLabel(key: string) {
  function formatTimestampAsDate (line 153) | function formatTimestampAsDate(timestamp: string) {
  function upperCaseFirst (line 158) | function upperCaseFirst(t: string) {
  function camelCaseToSpaces (line 162) | function camelCaseToSpaces(s: string) {
  function timestampLast (line 174) | function timestampLast(item: any): any {
  function printBreakdownFeesByLabel (line 193) | function printBreakdownFeesByLabel(breakdownByLabel: any) {

FILE: dexs/10kswap/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/1dex/index.ts
  function fetch (line 4) | async function fetch() {

FILE: dexs/4swap/index.ts
  constant URL (line 5) | const URL = "https://safe-swap-api.pando.im/api/pairs"
  type IAPIResponse (line 7) | interface IAPIResponse {

FILE: dexs/FeeFree/index.ts
  constant SWAP_EVENT_ABI (line 5) | const SWAP_EVENT_ABI = "event Swap(address indexed sender, address index...
  constant CONFIG (line 7) | const CONFIG = {

FILE: dexs/MantisSwap/index.ts
  type PoolData (line 5) | type PoolData = {

FILE: dexs/Scopuly/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/SecuredFinance/index.ts
  constant RECORDS (line 6) | const RECORDS = {

FILE: dexs/SmarDex/config.ts
  constant CONFIG (line 5) | const CONFIG = {
  constant CHAIN_CONFIG (line 20) | const CHAIN_CONFIG = {
  function getGraphHeaders (line 37) | function getGraphHeaders() {

FILE: dexs/SmarDex/usdn-volume.ts
  class USDNVolumeService (line 7) | class USDNVolumeService {
    method constructor (line 10) | constructor(options: FetchOptions) {
    method getEventConfigs (line 14) | private getEventConfigs() {
    method getUsdnVolume (line 70) | public async getUsdnVolume(): Promise<number> {
    method calculateEventVolumeUsd (line 83) | private async calculateEventVolumeUsd(
    method decodeLog (line 126) | private decodeLog(log: any, eventAbi: any): any {
    method fetchEventLogs (line 135) | private async fetchEventLogs(eventAbi: any, target: string) {
    method validateNumber (line 142) | private validateNumber(value: any): number {

FILE: dexs/aborean-cl/index.ts
  constant CONFIG (line 9) | const CONFIG = {

FILE: dexs/aborean/index.ts
  constant CONFIG (line 9) | const CONFIG = {

FILE: dexs/acala-swap/index.ts
  type IGraphResponse (line 22) | interface IGraphResponse {

FILE: dexs/adrena/index.ts
  function fetch (line 17) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/aerodrome-slipstream/index.ts
  constant CONFIG (line 9) | const CONFIG = {

FILE: dexs/aerodrome/index.ts
  constant CONFIG (line 9) | const CONFIG = {

FILE: dexs/aerodrome/utils.ts
  constant PRE_LAUNCH_TOKEN_PRICING (line 3) | const PRE_LAUNCH_TOKEN_PRICING = {

FILE: dexs/aevo/index.ts
  type IAevoVolumeResponse (line 6) | interface IAevoVolumeResponse {
  function fetchAevoVolumeData (line 28) | async function fetchAevoVolumeData(
  function getAevoVolumeData (line 43) | async function getAevoVolumeData(

FILE: dexs/aftermath-fi-amm/index.ts
  constant URL (line 5) | const URL = "https://aftermath.finance/api/pools/volume-24hrs";

FILE: dexs/aftermath-fi-perp/index.ts
  constant CCXT_MARKETS_URL (line 6) | const CCXT_MARKETS_URL = "https://aftermath.finance/api/ccxt/markets";
  constant CCXT_OHLCV_URL (line 7) | const CCXT_OHLCV_URL = "https://aftermath.finance/api/ccxt/OHLCV";

FILE: dexs/airswap/index.ts
  type TAddress (line 6) | type TAddress = {

FILE: dexs/alex/index.ts
  type IVolumeall (line 9) | interface IVolumeall {

FILE: dexs/allbridge-classic/index.ts
  type ChainData (line 5) | interface ChainData {
  function formatTimestampAsIsoDate (line 33) | function formatTimestampAsIsoDate(timestamp: number) {

FILE: dexs/alpha-arcade/index.ts
  function hasAnyTargetAppArg (line 62) | function hasAnyTargetAppArg(txn: any, targetArgs: string[]): boolean {
  function getInnerTxnAmountForAppCall (line 73) | function getInnerTxnAmountForAppCall(txn: any, targetArgBase64: string):...

FILE: dexs/alphaq/index.ts
  constant FEE_RATE (line 6) | const FEE_RATE = 0.00001;

FILE: dexs/alphasec-spot.ts
  constant API_URL (line 6) | const API_URL = "https://api.alphasec.trade/api/v1/defillama/stats";

FILE: dexs/alphix.ts
  constant SWAP_TOPIC (line 5) | const SWAP_TOPIC =
  type ChainConfig (line 8) | type ChainConfig = {
  function decodeInt128 (line 46) | function decodeInt128(hex: string): bigint {
  function fetch (line 51) | async function fetch(options: FetchOptions) {

FILE: dexs/althea-dex.ts
  constant DEX_ADDRESS (line 5) | const DEX_ADDRESS = "0xd263DC98dEc57828e26F69bA8687281BA5D052E0";
  constant QUERY_HELPER_ADDRESS (line 6) | const QUERY_HELPER_ADDRESS = "0xf7b59E4f71E467C0e409609A4a0688b073C56142";

FILE: dexs/amigo.ts
  constant ROUTER (line 5) | const ROUTER = "0x4B48F3D1Ddc9e5793D4817517255e6beF6d72A7C";
  constant DEPLOY_BLOCK (line 6) | const DEPLOY_BLOCK = 41117113;

FILE: dexs/amped-derivatives.ts
  constant GRAPH_BEARER_TOKEN (line 16) | const GRAPH_BEARER_TOKEN = "e8cbd58884ab58d21be68ac2c1e15a24";
  type IGraphResponse (line 36) | interface IGraphResponse {

FILE: dexs/amped-swap.ts
  constant GRAPH_BEARER_TOKEN (line 16) | const GRAPH_BEARER_TOKEN = "e8cbd58884ab58d21be68ac2c1e15a24";
  type IGraphResponse (line 35) | interface IGraphResponse {

FILE: dexs/angstrom/helper/asset.ts
  class Asset (line 6) | class Asset {
    method constructor (line 12) | constructor(addr: string, save: string, take: string, settle: string) {
  function readAsset (line 20) | function readAsset(decoder: BinaryDecoder): Asset {
  function padAssets (line 28) | function padAssets(decoder: BinaryDecoder): Map<i32, Asset> {

FILE: dexs/angstrom/helper/binaryDecoder.ts
  class BinaryDecoder (line 8) | class BinaryDecoder {
    method constructor (line 12) | constructor(data: Uint8Array) {
    method readU8 (line 17) | readU8(): u8 {
    method readU16 (line 22) | readU16(): u16 {
    method readU24 (line 28) | readU24(): u32 {
    method readU32 (line 35) | readU32(): u32 {
    method readU40 (line 43) | readU40(): string {
    method readU64 (line 50) | readU64(): string {
    method readU128 (line 57) | readU128(): string {
    method readU256 (line 61) | readU256(): string {
    method readAddress (line 65) | readAddress(): string {
    method readBytes (line 73) | readBytes(len: i32): string {
    method readBool (line 81) | readBool(): bool {
    method skip (line 85) | skip(count: i32): void {

FILE: dexs/angstrom/helper/index.ts
  class AngstromBundle (line 8) | class AngstromBundle {
    method constructor (line 13) | constructor(
  function decode_bundle (line 24) | function decode_bundle(s: string): AngstromBundle {

FILE: dexs/angstrom/helper/pair.ts
  class Pair (line 6) | class Pair {
    method constructor (line 12) | constructor(index0: i32, index1: i32, store_index: i32, price_1over0: ...
  function readPair (line 20) | function readPair(decoder: BinaryDecoder): Pair {
  function padPairs (line 28) | function padPairs(decoder: BinaryDecoder): Map<i32, Pair> {

FILE: dexs/angstrom/helper/pool.ts
  class RewardsUpdate (line 4) | class RewardsUpdate {
    method constructor (line 15) | constructor(
    method createMultiTick (line 33) | static createMultiTick(start_tick: u32, start_liquidity: string, quant...
    method createCurrentOnly (line 37) | static createCurrentOnly(amount: string, expected_liquidity: string): ...
  class PoolUpdate (line 42) | class PoolUpdate {
    method constructor (line 49) | constructor(
  class PoolUpdateDecoder (line 64) | class PoolUpdateDecoder {
    method constructor (line 68) | constructor(decoder: BinaryDecoder) {
    method readZeroForOne (line 76) | readZeroForOne(): boolean {
    method readPairIndex (line 80) | readPairIndex(): u16 {
    method readSwapInQuantity (line 84) | readSwapInQuantity(): string {
    method readRewardsUpdateStartTick (line 88) | readRewardsUpdateStartTick(): u32 {
    method readRewardsUpdateStartLiquidity (line 92) | readRewardsUpdateStartLiquidity(): string {
    method readRewardsUpdateAmount (line 96) | readRewardsUpdateAmount(): string {
    method readRewardsUpdateExpectedLiquidity (line 100) | readRewardsUpdateExpectedLiquidity(): string {
    method readRewardsUpdateQuantities (line 104) | readRewardsUpdateQuantities(): string[] {
    method readRewardsUpdateChecksum (line 114) | readRewardsUpdateChecksum(): string {
  function readPoolUpdate (line 119) | function readPoolUpdate(decoder: BinaryDecoder): PoolUpdate {
  function padPoolUpdates (line 149) | function padPoolUpdates(decoder: BinaryDecoder): PoolUpdate[] {

FILE: dexs/angstrom/helper/type/type.ts
  type i32 (line 1) | type i32 = number
  type u8 (line 2) | type u8 = number
  type u16 (line 3) | type u16 = number
  type u32 (line 4) | type u32 = number
  type u64 (line 5) | type u64 = number
  type bool (line 6) | type bool = boolean

FILE: dexs/angstrom/helper/utils.ts
  function hexCharToNum (line 4) | function hexCharToNum(c: string): i32 {
  function hexDecode (line 13) | function hexDecode(hex: string): Uint8Array | null {
  function bytesToHex (line 27) | function bytesToHex(bytes: Uint8Array): string {

FILE: dexs/angstrom/index.ts
  type IUniswapConfig (line 7) | interface IUniswapConfig {
  type IPool (line 16) | interface IPool {
  function getPoolKey (line 40) | function getPoolKey(poolId: string): string {
  function fetch (line 44) | async function fetch(options: FetchOptions) {

FILE: dexs/anome/index.ts
  constant MARKET_CONTRACT (line 4) | const MARKET_CONTRACT = "0x210d75B7C94aDf9FC1a2bCd047D76890479234e3";
  constant BSC_USDT (line 5) | const BSC_USDT = "0x55d398326f99059fF775485246999027B3197955";
  constant TRANSFER_TOPIC (line 6) | const TRANSFER_TOPIC = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a1...
  constant TRANSFER_EVENT (line 7) | const TRANSFER_EVENT = "event Transfer(address indexed from, address ind...

FILE: dexs/antarctic/index.ts
  type V1TickerItem (line 6) | type V1TickerItem = {

FILE: dexs/anyhedge/index.ts
  type IAnyhedgeVolumeResponse (line 9) | interface IAnyhedgeVolumeResponse {
  function getAnyhedgeVolumeData (line 34) | async function getAnyhedgeVolumeData(endpoint: string): Promise<IAnyhedg...
  function parseCSV (line 47) | function parseCSV(csvData) {
  function toObject (line 54) | function toObject(keys, values) {

FILE: dexs/ape-church/index.ts
  type TokenMinted (line 4) | type TokenMinted = {
  constant USER_CONTRACT (line 10) | const USER_CONTRACT = "0x6EA76F01Aa615112AB7de1409EFBD80a13BfCC84";
  constant BASE_FEE (line 12) | const BASE_FEE = BigInt(20);
  constant FEE_DENOM (line 13) | const FEE_DENOM = BigInt(1000);
  constant BASE_REV_RATE (line 14) | const BASE_REV_RATE = BigInt(250);
  function fetch (line 16) | async function fetch(options: FetchOptions) {

FILE: dexs/apestore/index.ts
  type VolumeInfo (line 5) | interface VolumeInfo {

FILE: dexs/apex-omni/index.ts
  type IVolumeall (line 15) | interface IVolumeall {
  type IOpenInterest (line 23) | interface IOpenInterest {

FILE: dexs/apollox/index.ts
  type ResponseItem (line 4) | type ResponseItem = {
  type V1TickerItem (line 17) | type V1TickerItem = {
  function sleep (line 35) | async function sleep(time: number) {

FILE: dexs/aptos-caliber-prop-amm/index.ts
  constant SWAP_EVENT_TYPE (line 16) | const SWAP_EVENT_TYPE =
  constant USDC_TOKEN (line 18) | const USDC_TOKEN =

FILE: dexs/aqua-network/index.ts
  constant AQUA_VOLUME_ENDPOINT (line 5) | const AQUA_VOLUME_ENDPOINT = "https://amm-api.aqua.network/api/external/...
  type IVolumeAll (line 7) | interface IVolumeAll {

FILE: dexs/arctic/index.ts
  type IVolumeall (line 9) | interface IVolumeall {
  type TChains (line 14) | type TChains = {

FILE: dexs/arena-launch.ts
  function fetch (line 9) | async function fetch({ createBalances, getLogs }: FetchOptions) {

FILE: dexs/ash-perp/index.ts
  constant API_URL (line 5) | const API_URL = 'https://statistic-api.ashperp.trade/graphql';

FILE: dexs/ashswap/index.ts
  constant API_URL (line 6) | const API_URL = 'https://api-v2.ashswap.io/graphql';
  type IVolume (line 8) | interface IVolume {

FILE: dexs/aster-spot.ts
  type TickerItem (line 4) | type TickerItem = {

FILE: dexs/astro-perp.ts
  constant BASE_URL (line 7) | const BASE_URL = "https://llama.astros.ag/api/third/info";

FILE: dexs/astrolescent/index.ts
  type AstrolescentStats (line 5) | interface AstrolescentStats {

FILE: dexs/atmos-dex/index.ts
  constant API_ENDPOINT (line 5) | const API_ENDPOINT = "https://api.atmos.ag/stats/defillama/stats";

FILE: dexs/atmos-studio.ts
  constant API_ENDPOINT (line 5) | const API_ENDPOINT = "https://api.atmos.ag/stats/defillama/stats";

FILE: dexs/aux-exchange/index.ts
  function fetch (line 19) | async function fetch({ createBalances, fromTimestamp, api, toTimestamp, ...

FILE: dexs/avantis/index.ts
  type IData (line 7) | interface IData {
  constant API_URL (line 19) | const API_URL = "https://api.avantisfi.com/v1";

FILE: dexs/axial/index.ts
  function fetch (line 22) | async function fetch(options: FetchOptions) {

FILE: dexs/b402/index.ts
  constant RAILGUN_PROXY (line 4) | const RAILGUN_PROXY = "0x26111e2379E5fC0A7Cd8728fe52c7b84CA4fbE85";

FILE: dexs/babydoge-algebra.ts
  constant BABYDOGE_GRAPHQL_ENDPOINT (line 5) | const BABYDOGE_GRAPHQL_ENDPOINT =

FILE: dexs/balancer-v2.ts
  constant ESTIMATED_NON_CORE_SHARE (line 5) | const ESTIMATED_NON_CORE_SHARE = 0.7;
  constant ESTIMATED_CORE_SHARE (line 6) | const ESTIMATED_CORE_SHARE = 0.3;
  constant HOLDERS_SHARE_NON_CORE (line 7) | const HOLDERS_SHARE_NON_CORE = 0.825;
  constant HOLDERS_SHARE_CORE (line 8) | const HOLDERS_SHARE_CORE = 0.125;
  constant TOKENOMICS_REVAMP_DATE (line 13) | const TOKENOMICS_REVAMP_DATE = "2026-04-23";
  function fetch (line 15) | async function fetch(options: FetchOptions) {

FILE: dexs/balancer-v3/index.ts
  constant TOKENOMICS_REVAMP_DATE (line 18) | const TOKENOMICS_REVAMP_DATE = "2026-04-23";
  function fetch (line 22) | async function fetch(options: FetchOptions) {

FILE: dexs/bancor-v2_1.ts
  function fetchV2 (line 5) | async function fetchV2(fetchOptions: FetchOptions) {

FILE: dexs/bancor-v3.ts
  constant REVENUE_RATIO (line 6) | const REVENUE_RATIO = 0.2;
  function fetch (line 8) | async function fetch(fetchOptions: FetchOptions) {

FILE: dexs/barterswap/index.ts
  function fetch (line 7) | async function fetch(options: FetchOptions) {

FILE: dexs/baryon/index.ts
  constant POOL_CREATE (line 5) | const POOL_CREATE = 'event PairCreated(address indexed token0, address i...
  constant SWAP_EVENT (line 6) | const SWAP_EVENT = 'event Swap(address indexed sender, uint256 amount0In...

FILE: dexs/basin/helper.ts
  type BasinExchangeConfig (line 4) | interface BasinExchangeConfig {
  type BasinExchangeExportConfig (line 9) | interface BasinExchangeExportConfig {
  function getBasinVolume (line 13) | async function getBasinVolume(options: FetchOptions, configs: BasinExcha...
  function getBasinAdapter (line 37) | function getBasinAdapter(configs: BasinExchangeExportConfig): SimpleAdap...

FILE: dexs/beamex-beamex-perps.ts
  type IGraphResponse (line 20) | interface IGraphResponse {

FILE: dexs/beamex-beamex-swap.ts
  type IGraphResponse (line 19) | interface IGraphResponse {

FILE: dexs/bean-exchange/index.ts
  type TABI (line 7) | type TABI = {
  type Pool (line 45) | type Pool = {
  function getAmountsFromBytesString (line 51) | function getAmountsFromBytesString(bytes: string): { amountX: number; am...

FILE: dexs/beethoven-x/index.ts
  type IPool (line 14) | interface IPool {
  type IPoolSnapshot (line 19) | interface IPoolSnapshot {

FILE: dexs/beets-v3/index.ts
  function fetch (line 37) | async function fetch({ createBalances, chain }: FetchOptions) {

FILE: dexs/beezie.ts
  type FetchItemResult (line 9) | type FetchItemResult = {
  constant CLAW_MANAGERS (line 74) | const CLAW_MANAGERS = new Set(

FILE: dexs/believe/index.ts
  type IData (line 7) | interface IData {

FILE: dexs/betterswap/index.ts
  type BetterSwapResponse (line 5) | interface BetterSwapResponse {

FILE: dexs/bisq/index.ts
  type IVolumeall (line 7) | interface IVolumeall {

FILE: dexs/bitflow-fi.ts
  type Ticker (line 10) | interface Ticker {
  type Token (line 15) | interface Token {

FILE: dexs/bitflux/index.ts
  type IPool (line 4) | interface IPool {
  function fetch (line 40) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: dexs/bitget-wallet-card.ts
  constant NFT_CONTRACT (line 4) | const NFT_CONTRACT = '0x133CAEecA096cA54889db71956c7f75862Ead7A0'
  constant SPEND_CONTRACT (line 5) | const SPEND_CONTRACT = '0xe2e3B88B9893e18D0867c08f9cA93f8aB5935b14'
  constant SPEND_EVENT (line 6) | const SPEND_EVENT= 'event Authorized (string authorizationToken, uint256...
  constant TRANSFER_EVENT (line 7) | const TRANSFER_EVENT= 'event Transfer (address indexed from, address ind...
  constant TRANSFER_TOPIC (line 8) | const TRANSFER_TOPIC = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a1...
  constant ZERO_TOPIC (line 9) | const ZERO_TOPIC = '0x00000000000000000000000000000000000000000000000000...
  constant MINT_START_BLOCK (line 10) | const MINT_START_BLOCK = 298189162
  constant CURRENCY_RATES (line 12) | const CURRENCY_RATES: Record<string, number> = {

FILE: dexs/bitkeep/index.ts
  type IVolumeall (line 10) | interface IVolumeall {

FILE: dexs/blastfutures/index.ts
  type IVolumeall (line 12) | interface IVolumeall {

FILE: dexs/blex-derivatives.ts
  type IGraphResponse (line 19) | interface IGraphResponse {

FILE: dexs/blex-volume.ts
  type IGraphResponse (line 19) | interface IGraphResponse {

FILE: dexs/bluemove.ts
  constant SUI_PACKAGE (line 9) | const SUI_PACKAGE = "0xb24b6789e088b876afabca733bed2299fbc9e2d6369be4d1a...
  type IVolumeall (line 11) | interface IVolumeall {

FILE: dexs/bmx-derivatives.ts
  type IGraphResponse (line 31) | interface IGraphResponse {
  type IGraphResponseOI (line 40) | interface IGraphResponseOI {

FILE: dexs/bmx-freestyle/index.ts
  type IGraphResponseFreestyle (line 68) | interface IGraphResponseFreestyle {
  constant ONE_DAY_IN_SECONDS (line 83) | const ONE_DAY_IN_SECONDS = 60 * 60 * 24;

FILE: dexs/bmx-swap.ts
  type IGraphResponse (line 21) | interface IGraphResponse {

FILE: dexs/bogged-finance/index.ts
  type IVolumeall (line 10) | interface IVolumeall {
  type TChains (line 14) | type TChains = {

FILE: dexs/boop-fun/index.ts
  type IData (line 6) | interface IData {

FILE: dexs/boros/index.ts
  constant BOROS_ABIS (line 5) | const BOROS_ABIS = {
  constant BOROS_FACTORY (line 13) | const BOROS_FACTORY = '0x3080808080Ee6a795c1a6Ff388195Aa5F11ECeE0';
  constant BOROS_FACTORY_CREATION_BLOCK (line 14) | const BOROS_FACTORY_CREATION_BLOCK = 362039621;
  constant TWO_128 (line 16) | const TWO_128 = 1n << 128n;
  constant TWO_127 (line 17) | const TWO_127 = 1n << 127n;
  type BorosMarket (line 19) | interface BorosMarket {
  constant TOKENID_TO_CGID (line 26) | const TOKENID_TO_CGID: Record<number, string> = {
  constant EXCLUDE_OTC_SWAPS (line 35) | const EXCLUDE_OTC_SWAPS: Array<string> = [

FILE: dexs/bounce-tech.ts
  constant GLOBAL_STORAGE (line 19) | const GLOBAL_STORAGE = '0xa07d06383c1863c8A54d427aC890643d76cc03ff';
  constant MINT_ABI (line 21) | const MINT_ABI = 'event Mint(address indexed minter, address indexed to,...
  constant REDEEM_ABI (line 22) | const REDEEM_ABI = 'event Redeem(address indexed sender, address indexed...
  constant EXECUTE_REDEEM_ABI (line 23) | const EXECUTE_REDEEM_ABI = 'event ExecuteRedeem(address indexed user, ui...

FILE: dexs/brine/index.ts
  constant VOLUME_URL (line 5) | const VOLUME_URL = `https://api.tanx.fi/external-aggregator/defillama/vo...

FILE: dexs/bsx/index.ts
  type IBsxStatsResponse (line 6) | interface IBsxStatsResponse {

FILE: dexs/bullaexchange/index.ts
  constant BULLA_API_URL (line 5) | const BULLA_API_URL = "https://api.gamma.xyz/frontend/externalApis/bulla...
  type BullaPool (line 7) | interface BullaPool {
  type BullaResponse (line 14) | interface BullaResponse {

FILE: dexs/bullbit-ai/index.ts
  constant FIXED_PLATFORM_FEE (line 5) | const FIXED_PLATFORM_FEE = 1 // 1%

FILE: dexs/bullet-perp/index.ts
  constant BASE_URL (line 5) | const BASE_URL = "https://tradingapi.bullet.xyz";
  function fetch (line 7) | async function fetch(_: any) {

FILE: dexs/c3-exchange/index.ts
  constant ONE_DAY_IN_MILISECONDS (line 13) | const ONE_DAY_IN_MILISECONDS = 60 * 60 * 24 * 1000;
  constant HALF_DAY_IN_MILISECONDS (line 14) | const HALF_DAY_IN_MILISECONDS = ONE_DAY_IN_MILISECONDS / 2;
  function fetchVolume (line 26) | async function fetchVolume({
  function adapterConstructor (line 52) | function adapterConstructor(

FILE: dexs/camelot-v3/index.ts
  constant REVENUE_RATIO (line 46) | const REVENUE_RATIO = 0.2;
  constant USER_FEES_RATIO (line 47) | const USER_FEES_RATIO = 1;
  constant PROTOCOL_REVENUE_RATIO (line 48) | const PROTOCOL_REVENUE_RATIO = 0.03;
  constant HOLDERS_REVENUE_RATIO (line 49) | const HOLDERS_REVENUE_RATIO = 0.17;

FILE: dexs/canonic/index.ts
  constant USDM (line 4) | const USDM = '0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7'
  constant MAOBS (line 6) | const MAOBS = [
  constant EVENT_ABI (line 13) | const EVENT_ABI = 'event RungFilled(address indexed taker, bool indexed ...
  constant FEE_DENOM (line 15) | const FEE_DENOM = 1_000_000

FILE: dexs/capybara-exchange/index.ts
  constant WOMBAT_POOLS (line 8) | const WOMBAT_POOLS = [
  constant WOMBAT_SWAP_V2 (line 21) | const WOMBAT_SWAP_V2 =

FILE: dexs/capybara-perp/index.ts
  constant ENDPOINTS (line 5) | const ENDPOINTS: { [key: string]: string } = {

FILE: dexs/carbon/index.ts
  function fetch (line 5) | async function fetch(_a: any, _b: any, options: FetchOptions): Promise<F...

FILE: dexs/carbondefi/types.ts
  type CarbonAnalyticsItem (line 1) | interface CarbonAnalyticsItem {
  type CarbonAnalyticsResponse (line 7) | interface CarbonAnalyticsResponse extends Array<CarbonAnalyticsItem> {}

FILE: dexs/carthage-v3.ts
  constant VOLUME_USD (line 13) | const VOLUME_USD = "volumeUSD";

FILE: dexs/catalist-dex/index.ts
  type IPoolDayData (line 11) | interface IPoolDayData {

FILE: dexs/cauldron/index.ts
  constant INDEXER_URL (line 11) | const INDEXER_URL = "https://indexer.cauldron.quest";
  constant FEE_RATE (line 12) | const FEE_RATE = 0.003;
  constant COIN (line 13) | const COIN = 1e8;
  function fetchCauldronVolume (line 33) | async function fetchCauldronVolume(

FILE: dexs/caviarnine-lsu-pool/index.ts
  type CaviarNineLSUPool (line 5) | interface CaviarNineLSUPool {

FILE: dexs/caviarnine-simplepool.ts
  constant URL (line 5) | const URL = "https://api-core.caviarnine.com/v1.0/stats/product/simplepo...

FILE: dexs/cellana-finance/index.ts
  type IVolumeall (line 16) | interface IVolumeall {

FILE: dexs/cetus/index.ts
  function fetch (line 5) | async function fetch({ startTimestamp, endTimestamp, chain }: FetchOptio...

FILE: dexs/chainge-finance/index.ts
  constant URL (line 6) | const URL = "https://api2.chainge.finance/thirdparty/dao/getDashboardInfo"
  type IAPIResponse (line 8) | interface IAPIResponse {

FILE: dexs/challenge4trading-perp.ts
  constant PERP_ADDRESS (line 4) | const PERP_ADDRESS = "0x54A62D550e1754f3bB34ad80501A63815297Fccc";
  constant USDC_ADDRESS (line 5) | const USDC_ADDRESS = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831";
  constant ABIS (line 7) | const ABIS = {
  constant LABELS (line 20) | const LABELS = {

FILE: dexs/chapool.ts
  constant PAYMENT_CONTRACT (line 4) | const PAYMENT_CONTRACT = "0xEe83640f0ed07d36E799531CC6d87FB4CDcCaC13";
  constant MARKETPLACE_CONTRACT (line 5) | const MARKETPLACE_CONTRACT = "0x6374aD0E4adab392dFeE60304a16ADc569f06703";
  constant USDT_ADDRESS (line 6) | const USDT_ADDRESS = "0x9e5AAC1Ba1a2e6aEd6b32689DFcF62A509Ca96f3";
  constant ITEM_SOLD_ABI (line 9) | const ITEM_SOLD_ABI =
  constant AUCTION_SETTLED_ABI (line 11) | const AUCTION_SETTLED_ABI =
  constant PAYMENT_MADE_ABI (line 13) | const PAYMENT_MADE_ABI =

FILE: dexs/citrex-markets/index.ts
  constant URL (line 5) | const URL = "https://api.citrex.markets/v1/ticker/24hr";
  type ResponseItem (line 7) | interface ResponseItem {

FILE: dexs/claimswap/index.ts
  type IRawResponse (line 8) | interface IRawResponse {
  type IVolume (line 13) | interface IVolume {
  constant START_TIME (line 19) | const START_TIME = 1644568448;

FILE: dexs/clipper/index.ts
  type ExchangeConfig (line 7) | interface ExchangeConfig {
  type ClipperConfig (line 17) | type ClipperConfig = {
  type IPool (line 90) | interface IPool {
  type IResponse (line 96) | interface IResponse {

FILE: dexs/clob/index.ts
  constant URL (line 5) | const URL = "https://api.orderly.org/v1/public/futures_market?broker_id=...
  type Response (line 7) | interface Response {

FILE: dexs/clober-v2/index.ts
  type SupportedChains (line 20) | type SupportedChains = keyof typeof bookManagerContracts

FILE: dexs/coinhain/index.ts
  function fetch (line 10) | async function fetch(_a: any,_b:any, options: FetchOptions) {

FILE: dexs/colorpool.ts
  function fetch (line 6) | async function fetch(_:any, _1: any, { dateString }: FetchOptions) {

FILE: dexs/concordex-io/index.ts
  constant POOLS_SERVICE_URL (line 4) | const POOLS_SERVICE_URL = 'https://cdex-liquidity-pool.concordex.io/v1/rpc'

FILE: dexs/copump.ts
  function fetch (line 24) | async function fetch({ chain, createBalances, api, getLogs }: FetchOptio...

FILE: dexs/core-markets/index.ts
  constant ONE_DAY_IN_SECONDS (line 6) | const ONE_DAY_IN_SECONDS = 60 * 60 * 24;
  type IGraphResponse (line 23) | interface IGraphResponse {

FILE: dexs/crema-finance/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/cube/index.ts
  constant PROGRAM_ID (line 7) | const PROGRAM_ID = "8iQtGj9mcUfFUGaiCpPy89swC3s8YTC8FhVZWfgeZhwu";
  constant SWAP_DISCRIMINATOR_HEX (line 11) | const SWAP_DISCRIMINATOR_HEX = "f8c69e91e17587c8";
  constant SWAP_EVENT_DISCRIMINATOR_HEX (line 16) | const SWAP_EVENT_DISCRIMINATOR_HEX = "516ce3becdd00ac4";
  constant SWAP_EVENT_BASE64_PREFIX (line 17) | const SWAP_EVENT_BASE64_PREFIX = "UWzj";

FILE: dexs/curve/api.ts
  constant CURVE_API_BASE (line 4) | const CURVE_API_BASE = "https://prices.curve.finance/v1/chains/fees";
  type CurveChainFees (line 6) | interface CurveChainFees {
  type CurveFeesResponse (line 19) | interface CurveFeesResponse {
  function fetchCurveApiData (line 29) | async function fetchCurveApiData(startTimestamp: number, endTimestamp: n...
  function getChainDataFromApiResponse (line 52) | function getChainDataFromApiResponse(response: CurveFeesResponse, chain:...

FILE: dexs/curve/index.ts
  constant LABELS (line 483) | const LABELS = {
  function fetchFromApi (line 491) | async function fetchFromApi(options: FetchOptions) {
  function fetchFromOnChain (line 522) | async function fetchFromOnChain(options: FetchOptions, config: ICurveDex...
  function getCurveExport (line 550) | function getCurveExport(configs: {[key: string]: ICurveDexConfig}) {

FILE: dexs/cvex/index.ts
  constant API_SERVICE_URL (line 5) | const API_SERVICE_URL = 'https://api.cvex.trade/v1/statistics/volume'

FILE: dexs/cyberperp/cyberperp.ts
  constant VUSD_DECIMALS (line 11) | const VUSD_DECIMALS = 1e6;
  constant DAY_SECONDS (line 12) | const DAY_SECONDS = 86400;

FILE: dexs/d8x/index.ts
  type TManagers (line 9) | type TManagers = {

FILE: dexs/dackieswap/index.ts
  function getRevenueRatio (line 21) | function getRevenueRatio(fee: number): number {

FILE: dexs/dango/index.ts
  constant DANGO_GRAPH_URL (line 6) | const DANGO_GRAPH_URL = `https://api-mainnet.dango.zone/graphql`
  function fetch (line 8) | async function fetch(options: FetchOptions) {

FILE: dexs/danogo/index.ts
  constant DANOGO_GATEWAY_ENDPOINT (line 6) | const DANOGO_GATEWAY_ENDPOINT = 'https://danogo-gateway.tekoapis.com/api...
  constant DANOGO_START_TIMESTAMP (line 7) | const DANOGO_START_TIMESTAMP = 1685404800 // 30/05/2023

FILE: dexs/danogo/types.ts
  type DanogoDimensions (line 1) | type DanogoDimensions = {
  type DanogoVolumes (line 8) | type DanogoVolumes = {

FILE: dexs/dappos-intentEx/index.ts
  constant URL (line 6) | const URL = "https://trade-info.dappos.com/market/archive?timestamp=";
  type Response (line 8) | interface Response {

FILE: dexs/decibel/index.ts
  constant API_URL (line 6) | const API_URL = "https://api.mainnet.aptoslabs.com/decibel/api/v1/daily_...
  type DailyStatsResponse (line 8) | interface DailyStatsResponse {

FILE: dexs/dedust/index.ts
  constant GRAPHQL_ENDPOINT (line 5) | const GRAPHQL_ENDPOINT = 'https://api.dedust.io/v3/graphql';
  constant POOLS_QUERY (line 7) | const POOLS_QUERY = `
  constant ASSETS_QUERY (line 22) | const ASSETS_QUERY = `

FILE: dexs/deeptrade/index.ts
  constant BASE_URL (line 6) | const BASE_URL = 'https://indexer-api.deeptrade.space';
  constant PATH (line 7) | const PATH = '/deeptrade_historical_volume_all_markets';
  constant API_URL (line 8) | const API_URL = `${BASE_URL}${PATH}`;
  type PoolVolume (line 10) | interface PoolVolume {

FILE: dexs/defibox/index.ts
  type IVolume (line 9) | interface IVolume {

FILE: dexs/defichain-dex/index.ts
  type IData (line 8) | interface IData {
  type IVolume (line 11) | interface IVolume {

FILE: dexs/defiplaza/index.ts
  type RadixPlazaResponse (line 7) | type RadixPlazaResponse = {

FILE: dexs/delphi/index.ts
  constant DELPHI_START (line 6) | const DELPHI_START = "2026-04-20";
  constant USDC (line 7) | const USDC = ADDRESSES.gensyn.USDC;
  constant GATEWAY (line 9) | const GATEWAY = "0x4e4e85c52E0F414cc67eE88d0C649Ec81698d700";
  constant PRECISION (line 10) | const PRECISION = 10n ** 18n;

FILE: dexs/delta-trade/index.ts
  function fetch (line 7) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/deltadefi/index.ts
  constant VOLUME_API (line 5) | const VOLUME_API = "https://api-internal-metrics.deltadefi.io/public/vol...

FILE: dexs/demex-demex-perp.ts
  constant START_TIME (line 5) | const START_TIME = 1659312000;
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/demex-demex.ts
  constant START_TIME (line 5) | const START_TIME = 1659312000;
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/denaria.ts
  constant DENARIA_PERP_PAIR_OLD (line 5) | const DENARIA_PERP_PAIR_OLD = ['0xd07822ee341c11a193869034d7e5f583c4a948...
  constant DENARIA_PERP_PAIR_NEW (line 6) | const DENARIA_PERP_PAIR_NEW = '0xb68396dd4230253d27589e2004ac37389836ae17';
  constant DENARIA_PERP_PAIRS (line 8) | const DENARIA_PERP_PAIRS: Array<string> = [
  constant EXECUTED_TRADE_EVENT (line 13) | const EXECUTED_TRADE_EVENT = "event ExecutedTrade(address indexed user, ...
  function fetch (line 15) | async function fetch(options: FetchOptions) {

FILE: dexs/derivio-derivatives.ts
  type IGraphResponse (line 19) | interface IGraphResponse {

FILE: dexs/derivio-swap.ts
  type IGraphResponse (line 18) | interface IGraphResponse {

FILE: dexs/desk/index.ts
  constant URL (line 5) | const URL = "https://api.happytrading.global/v2/global-stats";
  type Response (line 7) | interface Response {

FILE: dexs/dexalot/index.ts
  type IVolumeall (line 7) | interface IVolumeall {

FILE: dexs/dexswap/index.ts
  constant FACTORY_ADDRESS (line 8) | const FACTORY_ADDRESS = '0x3e40739d8478c58f9b973266974c58998d4f9e8b';

FILE: dexs/dexter-tezos/index.ts
  function getData (line 7) | async function getData() {

FILE: dexs/dexter/dimensions.ts
  type OperationResponse (line 12) | interface OperationResponse {
  type IDimensions (line 18) | interface IDimensions {

FILE: dexs/dextrabot.ts
  constant HL_BUILDER_ADDRESS (line 6) | const HL_BUILDER_ADDRESS = "0x49ae63056b3a0be0b166813ee687309ab653c07c";
  constant EXTENDED_BUILDER_NAMES (line 7) | const EXTENDED_BUILDER_NAMES = ['DextraBot'];
  constant EXTENDED_BUILDER_FEE_RATE (line 10) | const EXTENDED_BUILDER_FEE_RATE = 0.0002;

FILE: dexs/dflow-prediction/index.ts
  constant CASH_TOKEN (line 19) | const CASH_TOKEN = 'CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH'
  constant USDC_TOKEN (line 20) | const USDC_TOKEN = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
  constant FEE_ACCOUNT (line 21) | const FEE_ACCOUNT = '8psNvWTrdNTiVRNzAgsou9kETXNJm2SXZyaKuJraVRtf'
  constant CASH_SETTLEMENT_VAULT (line 22) | const CASH_SETTLEMENT_VAULT = 'AgfNbTUmTK75HcpDCsuTDarj2iapJCbNSr2pzcCXRBS'
  constant USDC_SETTLEMENT_VAULT (line 23) | const USDC_SETTLEMENT_VAULT = '6k797rx8d5xUBsfCgp7LDrsvvnnxjKf2MjQkx6kvd...
  constant DFLOW_PREDICTION_PROGRAM (line 24) | const DFLOW_PREDICTION_PROGRAM = 'pReDicTmksnPfkfiz33ndSdbe2dY43KYPg4U2d...
  function fetch (line 26) | async function fetch(_a: any, _b: any, options: FetchOptions): Promise<F...

FILE: dexs/dodo/index.ts
  type IDailyResponse (line 33) | interface IDailyResponse {

FILE: dexs/dpex/index.ts
  type IGraphResponse (line 19) | interface IGraphResponse {

FILE: dexs/dragonswap-sei-v3/index.ts
  constant PROTOCOL_FEE_SHARE (line 6) | const PROTOCOL_FEE_SHARE = 0.25;

FILE: dexs/dragonswap-sei/index.ts
  constant PROTOCOL_FEE_SHARE (line 6) | const PROTOCOL_FEE_SHARE = 0.3;

FILE: dexs/dragonswap-v2.ts
  constant ABIS (line 14) | const ABIS = {

FILE: dexs/dragonswap-v3.ts
  constant ABIS (line 14) | const ABIS = {

FILE: dexs/drift-protocol-derivatives.ts
  type DimentionResult (line 5) | type DimentionResult = {
  function fetch (line 14) | async function fetch(_a: any, _b: any, options: FetchOptions): Promise<D...

FILE: dexs/drift-protocol-swap.ts
  type DimentionResult (line 5) | type DimentionResult = {
  function getSpotDimensions (line 22) | async function getSpotDimensions(options: FetchOptions): Promise<Dimenti...
  function fetch (line 28) | async function fetch(_t: any, _tt: any, options: FetchOptions) {

FILE: dexs/drip-trade.ts
  function fetch (line 5) | async function fetch({ createBalances, getLogs }: FetchOptions) {

FILE: dexs/duality/index.ts
  type IChartItem (line 9) | interface IChartItem {

FILE: dexs/durian-amm/index.ts
  constant FACTORY_V45 (line 78) | const FACTORY_V45  = "0xdf4f3dB298A9aDe853191F58b4b2a322D47EC005";
  constant FACTORY_V466 (line 79) | const FACTORY_V466 = "0x89b6b73BD18dbEA0e2218c25c1963fd5FBaB3c87";
  constant KKUB (line 83) | const KKUB = "0x67eBD850304c70d983B2d1b93ea79c7CD6c3F6b5";
  constant TOKEN_CREATED_ABI (line 85) | const TOKEN_CREATED_ABI =
  constant GRADUATED_ABI (line 88) | const GRADUATED_ABI =
  constant SWAPPED_ABI (line 91) | const SWAPPED_ABI =
  constant ZERO (line 94) | const ZERO = "0x0000000000000000000000000000000000000000";

FILE: dexs/durianfun-launchpad/index.ts
  constant FACTORY_V45 (line 66) | const FACTORY_V45  = "0xdf4f3dB298A9aDe853191F58b4b2a322D47EC005";
  constant FACTORY_V466 (line 67) | const FACTORY_V466 = "0x89b6b73BD18dbEA0e2218c25c1963fd5FBaB3c87";
  constant KKUB (line 71) | const KKUB = "0x67eBD850304c70d983B2d1b93ea79c7CD6c3F6b5";
  constant TOKEN_CREATED_ABI (line 73) | const TOKEN_CREATED_ABI =
  constant TOKENS_BOUGHT_ABI (line 76) | const TOKENS_BOUGHT_ABI =
  constant TOKENS_SOLD_ABI (line 79) | const TOKENS_SOLD_ABI =

FILE: dexs/dusa/index.ts
  type TEndpoint (line 4) | type TEndpoint = {

FILE: dexs/dx25/index.ts
  constant POOLS_SERVICE_URL (line 5) | const POOLS_SERVICE_URL = 'https://liquidity-pool.dx25.com/v1/rpc'

FILE: dexs/dyorswap-launchpad/index.ts
  constant LAUNCHPAD (line 5) | const LAUNCHPAD = "0x5a96508c1092960dA0981CaC7FD00217E9CdabEC";
  constant START_BLOCK (line 6) | const START_BLOCK = 1872202;
  constant PAIR_ABI (line 8) | const PAIR_ABI = "event PairCreated(address indexed token0, address inde...
  constant SWAP_ABI (line 9) | const SWAP_ABI = "event Swap(address indexed sender, uint amount0In, uin...

FILE: dexs/e3/index.ts
  constant FACTORY_ADDRESS (line 5) | const FACTORY_ADDRESS = '0x8597db3ba8de6baadeda8cba4dac653e24a0e57b';
  type TABI (line 7) | type TABI = {

FILE: dexs/eaglefi.ts
  type TEndpoint (line 4) | type TEndpoint = {

FILE: dexs/econia/index.ts
  type IMarkets (line 6) | interface IMarkets {
  constant BASE_URL (line 14) | const BASE_URL = "https://aptos-mainnet-econia.nodeinfra.com";

FILE: dexs/edgeX/index.ts
  type KlineData (line 9) | interface KlineData {
  type ResponseData (line 20) | interface ResponseData {
  type ApiResponse (line 24) | interface ApiResponse {
  function parseContractIds (line 31) | function parseContractIds(response: any): string[] {

FILE: dexs/egas-swap/index.ts
  constant SWAP_PROXY (line 4) | const SWAP_PROXY = "0x37ccd90ed5fa96207b41c4fbcb90b883e30e63dc";
  constant TOKEN_EXCHANGED_EVENT (line 6) | const TOKEN_EXCHANGED_EVENT = `event TokenExchanged(address indexed user...

FILE: dexs/ekubo-evm.ts
  function fetch (line 18) | async function fetch(options: FetchOptions) {

FILE: dexs/ekubo/index.ts
  function toAddress (line 12) | function toAddress(numberString: string): string {

FILE: dexs/elfi/index.ts
  constant ORDER_FILLED_TOPIC (line 11) | const ORDER_FILLED_TOPIC = '0x27cd10c59ec617eb0cc015b5900117fef098349140...
  constant ORDER_INFO_TYPES (line 14) | const ORDER_INFO_TYPES = [

FILE: dexs/elfomofi/index.ts
  constant ELFOMOFI_SWAP_ADDRESS (line 7) | const ELFOMOFI_SWAP_ADDRESS = "0xf0f0F0F0FB0d738452EfD03A28e8be14C76d5f73"

FILE: dexs/elix-fi/index.ts
  type ConfigEntry (line 9) | type ConfigEntry = {
  function getRequest (line 23) | function getRequest(chain: string, fromTimestamp: number, toTimestamp: n...
  type NumString (line 56) | type NumString = `${number}`;
  type Address (line 57) | type Address = `0x${string}`;
  type MetricEntry (line 59) | type MetricEntry = {
  function fetchElixFiMetrics (line 65) | async function fetchElixFiMetrics(
  function fetchFunction (line 76) | async function fetchFunction(_a: any, _b: any, options: FetchOptions): P...

FILE: dexs/equity-spot/index.ts
  type IGraphResponse (line 19) | interface IGraphResponse {

FILE: dexs/ethereal-dex/index.ts
  constant FEE_ACCURED_EVENT (line 4) | const FEE_ACCURED_EVENT = "event FeeAccrued(address indexed account, byt...
  constant ORDER_MATCHED_EVENT (line 6) | const ORDER_MATCHED_EVENT = "event PerpOrderMatched(uint32 indexed produ...
  constant EXCHANGE_GATEWAY (line 8) | const EXCHANGE_GATEWAY = "0xB3cDC82035C495c484C9fF11eD5f3Ff6d342e3cc";
  function fetch (line 10) | async function fetch(options: FetchOptions): Promise<FetchResult> {

FILE: dexs/etherex.ts
  constant REX_TOKEN_CONTRACT (line 5) | const REX_TOKEN_CONTRACT = "0xEfD81eeC32B9A8222D1842ec3d99c7532C31e348";
  constant XREX_TOKEN_CONTRACT (line 6) | const XREX_TOKEN_CONTRACT = "0xc93B315971A4f260875103F5DA84cB1E30f366Cc";
  type IGraphRes (line 14) | interface IGraphRes {
  type IVoteBribe (line 28) | interface IVoteBribe {
  type IToken (line 36) | interface IToken {
  function paginate (line 41) | async function paginate<T>(
  function getBribes (line 63) | async function getBribes(options: FetchOptions) {
  function getTokens (line 96) | async function getTokens(options: FetchOptions, tokens: string[]) {
  function fetchStats (line 135) | async function fetchStats(options: FetchOptions): Promise<IGraphRes> {

FILE: dexs/evedex/index.ts
  constant MARKETS_ENDPOINT (line 7) | const MARKETS_ENDPOINT = "https://exchange-api.evedex.com/api/market/ins...
  constant OHLCV_ENDPOINT (line 8) | const OHLCV_ENDPOINT = "https://market-data-api.evedex.com/api/history";
  function fetch (line 10) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/evently/index.ts
  constant CONTRACT_V2 (line 9) | const CONTRACT_V2 = "0x7c56aa113be4a867936c55013b03387c7b9cd41a";
  constant MARKET_FINALIZED_V2 (line 13) | const MARKET_FINALIZED_V2 =
  constant BET_PLACED_V2 (line 17) | const BET_PLACED_V2 =

FILE: dexs/exinswap/index.ts
  constant URL (line 6) | const URL = "https://app.exinswap.com/api/v1/statistic/total/chart?type=...
  type IAPIResponse (line 8) | interface IAPIResponse {

FILE: dexs/extended/index.ts
  type IVolumeall (line 8) | interface IVolumeall {
  type IResponse (line 13) | interface IResponse {

FILE: dexs/farmcats-market/index.ts
  constant MARKET_CONTRACTS (line 4) | const MARKET_CONTRACTS = [
  constant PATH_USD (line 13) | const PATH_USD = "0x20c0000000000000000000000000000000000000";
  constant FEE_PERCENT (line 14) | const FEE_PERCENT = 0.01;
  constant NFT_SOLD_EVENT (line 16) | const NFT_SOLD_EVENT = "event NFTSold(address indexed nft, uint256 index...
  function fetch (line 18) | async function fetch({ getLogs, createBalances }: FetchOptions) {

FILE: dexs/fastjpeg/index.ts
  constant UNDERGRADUATE_SUPPLY (line 8) | const UNDERGRADUATE_SUPPLY = parseEther('800000000');
  constant GRADUATE_ETH (line 9) | const GRADUATE_ETH = parseEther('10.6');
  function calculatePriceForTokens (line 11) | function calculatePriceForTokens(coinAmount: bigint, currentSupply: bigi...
  function calculateSaleReturn (line 28) | function calculateSaleReturn(coinAmount: bigint, currentSupply: bigint):...

FILE: dexs/fermi-dex/index.ts
  constant VOLUME_ENDPOINT (line 5) | const VOLUME_ENDPOINT = 'https://v1.fermi.trade/api/volume'

FILE: dexs/figure-markets/index.ts
  constant BASE_URL (line 5) | const BASE_URL = "https://www.figuremarkets.com/service-hft-exchange/api...
  type Market (line 7) | interface Market {
  function fetch (line 14) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/flashnet/index.ts
  constant BASE_URL (line 7) | const BASE_URL = "https://wonderingtrader.flashnet.xyz/flashnet/v1/";

FILE: dexs/flexperp/index.ts
  type MarketStat (line 12) | type MarketStat = {

FILE: dexs/flowbot-perps.ts
  constant FLOWBOT_API (line 7) | const FLOWBOT_API = "https://flowbot.pro/api/dashboard/volume";
  constant HL_BUILDER_ADDRESS (line 8) | const HL_BUILDER_ADDRESS = "0xb5d19a1f92fcd5bfdd154d16793bb394f246cb36";
  constant EXTENDED_BUILDER_NAMES (line 9) | const EXTENDED_BUILDER_NAMES = ["FlowBot"];
  constant FLOWBOT_FEE_RATE (line 10) | const FLOWBOT_FEE_RATE = 0.0001;
  constant NADO_FEE_RATE (line 11) | const NADO_FEE_RATE = 0.00002;
  type PlatformData (line 13) | interface PlatformData {
  type FlowbotResponse (line 21) | interface FlowbotResponse {

FILE: dexs/flowx-finance/index.ts
  type IExchangeStats (line 32) | interface IExchangeStats {
  type IExchangeTotalVolume (line 41) | interface IExchangeTotalVolume {

FILE: dexs/flowx-v3/index.ts
  constant SWAP_EVENT (line 6) | const SWAP_EVENT =
  function parsePoolType (line 9) | function parsePoolType(type: string): { coinX: string; coinY: string } {

FILE: dexs/fluid-dex-lite/index.ts
  constant X13 (line 13) | const X13 = 0x1fffn;
  constant X60 (line 14) | const X60 = 0xfffffffffffffffn;
  constant X64 (line 15) | const X64 = 0xffffffffffffffffn;
  constant BITS_DEX_LITE_DEX_VARIABLES_FEE (line 18) | const BITS_DEX_LITE_DEX_VARIABLES_FEE = 0n;
  constant BITS_DEX_LITE_DEX_VARIABLES_TOKEN_0_DECIMALS (line 19) | const BITS_DEX_LITE_DEX_VARIABLES_TOKEN_0_DECIMALS = 126n;
  constant BITS_DEX_LITE_DEX_VARIABLES_TOKEN_1_DECIMALS (line 20) | const BITS_DEX_LITE_DEX_VARIABLES_TOKEN_1_DECIMALS = 131n;
  constant BITS_DEX_LITE_SWAP_DATA_SWAP_0_TO_1 (line 23) | const BITS_DEX_LITE_SWAP_DATA_SWAP_0_TO_1 = 64n;
  constant BITS_DEX_LITE_SWAP_DATA_AMOUNT_IN (line 24) | const BITS_DEX_LITE_SWAP_DATA_AMOUNT_IN = 65n;
  constant BITS_DEX_LITE_SWAP_DATA_AMOUNT_OUT (line 25) | const BITS_DEX_LITE_SWAP_DATA_AMOUNT_OUT = 125n;
  type DexKey (line 28) | interface DexKey {
  type LogSwapEventArgs (line 34) | type LogSwapEventArgs = [bigint, bigint];

FILE: dexs/fluid-dex/index.ts
  type PoolInfo (line 5) | interface PoolInfo {
  type SwapEventArgs (line 12) | interface SwapEventArgs {
  constant FLUID_DEX_METRICS (line 24) | const FLUID_DEX_METRICS = {

FILE: dexs/frax-swap/index.ts
  type TChains (line 9) | type TChains = {
  type IVolumeall (line 28) | interface IVolumeall {

FILE: dexs/friend-tech.ts
  constant ADDRESSES (line 4) | const ADDRESSES = {

FILE: dexs/fulcrom-finance-derivatives.ts
  type IGraphResponse (line 21) | interface IGraphResponse {

FILE: dexs/fulcrom-finance-swap.ts
  type IGraphResponse (line 20) | interface IGraphResponse {

FILE: dexs/fwogfun/index.ts
  constant STATS_URL (line 5) | const STATS_URL = "https://api.fwog.fun/stats";
  type TokenAmount (line 7) | interface TokenAmount {
  type StatsBlock (line 12) | interface StatsBlock {
  type StatsResponse (line 21) | interface StatsResponse {
  constant CATEGORIES (line 34) | const CATEGORIES = ["regular", "fwogtok", "fwogcasts", "x"] as const;
  function addByCategory (line 36) | function addByCategory(

FILE: dexs/fwx/index.ts
  type IDailyData (line 7) | interface IDailyData {
  type IRes (line 13) | interface IRes {
  constant CHAIN_ID (line 17) | const CHAIN_ID = {
  function convertStringNumber (line 107) | function convertStringNumber(number: bigint) {

FILE: dexs/gains-network/index.ts
  type IStats (line 5) | interface IStats {

FILE: dexs/galaswap-v3.ts
  constant GALA_SWAP_API (line 5) | const GALA_SWAP_API = "https://dex-backend-prod1.defi.gala.com/explore/p...
  function fetch (line 7) | async function fetch(_: any, _2: any, _3: FetchOptions) {

FILE: dexs/gambit/index.ts
  type IAddress (line 10) | type IAddress = {
  constant CONTRACT_ADDRESS (line 16) | const CONTRACT_ADDRESS: IAddress = {

FILE: dexs/garuda-defi/index.ts
  type IHistoricalDataResponse (line 19) | interface IHistoricalDataResponse {

FILE: dexs/gate-perps.ts
  function fetchGateData (line 9) | async function fetchGateData(dateString: string): Promise<any> {

FILE: dexs/gatefun/index.ts
  constant CONTRACTS (line 5) | const CONTRACTS: Record<string, string> = {
  constant EVENT_TRADE (line 9) | const EVENT_TRADE =

FILE: dexs/genius-protocol/index.ts
  constant DAILY_VOLUME_URL (line 12) | const DAILY_VOLUME_URL =
  constant CHAIN_ID_MAP (line 16) | const CHAIN_ID_MAP: Record<string, string> = {
  constant CHAIN_NAME_TO_ID (line 30) | const CHAIN_NAME_TO_ID = Object.fromEntries(

FILE: dexs/glyph-exchange/index.ts
  constant VOLUME_FIELD (line 9) | const VOLUME_FIELD = "totalVolumeUSD";

FILE: dexs/gmx-derivatives.ts
  constant HACK_TIMESTAMP (line 11) | const HACK_TIMESTAMP = 1752019200;
  type IGraphResponse (line 31) | interface IGraphResponse {
  type IGraphResponseOI (line 40) | interface IGraphResponseOI {

FILE: dexs/gmx-v2-gmx-v2-swap.ts
  type IGraphResponse (line 24) | interface IGraphResponse {

FILE: dexs/grafun.ts
  function fetch (line 20) | async function fetch(options: FetchOptions) {

FILE: dexs/grizzly-trade-derivatives-v2/index.ts
  type IReferralRecord (line 9) | interface IReferralRecord {
  type IVolumeStat (line 14) | interface IVolumeStat {

FILE: dexs/grvt-perps/index.ts
  function fetchGRVTDex (line 10) | async function fetchGRVTDex(options: FetchOptions) {

FILE: dexs/hanji/index.ts
  function fetch (line 27) | async function fetch({ getLogs, createBalances, chain, fromApi, toApi, a...

FILE: dexs/hashflow/index.ts
  type IAPIResponse (line 16) | interface IAPIResponse {

FILE: dexs/hashlock-markets/ethereum.ts
  constant ABIS (line 7) | const ABIS = {
  constant ETHEREUM_NATIVE (line 14) | const ETHEREUM_NATIVE = ADDRESSES.ethereum.WETH;
  function fetchEthereum (line 16) | async function fetchEthereum(options: FetchOptions): Promise<FetchResult...

FILE: dexs/hashlock-markets/shared.ts
  constant LOOKBACK_SECONDS (line 17) | const LOOKBACK_SECONDS = 48 * 60 * 60;
  constant ETH_HTLC_CONTRACTS (line 21) | const ETH_HTLC_CONTRACTS = {
  constant ABI_HTLCETH_NEW_NO_FEE (line 31) | const ABI_HTLCETH_NEW_NO_FEE =
  constant ABI_HTLCETH_NEW_FEE (line 33) | const ABI_HTLCETH_NEW_FEE =
  constant ABI_HTLCERC20_NEW_FEE (line 35) | const ABI_HTLCERC20_NEW_FEE =
  constant SUI_PACKAGE (line 39) | const SUI_PACKAGE =
  constant SUI_MODULE (line 41) | const SUI_MODULE = "htlc";
  type ChainName (line 43) | type ChainName = "ethereum" | "sui";
  type Leg (line 45) | interface Leg {
  type LegIndex (line 55) | interface LegIndex {
  function normalizeHashlock (line 61) | function normalizeHashlock(input: unknown): string {
  function getEthBlock (line 75) | async function getEthBlock(timestamp: number): Promise<number> {
  function pullEthereumLegs (line 81) | async function pullEthereumLegs(
  function pullSuiLegs (line 118) | async function pullSuiLegs(startTs: number, endTs: number): Promise<Leg[...
  function buildHashlockLegIndex (line 145) | async function buildHashlockLegIndex(options: FetchOptions): Promise<Leg...
  function isSourceLeg (line 181) | function isSourceLeg(index: LegIndex, leg: Leg): boolean {

FILE: dexs/hashlock-markets/sui.ts
  type HTLCLockedEvent (line 11) | interface HTLCLockedEvent {
  type HTLCRefundedEvent (line 17) | interface HTLCRefundedEvent {
  function isLocked (line 21) | function isLocked(e: any): e is HTLCLockedEvent {
  function isRefunded (line 25) | function isRefunded(e: any): e is HTLCRefundedEvent {
  function normalizeCoinType (line 34) | function normalizeCoinType(t: string): string {
  function fetchSui (line 43) | async function fetchSui(options: FetchOptions): Promise<FetchResultV2> {

FILE: dexs/haven1-hswap/index.ts
  constant SUBGRAPH (line 5) | const SUBGRAPH = "https://api.haven1.0xgraph.xyz/api/public/bc373e5f-de5...

FILE: dexs/hbarsuite-dex/index.ts
  type IHbarSuiteVolumes (line 32) | interface IHbarSuiteVolumes {

FILE: dexs/heliswap/index.ts
  type IGraphResponse (line 53) | interface IGraphResponse {

FILE: dexs/helix-helix-perp.ts
  constant DERIVATIVE_URL (line 5) | const DERIVATIVE_URL = `https://bigquery-api-636134865280.europe-west1.r...

FILE: dexs/helix-helix.ts
  constant SPOT_URL (line 5) | const SPOT_URL = `https://bigquery-api-636134865280.europe-west1.run.app...

FILE: dexs/helix-markets/index.ts
  constant URL (line 7) | const URL = "https://dgw.helixic.io/api/v1/ticker";
  type IVolume (line 8) | interface IVolume {

FILE: dexs/hibachi/index.ts
  type FutureContracts (line 5) | type FutureContracts = {
  type ChainVolume (line 13) | type ChainVolume = {
  type Response (line 18) | interface Response {

FILE: dexs/hitone/index.ts
  constant STATS_URL (line 6) | const STATS_URL = "https://api.hit.one/api/public/stats/defillama"
  type HitOneStats (line 8) | interface HitOneStats {

FILE: dexs/hmx/index.ts
  type MarketStat (line 15) | type MarketStat = {

FILE: dexs/holoworld/index.ts
  constant FACTORY (line 6) | const FACTORY = "0x86afAc9161063dE33FE1Af6796a129b6Ed861fEb";

FILE: dexs/honeypop-dex.ts
  constant FACTORY (line 8) | const FACTORY = "0x1d25AF2b0992bf227b350860Ea80Bad47382CAf6";
  constant POOL_CREATED_EVENT (line 9) | const POOL_CREATED_EVENT = "event PoolCreated(address indexed token0, ad...
  constant SWAP_EVENT (line 10) | const SWAP_EVENT = "event Swap(address indexed sender, address indexed r...

FILE: dexs/hotstuff/index.ts
  constant HOTSTUFF_API_URL (line 7) | const HOTSTUFF_API_URL = "https://api.hotstuff.trade/info";
  function fetch (line 9) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/humanfi/index.ts
  constant HUMAN_CONTRACT (line 5) | const HUMAN_CONTRACT = "0xD8768f83FCD5C3f19FEf2024F2A2b6a384087E1e";
  constant FEE_RATIO (line 6) | const FEE_RATIO = 0.01;

FILE: dexs/hybra-v4.ts
  constant FACTORY (line 7) | const FACTORY = '0x32b9dA73215255d50D84FeB51540B75acC1324c2';
  function getSwapArgs (line 9) | function getSwapArgs(log: any) {
  function fetch (line 14) | async function fetch(options: FetchOptions) {

FILE: dexs/hydration-dex/index.ts
  function toDateQuery (line 8) | function toDateQuery(timestmap: number): string {

FILE: dexs/hyperion/index.ts
  constant BASE_URL (line 7) | const BASE_URL = "https://api.hyperion.xyz/v1/graphql";

FILE: dexs/hyperliquid-perp/index.ts
  function fetch (line 35) | async function fetch(_1: number, _: any,  options: FetchOptions): Promis...

FILE: dexs/hyperliquid-spot/index.ts
  function fetch (line 31) | async function fetch(_1: number, _: any,  options: FetchOptions): Promis...

FILE: dexs/hyperpie-v2-dex.ts
  function fetch (line 21) | async function fetch(fetchOptions: FetchOptions) {

FILE: dexs/hypersignals.ts
  constant HL_BUILDER_ADDRESS (line 6) | const HL_BUILDER_ADDRESS = "0x8af3545a3988b7a46f96f9f1ae40c0e64fa493c2";
  constant EXTENDED_BUILDER_NAMES (line 7) | const EXTENDED_BUILDER_NAMES = [
  constant EXTENDED_BUILDER_FEE_RATE (line 13) | const EXTENDED_BUILDER_FEE_RATE = 0.0001;

FILE: dexs/hyperstitions/index.ts
  constant HYPERSTITIONS_CONTRACT (line 4) | const HYPERSTITIONS_CONTRACT = "0x97b4a6b501C55cCC7A597E259266E7E28A2d0B...
  constant BOUGHT_EVENT (line 6) | const BOUGHT_EVENT = "event Bought(address indexed buyer, uint256 indexe...
  constant SOLD_EVENT (line 7) | const SOLD_EVENT = "event Sold(address indexed seller, uint256 indexed i...

FILE: dexs/hyperswap-v3/index.ts
  constant GRAPH_URL (line 6) | const GRAPH_URL = 'https://api.subgraph.ormilabs.com/api/public/33c67399...

FILE: dexs/hyperunit/index.ts
  constant CG_UNIT_DEPLOYED_TOKENS (line 7) | const CG_UNIT_DEPLOYED_TOKENS = {

FILE: dexs/immortalx/index.ts
  type IData (line 8) | interface IData {
  type IProtocolData (line 12) | interface IProtocolData {
  type IURL (line 17) | type IURL = {

FILE: dexs/increment-swap/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/infinityPools/quadHelper.ts
  function toInt256 (line 10) | function toInt256(hexStr: string): bigint {
  function fromUInt (line 108) | function fromUInt(x: bigint): string {
  function mostSignificantBit (line 136) | function mostSignificantBit(value: bigint): number {
  function mul (line 163) | function mul(x: string, y: string): string {
  function toHex (line 274) | function toHex(value: bigint): string {

FILE: dexs/initia-dex.ts
  function fetch (line 4) | async function fetch() {

FILE: dexs/injective-derivatives.ts
  constant DERIVATIVE_URL (line 5) | const DERIVATIVE_URL = `https://bigquery-api-636134865280.europe-west1.r...

FILE: dexs/injective-spot.ts
  constant SPOT_URL (line 6) | const SPOT_URL = `https://bigquery-api-636134865280.europe-west1.run.app...

FILE: dexs/intent-x/index.ts
  function fetch (line 12) | async function fetch(_a: any, _b: any, options: FetchOptions): Promise<F...

FILE: dexs/interest-movement-curve/index.ts
  type Summary (line 9) | interface Summary {
  type PoolData (line 26) | interface PoolData {
  type Metrics (line 34) | interface Metrics {
  function fetch (line 41) | async function fetch(

FILE: dexs/interest-protocol-stable-swap/index.ts
  type Metrics (line 9) | interface Metrics {
  function fetch (line 26) | async function fetch(

FILE: dexs/interest-protocol/index.ts
  type GetVolumeReturn (line 8) | interface GetVolumeReturn {

FILE: dexs/invariant/index.ts
  type StatsApiResponse (line 10) | type StatsApiResponse = {

FILE: dexs/ipor/index.ts
  type IChainData (line 5) | interface IChainData {

FILE: dexs/iziswap/index.ts
  type IVolumeall (line 27) | interface IVolumeall {

FILE: dexs/jediswap-v2/index.ts
  type IGraph (line 6) | interface IGraph {
  constant URL (line 15) | const URL = 'https://api.v2.jediswap.xyz/graphql';

FILE: dexs/jediswap/index.ts
  type IGraph (line 6) | interface IGraph {
  constant URL (line 14) | const URL = 'https://api.jediswap.xyz/graphql';

FILE: dexs/jellyverse/index.ts
  function fetch (line 10) | async function fetch(_: any, _1: any, { toTimestamp, chain }: FetchOptio...

FILE: dexs/jup-ape/index.ts
  type IData (line 17) | interface IData {

FILE: dexs/jupiter-prediction/index.ts
  function fetch (line 6) | async function fetch(_a: any, _b: any, options: FetchOptions): Promise<F...

FILE: dexs/justbet/constants.ts
  constant WINR_VAULT_ADAPTER_CONTRACT (line 2) | const WINR_VAULT_ADAPTER_CONTRACT =
  constant GAME_LOG_EMITTER_ADDRESS (line 5) | const GAME_LOG_EMITTER_ADDRESS =
  constant JUSTBET_BANKROLL_INDEXES (line 8) | const JUSTBET_BANKROLL_INDEXES = [

FILE: dexs/justbet/helpers.ts
  type Receipt (line 3) | type Receipt = {
  function receiptDecode (line 11) | function receiptDecode(receipt: string): Receipt {
  function extractReceiptHashes (line 33) | function extractReceiptHashes(data) {

FILE: dexs/k-bit/index.ts
  constant FEE_CONTRACT (line 5) | const FEE_CONTRACT = "0x2994F8C9Df255e3926f73ae892E7464b4F76cd49";
  constant FEE_CHANGE_BLOCK (line 6) | const FEE_CHANGE_BLOCK = 167568912;
  constant MULTIPLIER (line 7) | const MULTIPLIER = [1 / 0.001, 1 / 0.0007];
  constant USDT (line 8) | const USDT = ADDRESSES.klaytn.USDT;

FILE: dexs/kalshi.ts
  function fetch (line 5) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/kanalabs-perp/index.ts
  constant GRAPHQL_URL (line 5) | const GRAPHQL_URL = "https://api-mainnet.kanalabs.io/graphql";
  type KanaChainID (line 7) | enum KanaChainID {

FILE: dexs/karura-swap/index.ts
  type IGraphResponse (line 24) | interface IGraphResponse {

FILE: dexs/kaspacom-dex/index.ts
  constant BACKEND_API_URL (line 6) | const BACKEND_API_URL = 'https://api-defi.kaspa.com/dex';
  constant DAY_IN_SECONDS (line 7) | const DAY_IN_SECONDS = 86400;
  function fetch (line 20) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/kast-card.ts
  constant MOVEMENT_GRAPHQL (line 5) | const MOVEMENT_GRAPHQL = "https://indexer.mainnet.movementnetwork.xyz/v1...
  constant KAST_DISTRIBUTION_WALLET (line 9) | const KAST_DISTRIBUTION_WALLET = "0x45006561c97199f8e3169048406dd56dcc4c...
  constant MOVE_DECIMALS (line 12) | const MOVE_DECIMALS = 1e8;
  constant CASHBACK_RATE (line 15) | const CASHBACK_RATE = 0.04;

FILE: dexs/katana-perps.ts
  constant OLD_EXCHANGE_CONTRACT (line 4) | const OLD_EXCHANGE_CONTRACT = '0x835Ba5b1B202773A94Daaa07168b26B22584637a';
  constant NEW_EXCHANGE_CONTRACT (line 5) | const NEW_EXCHANGE_CONTRACT = '0x62230CeA619F734cc215bB8074bbF07bE4Eb633e';
  constant UPGRADE_TIMESTAMP (line 6) | const UPGRADE_TIMESTAMP = 1777300239;
  constant QUOTE_TOKEN (line 7) | const QUOTE_TOKEN = '0x203A662b0BD271A6ed5a60EdFbd04bFce608FD36';
  constant PIP_DECIMALS_ADJUSTMENT (line 9) | const PIP_DECIMALS_ADJUSTMENT = 1e2;
  constant ABIS (line 11) | const ABIS = {
  function fetch (line 15) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: dexs/katana-v3/index.ts
  function getRevenueRatio (line 12) | function getRevenueRatio(fee: number): number {

FILE: dexs/kava-swap/index.ts
  type ICallPoolData (line 5) | interface ICallPoolData {
  constant URL (line 10) | const URL = "https://swap-data.kava.io/v1/pools/internal";

FILE: dexs/kiloex/index.ts
  type ChainMap (line 8) | type ChainMap = {
  type IVolume (line 20) | interface IVolume {

FILE: dexs/kittenswap-cl/index.ts
  constant CONFIG (line 8) | const CONFIG = {

FILE: dexs/kittenswap/index.ts
  constant CONFIG (line 8) | const CONFIG = {

FILE: dexs/klayswap/index.ts
  function fetch (line 18) | async function fetch(_: any, _1: any, { createBalances, getLogs, endTime...

FILE: dexs/kokonut-swap/index.ts
  constant KLAY (line 48) | const KLAY = '0x19aac5f612f524b754ca7e7c41cbfa2e981a4432' // WKLAY used ...

FILE: dexs/kriya-clmm/index.ts
  type IUrl (line 6) | type IUrl = {
  type IVolume (line 16) | interface IVolume {

FILE: dexs/kriya-dex/index.ts
  type IUrl (line 6) | type IUrl = {
  type IVolume (line 14) | interface IVolume {

FILE: dexs/ktx-derivatives.ts
  type IGraphResponse (line 21) | interface IGraphResponse {

FILE: dexs/ktx-swap.ts
  type IGraphResponse (line 20) | interface IGraphResponse {

FILE: dexs/kuma-v1/index.ts
  constant URL (line 4) | const URL = "https://api.kuma.bid/v1/exchange";

FILE: dexs/kuru-clob.ts
  type ClobConfig (line 5) | interface ClobConfig {
  constant CONFIGS (line 10) | const CONFIGS: Record<string, ClobConfig> = {
  constant ABIS (line 17) | const ABIS = {
  type Market (line 23) | interface Market {
  function fetch (line 31) | async function fetch(options: FetchOptions) {

FILE: dexs/kyan.ts
  constant API_URL (line 5) | const API_URL = "https://production.kyan.sh/api/v1/defillama/overview";
  constant ONE_DAY (line 6) | const ONE_DAY = 24 * 60 * 60;

FILE: dexs/kyex/index.ts
  type SwapEvent (line 8) | interface SwapEvent {
  type GraphResponse (line 20) | interface GraphResponse {

FILE: dexs/kyo-fi-v3.ts
  constant BLOCK_STEP (line 14) | const BLOCK_STEP = 10_000;

FILE: dexs/landbid.ts
  constant OLD_WORLD_MINER (line 6) | const OLD_WORLD_MINER = "0xbc25d77953425041C3f09ea4b731a873E00036EA";
  constant V2_WORLD_MINER (line 7) | const V2_WORLD_MINER = "0x0B28B589Cf3FDfaeF53054D2914fF36D6f1baBCc";
  constant UNCX_UNVI3_LOCKER (line 8) | const UNCX_UNVI3_LOCKER = "0x231278eDd38B00B07fBd52120CEf685B9BaEBCC1";
  constant LAND_WETH_UNIV3_LP (line 9) | const LAND_WETH_UNIV3_LP = "0xf630370cBFEB1d04c5C7B564143010E8d30b4e10";
  constant PROTOCOL_LP_PROVIDER (line 10) | const PROTOCOL_LP_PROVIDER = "0x258007980c06Ae309851774cCd703023D91f4879";
  constant LAND_TOKEN (line 11) | const LAND_TOKEN = "0xB738b1568F08B0d6894a580Ef805E9298ebFaB46";
  constant CONQUER_EVENT (line 13) | const CONQUER_EVENT =
  constant LP_FEE_COLLECTED_EVENT (line 16) | const LP_FEE_COLLECTED_EVENT = "event Collect (address indexed owner, ad...
  constant BASE_FEE_BPS (line 18) | const BASE_FEE_BPS = 10000n;
  constant OLD_LP_FEE_BPS (line 19) | const OLD_LP_FEE_BPS = 1000n;
  constant OLD_DEV_FEE_BPS (line 20) | const OLD_DEV_FEE_BPS = 500n;
  constant V2_BUYBACKS_BPS (line 21) | const V2_BUYBACKS_BPS = 1125n;
  constant V2_STAKING_BPS (line 22) | const V2_STAKING_BPS = 300n;
  constant V2_INCENTIVES_BPS (line 23) | const V2_INCENTIVES_BPS = 75n;
  constant V2_PROTOCOL_REVENUE_BPS (line 24) | const V2_PROTOCOL_REVENUE_BPS = V2_BUYBACKS_BPS + V2_INCENTIVES_BPS;
  constant UNCX_FEE_SHARE (line 25) | const UNCX_FEE_SHARE = 2 / 100;
  function fetch (line 30) | async function fetch(options: FetchOptions) {

FILE: dexs/legion.ts
  constant FACTORY (line 33) | const FACTORY = '0xa0beb0a8c765482c128a2986c063af5c3171ff2f';
  constant FACTORY_FROM_BLOCK (line 34) | const FACTORY_FROM_BLOCK = 23182742;
  constant ABIS (line 36) | const ABIS: Record<string, string> = {
  type ISale (line 43) | interface ISale {
  function fetch (line 53) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: dexs/levana/fetch.ts
  constant INDEXER_URL (line 5) | const INDEXER_URL = "https://indexer-mainnet.levana.finance";
  constant QUERIER_URL (line 6) | const QUERIER_URL = "https://querier-mainnet.levana.finance";
  type Chain (line 8) | type Chain = "osmosis" | "injective" | "sei" | "neutron"
  type MarketInfo (line 24) | interface MarketInfo {
  function fetchVolume (line 29) | async function fetchVolume(kind: "daily" | "total", marketInfos: MarketI...
  function fetchMarketInfos (line 45) | async function fetchMarketInfos(chain: Chain): Promise<MarketInfo[]> {

FILE: dexs/level-finance-level-finance-derivative.ts
  type IGraphResponse (line 20) | interface IGraphResponse {

FILE: dexs/level-finance-level-finance.ts
  type IGraphResponse (line 20) | interface IGraphResponse {

FILE: dexs/leverup/index.ts
  constant LVMON_ISSUER (line 7) | const LVMON_ISSUER = "0xbF52cED429C3901AfA4BBF25849269eF7A4ad105";
  constant LEVERUP_DIAMOND (line 9) | const LEVERUP_DIAMOND = '0xea1b8E4aB7f14F7dCA68c5B214303B13078FC5ec';
  constant LVUSD (line 11) | const LVUSD = '0xFD44B35139Ae53FFF7d8F2A9869c503D987f00d1';
  constant LVMON (line 12) | const LVMON = '0x91b81bfbe3A747230F0529Aa28d8b2Bc898E6D56';
  constant USDC_MAINNET (line 14) | const USDC_MAINNET = '0x754704Bc059F8C67012fEd69BC8A327a5aafb603';
  constant WMON_MAINNET (line 15) | const WMON_MAINNET = '0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A';

FILE: dexs/lexer-derivatives.ts
  type VolumeStatsQuery (line 11) | interface VolumeStatsQuery {

FILE: dexs/lexer-swap.ts
  type VolumeStatsQuery (line 11) | interface VolumeStatsQuery {

FILE: dexs/lighter-spot/index.ts
  constant API (line 7) | const API = "https://mainnet.zklighter.elliot.ai/api/v1";

FILE: dexs/lighterv2/index.ts
  constant API (line 7) | const API = "https://mainnet.zklighter.elliot.ai/api/v1";

FILE: dexs/limitless-exchange/index.ts
  constant FEE_LABELS (line 46) | const FEE_LABELS = {
  function fetch (line 51) | async function fetch(options: FetchOptions) {

FILE: dexs/linehub-perps/index.ts
  type IVolumeStat (line 10) | interface IVolumeStat {

FILE: dexs/liquidcore.ts
  constant LIQUIDCORE_ROUTER (line 8) | const LIQUIDCORE_ROUTER = "0x625aC1D165c776121A52ff158e76e3544B4a0b8B";
  constant LIQUIDCORE_POOLS (line 9) | const LIQUIDCORE_POOLS = [
  constant ROUTER_DEPLOYED_DATE (line 13) | const ROUTER_DEPLOYED_DATE = "2026-03-03";

FILE: dexs/liquidswap/index.ts
  constant LIQUIDSWAP_SWAP_EVENT_PREFIXES (line 5) | const LIQUIDSWAP_SWAP_EVENT_PREFIXES = [
  constant START_DATE (line 11) | const START_DATE = "2025-10-22";

FILE: dexs/lista-dex/index.ts
  type MarketResponse (line 8) | interface MarketResponse {
  type PoolInfo (line 21) | interface PoolInfo {
  type SwapEventArgs (line 27) | interface SwapEventArgs {
  function prefetch (line 38) | async function prefetch(_options: FetchOptions) {

FILE: dexs/lithos/index.ts
  constant ZERO_ADDRESS (line 7) | const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
  constant VOLATILE_FEE (line 8) | const VOLATILE_FEE = 0.0025;
  constant STABLE_FEE (line 9) | const STABLE_FEE = 0.0005;
  constant PROTOCOL_FEE_SHARE (line 10) | const PROTOCOL_FEE_SHARE = 0.12;
  constant LP_FEE_SHARE (line 11) | const LP_FEE_SHARE = 1 - PROTOCOL_FEE_SHARE;
  constant START_BLOCK (line 12) | const START_BLOCK = 3_599_118;
  constant START_DATE (line 13) | const START_DATE = "2025-09-29";
  constant CONFIG (line 15) | const CONFIG = {

FILE: dexs/lnexchange-perp/index.ts
  constant URL (line 7) | const URL =
  type Response (line 10) | interface Response {

FILE: dexs/lnexchange-spot/index.ts
  constant URL (line 7) | const URL = "https://test-spots-api.ln.exchange/napi/common/getDayTradeA...
  type Response (line 9) | interface Response {

FILE: dexs/lotto-run/index.ts
  constant MODULE (line 5) | const MODULE = "lotto_run";
  constant APT_TOKEN (line 6) | const APT_TOKEN = "0x1::aptos_coin::AptosCoin";
  constant APT_DECIMALS (line 7) | const APT_DECIMALS = 1e8;
  constant POOLS (line 9) | const POOLS = [
  function getTotalTickets (line 18) | async function getTotalTickets(pool: string, version: number): Promise<n...

FILE: dexs/lotus-finance/index.ts
  constant LOTUS_BASE (line 5) | const LOTUS_BASE = process.env.LOTUS_API_BASE ?? "https://lotus-api.lotu...
  constant LOTUS_PATH (line 6) | const LOTUS_PATH = "/contract/performance";
  constant INTERVAL (line 7) | const INTERVAL = "1d";

FILE: dexs/loxodrome-amm/index.ts
  constant FACTORY_ADDRESSES (line 15) | const FACTORY_ADDRESSES = [

FILE: dexs/lumenswap/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/luna-fun.ts
  constant TAX_MANAGER (line 5) | const TAX_MANAGER = "0x061aD83969a6F9864f02265FB1ff103DDBCA5cDB";
  constant WBNB (line 6) | const WBNB = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c";

FILE: dexs/lunarbase/index.ts
  constant POOLS (line 5) | const POOLS = [
  constant POOL_ADDRESSES (line 20) | const POOL_ADDRESSES = POOLS.map(({ address }) => address);
  constant LEGACY_POOL_ADDRESSES (line 21) | const LEGACY_POOL_ADDRESSES = POOLS

FILE: dexs/lyra/index.ts
  type ILyraVolumeResponse (line 6) | interface ILyraVolumeResponse {
  function fetchLyraVolumeData (line 28) | async function fetchLyraVolumeData(
  function getLyraVolumeData (line 42) | async function getLyraVolumeData(

FILE: dexs/macaron-xyz/index.ts
  type IVolume (line 9) | interface IVolume {
  type ChainMapId (line 14) | type ChainMapId = {

FILE: dexs/mach/deployments.ts
  type Deployment (line 3) | type Deployment = {
  constant DEPLOYMENTS (line 8) | const DEPLOYMENTS: { [chain: string]: Deployment } = {

FILE: dexs/mach/index.ts
  constant EVENT_MATCH_EXECUTED (line 13) | const EVENT_MATCH_EXECUTED = "event MatchExecuted(address indexed bonder...
  function fetch (line 15) | async function fetch({ chain, getLogs, createBalances }: FetchOptions) {

FILE: dexs/machinex-cl.ts
  function fetch (line 5) | async function fetch(_: any, _1: any, { startOfDay }: FetchOptions) {

FILE: dexs/machinex-legacy.ts
  function fetch (line 5) | async function fetch(_: any, _1: any, { startOfDay }: FetchOptions) {

FILE: dexs/magicsea-lb/index.ts
  constant FACTORY_ADDRESS (line 7) | const FACTORY_ADDRESS = '0x8Cce20D17aB9C6F60574e678ca96711D907fD08c';
  type TABI (line 9) | type TABI = {

FILE: dexs/magma-finance/index.ts
  type IUrl (line 7) | type IUrl = {
  type IVolumeData (line 22) | interface IVolumeData {

FILE: dexs/mangrove/index.ts
  type ChainConfig (line 10) | type ChainConfig = {
  function getToken (line 35) | async function getToken(
  function fetch (line 55) | async function fetch({

FILE: dexs/manifest-trade/index.ts
  function fetch (line 7) | async function fetch(timestamp: number) {

FILE: dexs/mars-perp/index.ts
  function convertToUsd (line 6) | function convertToUsd(value: string | number): number {

FILE: dexs/maverick-v2/index.ts
  type GqlPoolDayStats (line 13) | interface GqlPoolDayStats {
  type GqlPool (line 20) | interface GqlPool {
  type GqlToken (line 28) | interface GqlToken {
  type GqlQueryResponse (line 34) | interface GqlQueryResponse {

FILE: dexs/mcdex/index.ts
  type IVolumeall (line 9) | interface IVolumeall {
  type chains (line 15) | type chains = {

FILE: dexs/mdex/index.ts
  type IVolume (line 9) | interface IVolume {
  type ChainMapId (line 14) | type ChainMapId = {

FILE: dexs/megaton-finance/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/mento-v3/index.ts
  constant FPMM_FACTORY (line 7) | const FPMM_FACTORY = '0xa849b475FE5a4B5C9C3280152c7a1945b907613b';
  constant SWAP_EVENT (line 8) | const SWAP_EVENT = 'event Swap(address indexed sender, uint amount0In, u...

FILE: dexs/meridian-trade-derivatives.ts
  type IGraphResponse (line 19) | interface IGraphResponse {

FILE: dexs/meridian-trade-swap.ts
  type IGraphResponse (line 18) | interface IGraphResponse {

FILE: dexs/merlinswap/index.ts
  type IVolumeall (line 9) | interface IVolumeall {
  type TChains (line 15) | type TChains = {
  type TAdapter (line 18) | type TAdapter = {

FILE: dexs/metamask-card.ts
  function retry (line 29) | async function retry(chain: string, fromBlock: number, toBlock: number, ...

FILE: dexs/metastable-musd/index.ts
  constant M_USD_VAULT_ID (line 5) | const M_USD_VAULT_ID =
  constant M_ETH_VAULT_ID (line 7) | const M_ETH_VAULT_ID =
  constant SUPER_SUI_VAULT_ID (line 9) | const SUPER_SUI_VAULT_ID =
  constant M_BTC_VAULT_ID (line 11) | const M_BTC_VAULT_ID =

FILE: dexs/metavault-derivatives-v2/index.ts
  type IReferralRecord (line 19) | interface IReferralRecord {
  type IVolumeStat (line 24) | interface IVolumeStat {

FILE: dexs/metavault_trade-metavault-derivative.ts
  type IGraphResponse (line 20) | interface IGraphResponse {

FILE: dexs/metavault_trade-metavault_trade.ts
  type IGraphResponse (line 19) | interface IGraphResponse {

FILE: dexs/meteora-damm-v2/index.ts
  function fetch (line 9) | async function fetch() {

FILE: dexs/meteora-dbc/index.ts
  type IData (line 7) | interface IData {
  constant BUYBACK_WALLET (line 15) | const BUYBACK_WALLET = 'FzULv8pR9Rd7cyVKjVkzmJ1eqEmgwDnzjYyNUcEJtoG9';

FILE: dexs/meteora-dlmm.ts
  function fetch (line 7) | async function fetch() {

FILE: dexs/meteora/index.ts
  type Pool (line 8) | interface Pool {
  function fetch (line 16) | async function fetch(_options: FetchOptions) {

FILE: dexs/metric/index.ts
  constant API_BASE (line 7) | const API_BASE = "http://54.199.103.16:8080";
  type PoolMeta (line 29) | interface PoolMeta {

FILE: dexs/metropolis-dlmm/index.ts
  constant FEES_CHANGE_TIMESTAMP (line 5) | const FEES_CHANGE_TIMESTAMP = 1770163200 // 2026-02-04

FILE: dexs/minswap/index.ts
  type IVolumeall (line 5) | interface IVolumeall {

FILE: dexs/mintiq-market/index.ts
  function fetch (line 24) | async function fetch({ getLogs, api, createBalances, }: FetchOptions) {

FILE: dexs/miracletrade.ts
  constant HL_BUILDER_ADDRESS (line 8) | const HL_BUILDER_ADDRESS = "0x5eb46BFBF7C6004b59D67E56749e89e83c2CaF82";
  constant EXTENDED_BUILDER_NAMES (line 9) | const EXTENDED_BUILDER_NAMES = [
  constant EXTENDED_BUILDER_FEE_RATE (line 15) | const EXTENDED_BUILDER_FEE_RATE = 0.00035;

FILE: dexs/mobius-money/index.ts
  function fetch (line 44) | async function fetch(options: FetchOptions) {

FILE: dexs/monster/index.ts
  constant GACHA_STARTER (line 5) | const GACHA_STARTER = "0xdEa1D72f08D83e36946128603d4cD0A180A938A9";
  constant GACHA_PREMIUM (line 6) | const GACHA_PREMIUM = "0x6A786932b1cA83E2343B85483101C5B820860AC4";
  constant GACHA_ULTRA (line 7) | const GACHA_ULTRA = "0xebB285B5cd4610D0f6dc538379A7027F02274ca2";
  constant GACHA_CONTRACTS (line 8) | const GACHA_CONTRACTS = [GACHA_STARTER, GACHA_PREMIUM, GACHA_ULTRA];
  constant USDM (line 10) | const USDM = "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7";
  constant PAYMENT_WALLET (line 11) | const PAYMENT_WALLET = "0x61fccfC0279B09c387608efF56Fd9187e61D2874";
  constant TREASURY (line 12) | const TREASURY = "0x7Fc8d4b747dAc14b68bEe79d93C7130257c98a62";

FILE: dexs/moon-swap/index.ts
  constant START_TIME (line 7) | const START_TIME = 1634515198;
  type IVolumeall (line 9) | interface IVolumeall {

FILE: dexs/mooniswap/index.ts
  function fetch (line 17) | async function fetch(options: FetchOptions) {

FILE: dexs/moonlander/index.ts
  constant CONFIG (line 5) | const CONFIG = {
  constant BASE_API_URL (line 32) | const BASE_API_URL = "https://api.moonlander.trade/v1/defillama";
  constant VOLUME_ENDPOINT (line 33) | const VOLUME_ENDPOINT = `${BASE_API_URL}/volume`;
  constant FEES_ENDPOINT (line 34) | const FEES_ENDPOINT = `${BASE_API_URL}/fee`;
  type DailyDateAPIResponse (line 99) | interface DailyDateAPIResponse {
  type FeesAPIResponse (line 104) | interface FeesAPIResponse {
  function fetch (line 108) | async function fetch({

FILE: dexs/mosaic-amm/index.ts
  function fetch (line 4) | async function fetch() {

FILE: dexs/mu-exchange/index.ts
  constant ENDPOINTS (line 9) | const ENDPOINTS: { [key: string]: string } = {
  constant SDAI_DECIMALS (line 12) | const SDAI_DECIMALS: { [key: string]: number } = {

FILE: dexs/muesliswap/index.ts
  type IVolumeall (line 6) | interface IVolumeall {

FILE: dexs/multiswap/index.ts
  constant FACTORY (line 7) | const FACTORY = "0x0A513fac50880fb7fC1588D0A590583Ef34D85a1".toLowerCase();
  constant POOL_CREATED_EVENT (line 8) | const POOL_CREATED_EVENT =
  constant SWAP_EVENT (line 10) | const SWAP_EVENT =

FILE: dexs/mummy-finance/index.ts
  type IGraphResponse (line 20) | interface IGraphResponse {

FILE: dexs/mux-protocol-perps.ts
  type TChainAddress (line 5) | type TChainAddress = {

FILE: dexs/myswap-cl/index.ts
  type VolumeResponse (line 5) | type VolumeResponse = { timestamp: number; volume: number };

FILE: dexs/myswap/index.ts
  type IVolumeall (line 8) | interface IVolumeall {
  constant NUMBER_OF_POOL (line 13) | const NUMBER_OF_POOL = 8;

FILE: dexs/myx-finance/helpers..ts
  constant ABIS (line 4) | const ABIS = {
  type IPair (line 10) | interface IPair {
  type ExchangeConfig (line 17) | interface ExchangeConfig {
  function getFetch (line 54) | function getFetch(metric: 'volume' | 'fees'): FetchV2 {

FILE: dexs/nabla/index.ts
  function getAddresses (line 115) | async function getAddresses(chain, api) {

FILE: dexs/nad-fun.ts
  type FeeRates (line 25) | interface FeeRates {
  function parseFeeConfig (line 31) | function parseFeeConfig(config: {

FILE: dexs/nado-perp/index.ts
  type IProducts (line 5) | interface IProducts {
  type TURL (line 14) | type TURL = {

FILE: dexs/nado-spot/index.ts
  type IProducts (line 5) | interface IProducts {
  type TURL (line 15) | type TURL = {

FILE: dexs/napier/index.ts
  constant CURVE_POOL_ABI (line 17) | const CURVE_POOL_ABI = {
  constant TOKI_HOOK_ABI (line 21) | const TOKI_HOOK_ABI = {
  type Market (line 25) | interface Market {
  constant API_BASE_URL (line 39) | const API_BASE_URL = process.env.NAPIER_API_URL ?? "https://api-v2.napie...
  function fetchMarkets (line 41) | async function fetchMarkets(api: any) {

FILE: dexs/narbet.ts
  constant EVENT_ABIS (line 5) | const EVENT_ABIS = {
  constant GAME_CONTRACTS (line 20) | const GAME_CONTRACTS: { targets: string[]; eventAbi: string }[] = [

FILE: dexs/narwhal-finance.ts
  constant ADDRESS_TRADING_USDC (line 5) | const ADDRESS_TRADING_USDC = '0x3556d16519e3407AD43d5d7b3011bB095553d77a';
  constant DENOMINATOR (line 8) | const DENOMINATOR = BigNumber(10 ** 18);
  constant USDC_DECIMALS (line 9) | const USDC_DECIMALS = BigNumber(1e6);

FILE: dexs/native/index.ts
  constant RFQ_TRADE_EVENT (line 23) | const RFQ_TRADE_EVENT = 'event RFQTrade(address recipient, address selle...

FILE: dexs/nest/index.ts
  constant FEES_VAULT_FACTORY (line 4) | const FEES_VAULT_FACTORY = '0x705C76e29977Ed52cd93d390A7BBcC61189724C0';
  constant GAUGE_RATE_PRECISION (line 5) | const GAUGE_RATE_PRECISION = 10_000;
  constant API_CONFIG (line 8) | const API_CONFIG = {

FILE: dexs/ninjablaze/index.ts
  function fetch (line 8) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: dexs/nlx-nlx-swap.ts
  type ILog (line 5) | interface ILog {
  type IToken (line 14) | interface IToken {
  type TChain (line 19) | type TChain = {

FILE: dexs/nlx-nlx-trade.ts
  type ILog (line 5) | interface ILog {
  type TChain (line 17) | type TChain = {

FILE: dexs/noah-swap/index.ts
  type IData (line 6) | interface IData {

FILE: dexs/nomiswap/index.ts
  function fetch (line 9) | async function fetch(options: FetchOptions) {

FILE: dexs/nostra-pools/index.ts
  function fetch (line 5) | async function fetch() {

FILE: dexs/ocelex/index.ts
  constant OCX (line 18) | const OCX = "0x1a51b19ce03dbe0cb44c1528e34a7edd7771e9af";

FILE: dexs/ociswap-basic.ts
  type PoolStatistics (line 5) | interface PoolStatistics {

FILE: dexs/ociswap-precision.ts
  type PoolStatistics (line 5) | interface PoolStatistics {

FILE: dexs/okie-launch.ts
  function fetch (line 4) | async function fetch({ createBalances, getLogs }: FetchOptions) {

FILE: dexs/okie-stableswap.ts
  function fetch (line 29) | async function fetch(options: FetchOptions) {

FILE: dexs/okieswap-v2.ts
  function fetch (line 7) | async function fetch({ getFromBlock, getToBlock, }: FetchOptions) {

FILE: dexs/omni-exchange-flux/index.ts
  constant CLAMM_BIN_QUERY (line 43) | const CLAMM_BIN_QUERY = gql`

FILE: dexs/omni-exchange-v2/index.ts
  constant V2_QUERY (line 37) | const V2_QUERY = gql`
  constant V3_CLAMM_BIN_QUERY (line 47) | const V3_CLAMM_BIN_QUERY = gql`

FILE: dexs/omnipair/index.ts
  function fetch (line 6) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/ondo-global-markets/index.ts
  constant TRADE_EXECUTED_ABI (line 4) | const TRADE_EXECUTED_ABI = "event TradeExecuted (uint256 executionId, ui...

FILE: dexs/openleverage/index.ts
  type TEndoint (line 7) | type TEndoint = {
  type IVolumeall (line 17) | interface IVolumeall {

FILE: dexs/opinion/index.ts
  constant OPINION_EXCHANGE_CONTRACT (line 4) | const OPINION_EXCHANGE_CONTRACT = '0x5F45344126D6488025B0b84A3A8189F2487...
  constant OPINION_FEE_MANAGER_CONTRACT (line 5) | const OPINION_FEE_MANAGER_CONTRACT = '0xC9063Dc52dEEfb518E5b6634A6b8D624...
  constant ORDER_FILLED_EVENT (line 6) | const ORDER_FILLED_EVENT = 'event OrderFilled (bytes32 indexed orderHash...
  constant REBATE_EARNED_EVENT (line 7) | const REBATE_EARNED_EVENT = 'event RebateEarned (address indexed referre...
  constant WASH_TRADING_BLACKLIST (line 23) | const WASH_TRADING_BLACKLIST = new Set(
  function fetch (line 63) | async function fetch(options: FetchOptions): Promise<FetchResult> {

FILE: dexs/opx-finance/index.ts
  type IGraphResponse (line 19) | interface IGraphResponse {

FILE: dexs/oraidex/index.ts
  type IVolumeall (line 7) | interface IVolumeall {

FILE: dexs/orbit-finance.ts
  constant PROGRAM_ID (line 20) | const PROGRAM_ID = "Fn3fA3fjsmpULNL7E9U79jKTe1KHxPtQeWdURCbJXCnM";
  constant SWAP_DISC (line 22) | const SWAP_DISC = "0xf8c69e91e17587c8";
  constant AVG_FEE_RATE (line 25) | const AVG_FEE_RATE = 0.02;

FILE: dexs/orca/index.ts
  constant FEE_RATE_DENOMINATOR (line 8) | const FEE_RATE_DENOMINATOR = 1_000_000;
  constant FEE_RATE_THRESHOLD (line 9) | const FEE_RATE_THRESHOLD = 0;
  constant PROTOCOL_FEE_RATE (line 10) | const PROTOCOL_FEE_RATE = .12;
  constant HOLDERS_REVENUE_RATE (line 11) | const HOLDERS_REVENUE_RATE = 0.20;
  constant MAX_FEE_TIER (line 13) | const MAX_FEE_TIER = 2/100;
  constant FEE_TIER_EPSILON (line 14) | const FEE_TIER_EPSILON = 1e-4;
  constant CONFIG (line 16) | const CONFIG: any = {
  type WhirlpoolReward (line 29) | interface WhirlpoolReward {
  type Whirlpool (line 36) | interface Whirlpool {
  type WhirlpoolWithNumberMetrics (line 69) | interface WhirlpoolWithNumberMetrics extends Omit<Whirlpool, 'rewardsUsd...
  type StatsApiResponse (line 75) | interface StatsApiResponse {
  function convertWhirlpoolMetricsToNumbers (line 85) | function convertWhirlpoolMetricsToNumbers(whirlpool: Whirlpool): Whirlpo...
  function calculateLPFees (line 95) | function calculateLPFees(pool: WhirlpoolWithNumberMetrics): number {
  function calculateProtocolFees (line 103) | function calculateProtocolFees(pool: WhirlpoolWithNumberMetrics): number {
  function calculateHoldersRevenue (line 111) | function calculateHoldersRevenue(pool: WhirlpoolWithNumberMetrics): numb...
  function delay (line 116) | function delay(ms: number): Promise<void> {
  function fetch (line 120) | async function fetch(timestamp: number, _b: any, options: FetchOptions) {

FILE: dexs/orderly-network-orderly-network-derivatives.ts
  type VolumeBreakdown (line 8) | type VolumeBreakdown = {
  type DailyStats (line 13) | type DailyStats = {

FILE: dexs/orderly-perps-new.ts
  type DailyStats (line 7) | type DailyStats = {

FILE: dexs/osmosis/index.ts
  type IChartItem (line 7) | interface IChartItem {

FILE: dexs/ostrich/index.ts
  type IAPIResponse (line 9) | interface IAPIResponse {

FILE: dexs/oswap/index.ts
  type ITicker (line 5) | interface ITicker {
  type ITickers (line 18) | interface ITickers {
  type IExchangeRates (line 23) | interface IExchangeRates {
  constant OSWAP_STATS_ENDPOINT (line 28) | const OSWAP_STATS_ENDPOINT = "https://v2-stats.oswap.io/api/v1";

FILE: dexs/otomate.ts
  constant OFFCHAIN_EXCHANGE (line 4) | const OFFCHAIN_EXCHANGE = "0x8373C3Aa04153aBc0cfD28901c3c971a946994ab";
  constant BUILDER_ID_PADDED (line 5) | const BUILDER_ID_PADDED = "0x" + (900).toString(16).padStart(64, "0");

FILE: dexs/oxium/config.ts
  type ConfigEntry (line 3) | type ConfigEntry = {

FILE: dexs/oxium/fetch.ts
  function getRequest (line 3) | function getRequest(chain: string, fromTimestamp: number, toTimestamp: n...
  type NumString (line 34) | type NumString = `${number}`;
  type Address (line 35) | type Address = `0x${string}`;
  type MetricEntry (line 37) | type MetricEntry = {
  function fetchOxiumMetrics (line 43) | async function fetchOxiumMetrics(

FILE: dexs/oxium/index.ts
  function fetch (line 10) | async function fetch({

FILE: dexs/pact/index.ts
  type IAPIResponse (line 9) | interface IAPIResponse {

FILE: dexs/paint-swap/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/palmswap/index.ts
  function getUniqStartOfTodayTimestamp (line 42) | function getUniqStartOfTodayTimestamp(now: Date) {

FILE: dexs/pancakeswap-infinity.ts
  function fetch (line 18) | async function fetch({ getLogs, createBalances, chain, fromApi, toApi }:...

FILE: dexs/pancakeswap-prediction/index.ts
  constant PCS_BNB_PREDICTION_CONTRACT (line 5) | const PCS_BNB_PREDICTION_CONTRACT = "0x18B2A687610328590Bc8F2e5fEdDe3b58...
  constant EVENT_ABI (line 6) | const EVENT_ABI = {
  function fetch (line 12) | async function fetch(options: FetchOptions) {

FILE: dexs/pancakeswap-v2.ts
  constant FEE_CONFIG (line 14) | const FEE_CONFIG = {
  type DataSource (line 26) | enum DataSource {
  type BaseChainConfig (line 32) | interface BaseChainConfig {
  type GraphChainConfig (line 37) | interface GraphChainConfig extends BaseChainConfig {
  type LogsChainConfig (line 43) | interface LogsChainConfig extends BaseChainConfig {
  type CustomChainConfig (line 48) | interface CustomChainConfig extends BaseChainConfig {
  type ChainConfig (line 52) | type ChainConfig = GraphChainConfig | LogsChainConfig | CustomChainConfig;
  constant PROTOCOL_CONFIG (line 56) | const PROTOCOL_CONFIG: Record<string, ChainConfig> = {
  constant ABIS (line 109) | const ABIS = {
  function formatAddress (line 150) | function formatAddress(address: any): string {
  function getBscV2Data (line 177) | async function getBscV2Data(options: FetchOptions): Promise<FetchResultV...
  type ISwapEventData (line 204) | interface ISwapEventData {
  constant APTOS_RPC (line 215) | const APTOS_RPC = getEnv('APTOS_RPC');

FILE: dexs/pancakeswap-v3.ts
  type Ifactory (line 14) | interface Ifactory {
  function getProtocolRevenueRatio (line 100) | function getProtocolRevenueRatio(fee: number): number {
  function getHolderRevenueRatio (line 108) | function getHolderRevenueRatio(fee: number): number {

FILE: dexs/pangea-swap/index.ts
  constant MASTER_DEPLOYER (line 5) | const MASTER_DEPLOYER = "0xEB4B1CE03bb947Ce23ABd1403dF7C9B86004178d";
  constant POOL_LOGGER (line 6) | const POOL_LOGGER = "0x002A422533cccEeA9aBF9e56e2A25d72672891bC";
  constant ZERO_ADDRESS (line 7) | const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
  constant ABIS (line 9) | const ABIS = {
  constant PROTOCOL_FEE_RATIO (line 18) | const PROTOCOL_FEE_RATIO = 0.1;
  constant SWAP_FEE_DENOMINATOR (line 19) | const SWAP_FEE_DENOMINATOR = 1_000_000n;

FILE: dexs/pangolin-v3/index.ts
  constant GRAPH_URL (line 8) | const GRAPH_URL = sdk.graph.modifyEndpoint(

FILE: dexs/paradex-spot/index.ts
  constant API_URL (line 5) | const API_URL = "https://api.prod.paradex.trade/v1";
  function fetchMarkets (line 8) | async function fetchMarkets() {
  function fetchCandles (line 17) | async function fetchCandles(options: FetchOptions, marketId: string) {

FILE: dexs/paradex/index.ts
  type DailyVolumeCache (line 10) | interface DailyVolumeCache {

FILE: dexs/paycash/index.ts
  type IVolumeall (line 13) | interface IVolumeall {

FILE: dexs/pendle/index.ts
  type MarketData (line 12) | type MarketData = {
  function amm (line 39) | async function amm(
  function limitOrder (line 69) | async function limitOrder(

FILE: dexs/pepe-dex/index.ts
  constant PEPE_TEAM_DEX_URL (line 5) | const PEPE_TEAM_DEX_URL = "https://dex-api.pepe.team"
  constant STABLECOINS (line 6) | const STABLECOINS = ["USDT"];
  type Ticker (line 8) | interface Ticker {
  type KLine (line 16) | interface KLine {
  type KLinesResponse (line 20) | interface KLinesResponse {
  type KLineRaw (line 26) | interface KLineRaw {

FILE: dexs/perennial-v2/index.ts
  type IGraphResponse (line 37) | interface IGraphResponse {

FILE: dexs/perpl/index.ts
  constant EXCHANGE (line 4) | const EXCHANGE = "0x34B6552d57a35a1D042CcAe1951BD1C370112a6F";
  constant MARKETS (line 7) | const MARKETS: Record<number, { priceDecimals: number; lotDecimals: numb...

FILE: dexs/pharaoh-v3.ts
  constant PHAR_TOKEN_CONTRACT (line 5) | const PHAR_TOKEN_CONTRACT = "0x13A466998Ce03Db73aBc2d4DF3bBD845Ed1f28E7";
  constant XPHAR_TOKEN_CONTRACT (line 6) | const XPHAR_TOKEN_CONTRACT = "0xE8164Ea89665DAb7a553e667F81F30CfDA736B9A";
  type IGraphRes (line 14) | interface IGraphRes {
  type IVoteBribe (line 27) | interface IVoteBribe {
  type IToken (line 35) | interface IToken {
  function paginate (line 40) | async function paginate<T>(
  function getBribes (line 62) | async function getBribes(options: FetchOptions) {
  function getTokens (line 95) | async function getTokens(options: FetchOptions, tokens: string[]) {
  function fetchStats (line 134) | async function fetchStats(options: FetchOptions): Promise<IGraphRes> {

FILE: dexs/pheasantswap/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/phoenix-trade/index.ts
  constant PERP_API_URL (line 8) | const PERP_API_URL = 'https://perp-api.phoenix.trade/v1';
  function fetch (line 10) | async function fetch(_: any, __: any, options: FetchOptions) {

FILE: dexs/phoenix/index.ts
  constant ONE_DAY_IN_SECONDS (line 4) | const ONE_DAY_IN_SECONDS = 60 * 60 * 24
  function fetch (line 8) | async function fetch(timestamp: number) {

FILE: dexs/photon.ts
  constant PHOTON_FEE_WALLET (line 5) | const PHOTON_FEE_WALLET = 'AVUCZyuT35YSuj4RH7fwiyPu82Djn2Hfg7y2ND2XcnZH';

FILE: dexs/pigeonhouse/index.ts
  constant PROGRAM_ID (line 15) | const PROGRAM_ID = "BV1RxkAaD5DjXMsnofkVikFUUYdrDg1v8YgsQ3iyDNoL";
  constant FEE_RATE (line 16) | const FEE_RATE = 0.02;
  constant TREASURY_RATE (line 17) | const TREASURY_RATE = 0.005;

FILE: dexs/pika-protocol-v4/index.ts
  constant PIKA_TOKEN_SUNSET_DATE (line 5) | const PIKA_TOKEN_SUNSET_DATE = "2023-11-12";
  constant NEW_CONTRACT_DEPLOY_TIME (line 6) | const NEW_CONTRACT_DEPLOY_TIME = 1706358483;
  constant PIKA_PERP_OLD (line 8) | const PIKA_PERP_OLD = "0x9b86B2Be8eDB2958089E522Fe0eB7dD5935975AB";
  constant PIKA_PERP_NEW (line 9) | const PIKA_PERP_NEW = "0x8c9b6a4a4e61f4635e8e375e05ff98db5516d25e";

FILE: dexs/pika-protocol/index.ts
  type IData (line 9) | interface IData {
  type IURL (line 14) | type IURL = {
  type IValume (line 18) | interface IValume {

FILE: dexs/pingu/index.ts
  type IGraph (line 8) | interface IGraph {
  constant ARBITRUM_URL (line 14) | const ARBITRUM_URL = 'https://api.studio.thegraph.com/query/75208/pingu-...
  constant ARBITRUM_ASSETS (line 15) | const ARBITRUM_ASSETS = [ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.null];
  constant MONAD_ID (line 17) | const MONAD_ID = 'G3dQNfEnDw4q3bn6QRSJUmcLzi7JKTDGYGWwPeYWYa6X';
  constant MONAD_USDC (line 18) | const MONAD_USDC = "0x754704Bc059F8C67012fEd69BC8A327a5aafb603";
  constant MONAD_ASSETS (line 19) | const MONAD_ASSETS = [MONAD_USDC, ADDRESSES.null];
  constant CONFIGS (line 21) | const CONFIGS: Record<string, any> = {

FILE: dexs/pinnako-derivatives.ts
  type IGraphResponse (line 19) | interface IGraphResponse {

FILE: dexs/pinnako-swap.ts
  type IGraphResponse (line 18) | interface IGraphResponse {

FILE: dexs/piperx-v2/index.ts
  constant PIPERX_GRAPHQL_URL (line 5) | const PIPERX_GRAPHQL_URL = 'https://api.goldsky.com/api/public/project_c...
  constant METRICS_QUERY (line 9) | const METRICS_QUERY = gql`
  function volume (line 23) | async function volume(options: FetchOptions) {

FILE: dexs/piperx-v3/index.ts
  constant PIPERX_GRAPHQL_URL (line 5) | const PIPERX_GRAPHQL_URL = 'https://api.goldsky.com/api/public/project_c...
  constant METRICS_QUERY (line 9) | const METRICS_QUERY = gql`
  function volume (line 23) | async function volume(options: FetchOptions) {

FILE: dexs/pixiechess/index.ts
  constant MINT_CONTRACT (line 4) | const MINT_CONTRACT = '0xb3b4F451870B53586949f0AF4Ba754aaF8AeD4F3';
  constant VRGDA_DEPLOYER (line 5) | const VRGDA_DEPLOYER = '0xd2eE2d200d57007E6C62F29958bF43dc98075A47';
  constant PURCHASE_EVENT_ABI (line 7) | const PURCHASE_EVENT_ABI = 'event Purchased(address indexed buyer, uint2...
  constant MINT_EVENT_ABI (line 8) | const MINT_EVENT_ABI = 'event Mint(uint256 pieceId, uint256 price)'
  constant VRDGA_DEPLOYED_EVENT_ABI (line 9) | const VRDGA_DEPLOYED_EVENT_ABI = 'event VRDGADeployed (address contractA...
  function fetch (line 11) | async function fetch(options: FetchOptions) {

FILE: dexs/planemo-trading.ts
  constant EXTENDED_BUILDER_NAMES (line 5) | const EXTENDED_BUILDER_NAMES = ["Planemo Trading"];
  constant EXTENDED_BUILDER_ID (line 6) | const EXTENDED_BUILDER_ID = "114410";

FILE: dexs/plenty/index.ts
  type IVolumeall (line 6) | interface IVolumeall {

FILE: dexs/plunderswap/index.ts
  type IVolumeall (line 7) | interface IVolumeall {

FILE: dexs/polkadex/index.ts
  type IAPIResponse (line 5) | type IAPIResponse = {

FILE: dexs/polkaswap/index.ts
  type IGraphResponse (line 24) | interface IGraphResponse {

FILE: dexs/polymarket-us/index.ts
  constant BASE_URL (line 5) | const BASE_URL = "https://www.polymarketexchange.com/files/time-and-sales";
  type Trade (line 7) | interface Trade {
  function parseTradeCSV (line 14) | function parseTradeCSV(csv: string): Trade[] {
  function fetch (line 31) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/ponytaswap/index.ts
  type IVolumeall (line 9) | interface IVolumeall {

FILE: dexs/pool-party/index.ts
  constant VOLUME_URL (line 20) | const VOLUME_URL = "https://api-mainnet.cantonwallet.com/canton/pool-par...
  constant CUSD_INSTRUMENT_ID (line 29) | const CUSD_INSTRUMENT_ID = "481871d4-ca56-42a8-b2d3-4b7d28742946";

FILE: dexs/potatoswap-v3.ts
  constant SLOT0_ABI (line 16) | const SLOT0_ABI = "function slot0() view returns (uint160 sqrtPriceX96, ...
  function fetch (line 18) | async function fetch(_timestamp: number, _chainBlocks: any, options: Fet...

FILE: dexs/potatoswap.ts
  constant API_URL (line 6) | const API_URL = "https://v3.potatoswap.finance/api/pool/list-all";

FILE: dexs/predict-fun/index.ts
  constant EXCHANGE_CONTRACT_ADDRESSES (line 5) | const EXCHANGE_CONTRACT_ADDRESSES = [
  constant USDT_ADDRESS (line 12) | const USDT_ADDRESS = "0x55d398326f99059fF775485246999027B3197955";

FILE: dexs/primex-finance/utils.ts
  type ChainConfig (line 3) | interface ChainConfig {

FILE: dexs/printr-protocol/index.ts
  constant PRINTR_CONTRACT (line 6) | const PRINTR_CONTRACT = "0xb77726291b125515d0a7affeea2b04f2ff243172";
  constant START (line 7) | const START = '2025-10-14';
  constant TOKEN_TRADE_EVENT (line 9) | const TOKEN_TRADE_EVENT =
  constant GET_CURVE_ABI (line 12) | const GET_CURVE_ABI =
  constant PRINTR_SOLANA_CREATOR (line 15) | const PRINTR_SOLANA_CREATOR = "82VbBzGtb8v5wFx1TM6iaMmLyRSLy8WeqA123orjH...
  constant FEE_RATE (line 19) | const FEE_RATE = 1 / 100;

FILE: dexs/priority-trade/index.ts
  constant ROUTER (line 5) | const ROUTER = "0x89ad89c9d1fc32cbe204e5780f04cf9b396118eb";
  constant BUY_EVENT (line 7) | const BUY_EVENT = "event TokenBought(address indexed buyer, address inde...
  constant SELL_EVENT (line 8) | const SELL_EVENT = "event TokenSold(address indexed seller, address inde...

FILE: dexs/privex/index.ts
  type IGraphResponse (line 7) | interface IGraphResponse {

FILE: dexs/probable.ts
  constant EXCHANGE_CONTRACT_ADDRESS (line 5) | const EXCHANGE_CONTRACT_ADDRESS = "0xf99f5367ce708c66f0860b77b4331301a55...
  constant USDT_ADDRESS (line 6) | const USDT_ADDRESS = "0x55d398326f99059fF775485246999027B3197955";

FILE: dexs/proton-dex/index.ts
  type TradingPair (line 5) | interface TradingPair {

FILE: dexs/pump-swap/index.ts
  type IData (line 7) | interface IData {

FILE: dexs/pumpspace-v2/index.ts
  constant FACTORY_ADDRESS (line 26) | const FACTORY_ADDRESS = "0x26B42c208D8a9d8737A2E5c9C57F4481484d4616";

FILE: dexs/pumpspace-v3/index.ts
  constant V3_POOL_FACTORY (line 6) | const V3_POOL_FACTORY = "0xE749c1cA2EA4f930d1283ad780AdE28625037CeD";
  constant V3_POOL_LOGGER (line 7) | const V3_POOL_LOGGER = "0x77c8dfFE4130FE58e5C3c02a2E7ab6DB7f4F474f";
  constant V3_SWAP_EVENT (line 9) | const V3_SWAP_EVENT = "event Swap(address indexed pool, bool zeroForOne,...
  constant PROTOCOL_FEE_DENOMINATOR (line 10) | const PROTOCOL_FEE_DENOMINATOR = 10_000n;
  constant SWAP_FEE_DENOMINATOR (line 11) | const SWAP_FEE_DENOMINATOR = 1_000_000n;
  type Swap (line 13) | type Swap = {

FILE: dexs/punk.coffee/index.ts
  constant ROUTER_ADDRESS (line 5) | const ROUTER_ADDRESS = "0x9c0F3c0C20D10297cA4bFB50846f3242Ea2B9787";

FILE: dexs/puppyfun/index.ts
  constant TOKEN_ADDRESS (line 6) | const TOKEN_ADDRESS = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"
  constant WALLET_ADDRESS (line 7) | const WALLET_ADDRESS = "0x3f0F3359A168b90C7F45621Dde5A4cDc3C61529D"

FILE: dexs/quenta/index.ts
  function fetch (line 11) | async function fetch({ getFromBlock, getToBlock, chain, }: FetchOptions) {

FILE: dexs/quickswap-hydra/index.ts
  type IVolumeStat (line 13) | interface IVolumeStat {

FILE: dexs/quickswap-perps/index.ts
  type IVolumeStat (line 24) | interface IVolumeStat {

FILE: dexs/quickswap-v2.ts
  function fetch (line 23) | async function fetch(_: any, _1: any, { startOfDay }: FetchOptions) {

FILE: dexs/quickswap-v3.ts
  function fetch (line 47) | async function fetch(options: FetchOptions) {

FILE: dexs/quickswap-v4.ts
  constant HOLDERS_RATIO (line 9) | const HOLDERS_RATIO = 0.10;
  constant PROTOCOL_RATIO (line 10) | const PROTOCOL_RATIO = 0.0323;
  constant REVENUE_RATIO (line 11) | const REVENUE_RATIO = HOLDERS_RATIO + PROTOCOL_RATIO;
  function fetch (line 31) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/quipuswap/index.ts
  type IGraphResponse (line 23) | interface IGraphResponse {

FILE: dexs/raindex/index.ts
  type Orderbook (line 6) | type Orderbook = { address: string, start: string }
  type Orderbooks (line 7) | type Orderbooks = { v3: Orderbook[], v4: Orderbook[], v5: Orderbook[], v...
  constant ABI_V3 (line 128) | const ABI_V3 = {
  constant ABI_V4 (line 133) | const ABI_V4 = {
  function fetchV3Vol (line 173) | async function fetchV3Vol({ api, getLogs }: FetchOptions, dailyVolume: B...
  function fetchV4Vol (line 228) | async function fetchV4Vol({ api, getLogs }: FetchOptions, dailyVolume: B...
  function fetchV5_V6Vol (line 283) | async function fetchV5_V6Vol({ api, getLogs }: FetchOptions, dailyVolume...

FILE: dexs/ramses-hl-cl.ts
  constant RAM_TOKEN_CONTRACT (line 6) | const RAM_TOKEN_CONTRACT = "0x555570a286F15EbDFE42B66eDE2f724Aa1AB5555";
  constant XRAM_TOKEN_CONTRACT (line 7) | const XRAM_TOKEN_CONTRACT = "	0xAE6D5FcE541216BDA471D311425B5412D9f1DEb9";
  type IGraphRes (line 17) | interface IGraphRes {
  type IProtocolDayStats (line 30) | type IProtocolDayStats = Omit<IGraphRes, "clBribeRevenueUSD" | "legacyBr...
  type IVoteBribe (line 32) | interface IVoteBribe {
  type IToken (line 40) | interface IToken {
  function paginate (line 45) | async function paginate<T>(
  function getBribes (line 67) | async function getBribes(options: FetchOptions) {
  function getTokens (line 100) | async function getTokens(options: FetchOptions, tokens: string[]) {
  function fetchStats (line 139) | async function fetchStats(options: FetchOptions): Promise<IGraphRes> {
  function fetchProtocolDayStats (line 186) | async function fetchProtocolDayStats(
  type PoolType (line 212) | type PoolType = 'cl' | 'legacy';
  type PoolStats (line 214) | interface PoolStats {
  function getPoolStats (line 222) | function getPoolStats(stats: IGraphRes, poolType: PoolType): PoolStats {
  function createFetchHandler (line 241) | function createFetchHandler(poolType: PoolType) {
  function createClAdapter (line 313) | function createClAdapter(chain: string, start: string): SimpleAdapter {
  function createLegacyAdapter (line 325) | function createLegacyAdapter(chain: string, start: string): SimpleAdapter {

FILE: dexs/rarible/helper.ts
  constant MATCH_ORDERS_ABI (line 5) | const MATCH_ORDERS_ABI = `function matchOrders((address maker, ((bytes4 ...
  constant DIRECT_PURCHASE_ABI (line 6) | const DIRECT_PURCHASE_ABI = `function directPurchase((address sellOrderM...
  constant DIRECT_ACCEPT_BID_ABI (line 7) | const DIRECT_ACCEPT_BID_ABI = `function directAcceptBid((address bidMake...
  constant PROTOCOL_FEE_ABI (line 8) | const PROTOCOL_FEE_ABI = "function protocolFee() view returns (address r...
  constant ETH_ASSET_CLASS (line 17) | const ETH_ASSET_CLASS = "0xaaaebeba";
  constant NFT_CLASSES (line 18) | const NFT_CLASSES = new Set(["0x73ad2146", "0x973bb640"]);
  constant MATCH_ORDERS_ID (line 20) | const MATCH_ORDERS_ID = "0xe99a3f80";
  constant DIRECT_PURCHASE_ID (line 21) | const DIRECT_PURCHASE_ID = "0x0d5f7d35";
  constant DIRECT_ACCEPT_BID_ID (line 22) | const DIRECT_ACCEPT_BID_ID = "0x67d49a3b";
  function parseOriginFees (line 24) | function parseOriginFees(data: string): { account: string; bps: bigint }...
  function decodeMatchOrders (line 38) | function decodeMatchOrders(input: string) {
  function decodeDirectPurchase (line 71) | function decodeDirectPurchase(input: string) {
  function decodeDirectAcceptBid (line 80) | function decodeDirectAcceptBid(input: string) {
  function getDuneTrades (line 88) | async function getDuneTrades(options: FetchOptions, exchange: string): P...

FILE: dexs/rate-x/index.ts
  constant TRADING_FEE_RATE (line 7) | const TRADING_FEE_RATE = 0.01;
  constant PROTOCOL_FEE_SHARE (line 8) | const PROTOCOL_FEE_SHARE = 0.5;
  constant LP_FEE_SHARE (line 9) | const LP_FEE_SHARE = 0.5;

FILE: dexs/raydium/index.ts
  function addPoolData (line 49) | function addPoolData(ammPoolStandard: any[]) {

FILE: dexs/renegade-fi/index.ts
  type IVolumeData (line 6) | interface IVolumeData {
  type IApiResponse (line 11) | interface IApiResponse {

FILE: dexs/reya-dex.ts
  constant CONFIG (line 17) | const CONFIG = {

FILE: dexs/rfx-rfx-swap.ts
  type IGraphResponse (line 18) | interface IGraphResponse {

FILE: dexs/rfx-rfx-trade.ts
  type IGraphResponse (line 18) | interface IGraphResponse {

FILE: dexs/rho-protocol/index.ts
  constant ROUTER_CONTRACT (line 5) | const ROUTER_CONTRACT = '0xbEF0110560921824AF49dE900f2f0bF9ceb87E8C';
  constant TRADE_TOPIC (line 6) | const TRADE_TOPIC = '0xaba723c41393affffc6e975a8a24df016aaf3f97d475b9a48...
  constant CONTRACT_PROVIDER (line 7) | const CONTRACT_PROVIDER = '0xB5855E692465B6c1B5172fCaF59Ac67F20621A4d';
  constant ABI (line 8) | const ABI = {
  function getMarketIdToTokenMap (line 15) | async function getMarketIdToTokenMap(

FILE: dexs/ring-dex.ts
  type IRingDexConfig (line 6) | interface IRingDexConfig {

FILE: dexs/rise-launchpad.ts
  constant ENDPOINT (line 6) | const ENDPOINT = "https://public.rise.rich/public/defillama/dex-volume";
  type VolumeResponse (line 8) | interface VolumeResponse {

FILE: dexs/risex-perps/index.ts
  constant RISEX_API_URL (line 7) | const RISEX_API_URL = "https://api.rise.trade/api/v1";
  constant ONE_DAY_IN_SECONDS (line 9) | const ONE_DAY_IN_SECONDS = 60 * 60 * 24;
  constant NANOSECONDS_IN_SECOND (line 10) | const NANOSECONDS_IN_SECOND = 1000000000;

FILE: dexs/rocket/index.ts
  constant ROCKET_API (line 22) | const ROCKET_API = "https://beta.rocket-cluster-1.com";
  constant MAKER_FEE (line 23) | const MAKER_FEE = 0.0001;
  constant TAKER_FEE (line 24) | const TAKER_FEE = 0.0001;

FILE: dexs/rollie-finance/index.ts
  constant ENDPOINTS (line 5) | const ENDPOINTS: { [key: string]: string } = {
  constant USDC_DECIMALS (line 8) | const USDC_DECIMALS: { [key: string]: number } = {

FILE: dexs/ryze/index.ts
  type IPoolSnapshot (line 13) | interface IPoolSnapshot {

FILE: dexs/saber/index.ts
  function fetch (line 5) | async function fetch(options: FetchOptions) {

FILE: dexs/saddle-finance/index.ts
  constant POOL_REGISTRY_BYTES (line 23) | const POOL_REGISTRY_BYTES = "0x506f6f6c526567697374727900000000000000000...
  function fetch (line 25) | async function fetch(options: FetchOptions) {

FILE: dexs/sai-perps/index.ts
  function fetch (line 7) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/sailor-finance.ts
  constant GECKOTERMINAL_POOLS_URL (line 6) | const GECKOTERMINAL_POOLS_URL =
  constant DEFAULT_FEE_RATE (line 8) | const DEFAULT_FEE_RATE = 0.003;
  constant PROTOCOL_FEE_SHARE (line 9) | const PROTOCOL_FEE_SHARE = 0.16;
  constant MAX_PAGES (line 10) | const MAX_PAGES = 20;

FILE: dexs/sandglass/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/saphyre-rfq/index.ts
  constant API_BASE (line 5) | const API_BASE = "https://rfq.saphyre.xyz";

FILE: dexs/saros-dlmm.ts
  function fetch (line 12) | async function fetch() {

FILE: dexs/saros/index.ts
  function fetch (line 6) | async function fetch(_: any, _1: any, { startTimestamp, dateString }: Fe...

FILE: dexs/satori/index.ts
  constant DATA_URL (line 6) | const DATA_URL = 'https://trade.satori.finance/api/data-center/pub/overv...
  type VolumeInfo (line 7) | interface VolumeInfo {
  function fetch (line 33) | async function fetch({ chain }: FetchOptions) {

FILE: dexs/saucerswap/index.ts
  constant API_INFLATED_DAYS (line 13) | const API_INFLATED_DAYS = [

FILE: dexs/seer/index.ts
  type chainAddressInterface (line 6) | interface chainAddressInterface {
  function fetch (line 26) | async function fetch(options: FetchOptions) {

FILE: dexs/seiyan-fun/index.ts
  constant SEIYAN_FUN_BASE_URL (line 5) | const SEIYAN_FUN_BASE_URL = "https://seiyan.fun/api/public/v1";
  constant SEI_PACIFIC_CAIP_CHAIN_ID (line 6) | const SEI_PACIFIC_CAIP_CHAIN_ID = "cosmos:sei-pacific-1";
  constant SEIYAN_FUN_INITIAL_TIMESTAMP (line 7) | const SEIYAN_FUN_INITIAL_TIMESTAMP = 1722470400;

FILE: dexs/shadow-exchange.ts
  constant SHADOW_TOKEN_CONTRACT (line 12) | const SHADOW_TOKEN_CONTRACT = "0x3333b97138d4b086720b5ae8a7844b1345a33333";
  constant XSHADOW_TOKEN_CONTRACT (line 13) | const XSHADOW_TOKEN_CONTRACT = "0x5050bc082FF4A74Fb6B0B04385dEfdDB114b24...
  constant CONFIG (line 20) | const CONFIG = {

FILE: dexs/shadow-legacy.ts
  constant CONFIG (line 11) | const CONFIG = {

FILE: dexs/shell-protocol/constants.ts
  constant POOL_DATA (line 2) | const POOL_DATA = {
  constant POOL_DATA_V3 (line 211) | const POOL_DATA_V3 = {
  constant TOKEN_NAMES (line 958) | const TOKEN_NAMES = {
  constant MAINNET_SUBGRAPH_URL (line 1025) | const MAINNET_SUBGRAPH_URL = sdk.graph.modifyEndpoint('H6vTCuujLYzXdgGDb...
  constant MAINNET_V3_SUBGRAPH_URL (line 1026) | const MAINNET_V3_SUBGRAPH_URL = "https://api.studio.thegraph.com/query/4...
  constant MAINNET_BLOCKS_URL (line 1027) | const MAINNET_BLOCKS_URL = sdk.graph.modifyEndpoint('3mQwWddUyzqxqMkb1HM...
  constant COIN_GECKO_IDS (line 1029) | const COIN_GECKO_IDS = {

FILE: dexs/shell-protocol/helpers.ts
  function defineComputesQuery (line 3) | function defineComputesQuery(poolAddress: string, timestamp: number, end...
  function definePoolBalancesQuery (line 14) | function definePoolBalancesQuery(poolAddress: string, oceanId: string, b...
  function getPrices (line 31) | async function getPrices(chain: string): Promise<{ [key: string]: { usd:...
  function getCurveAnalytics (line 67) | async function getCurveAnalytics(chain: string, prices: { [key: string]:...
  function getBalancerAnalytics (line 104) | async function getBalancerAnalytics(chain: string, poolName: string, ext...
  function getPoolData (line 126) | async function getPoolData(
  function blockQuery (line 295) | function blockQuery(timestamp: number): string {
  function getBlocks (line 306) | async function getBlocks(date: number, chain: string): Promise<number> {
  function queryPoolBalances (line 328) | async function queryPoolBalances(
  function queryPoolInteractions (line 358) | async function queryPoolInteractions(chain: string, poolName: string, ve...
  function getTokenBalance (line 408) | async function getTokenBalance(chain: string, pool: string, version: str...
  function getVolume (line 444) | async function getVolume(timestamp: number): Promise<number> {

FILE: dexs/shiny/index.ts
  constant PAYMENT_RECEIVED_V2 (line 21) | const PAYMENT_RECEIVED_V2 =
  constant PAYMENT_RECEIVED_V1 (line 23) | const PAYMENT_RECEIVED_V1 =
  constant TOKEN_SOLD_BACK (line 25) | const TOKEN_SOLD_BACK =

FILE: dexs/shroomy-protocol/index.ts
  constant SHROOMY_AGGREGATOR_ADDRESS (line 6) | const SHROOMY_AGGREGATOR_ADDRESS = "0x6cAcD722b95C1a5D055a3A45932C422460...

FILE: dexs/silverswap/index.ts
  constant LINKS (line 7) | const LINKS: { [key: string]: any } = {

FILE: dexs/simpledex/index.ts
  constant SUMMARY_URL (line 5) | const SUMMARY_URL = "https://indexer.protonnz.com/api/defillama/summary";

FILE: dexs/sithswap/index.ts
  type DayData (line 6) | interface DayData {
  constant URL (line 12) | const URL = 'https://api.sithswap.info/';

FILE: dexs/slingshot/index.ts
  type TContract (line 5) | type TContract = {
  type ILog (line 9) | interface ILog {

FILE: dexs/smardex-usdn/index.ts
  constant CONFIG (line 7) | const CONFIG = {

FILE: dexs/sodex-perps/index.ts
  constant API_BASE (line 5) | const API_BASE = "https://data-api.sodex.com/api/defillama";

FILE: dexs/sodex-spot/index.ts
  constant API_BASE (line 5) | const API_BASE = "https://data-api.sodex.com/api/defillama";

FILE: dexs/someswap/index.ts
  constant SOMESWAP_API_BASE (line 5) | const SOMESWAP_API_BASE = process.env.SOMESWAP_API_BASE ?? "https://api-...

FILE: dexs/somnex-perps.ts
  function fetch (line 12) | async function fetch(_: any, _1: any, { startOfDay }: FetchOptions) {

FILE: dexs/somnia-exchange.ts
  function fetch (line 16) | async function fetch() {

FILE: dexs/sour/index.ts
  constant SOUR_API_URL (line 8) | const SOUR_API_URL = 'https://app.sour.finance/api';

FILE: dexs/spacedex-derivatives.ts
  type IGraphResponse (line 21) | interface IGraphResponse {

FILE: dexs/spacedex-swap.ts
  type IGraphResponse (line 20) | interface IGraphResponse {

FILE: dexs/spacewhale/index.ts
  constant URL (line 8) | const URL = sdk.graph.modifyEndpoint('C9xUT6c9uRH4f4yT6aMvhZizk89GpgcUBj...

FILE: dexs/sparkdex-perps/index.ts
  type IVolumeStat (line 8) | interface IVolumeStat {
  type IFeeStat (line 14) | interface IFeeStat {
  type ITradingStat (line 20) | interface ITradingStat {

FILE: dexs/spartan/index.ts
  type IGraphResponse (line 22) | interface IGraphResponse {

FILE: dexs/spectra-v2.ts
  constant DEFAULT_SUBGRAPH_LIMIT (line 6) | const DEFAULT_SUBGRAPH_LIMIT = 1_000;
  constant GQL_QUERIES (line 8) | const GQL_QUERIES = {
  type Address (line 142) | type Address = `0x${string}`;
  type Transaction (line 143) | type Transaction = {
  type VotingReward (line 155) | type VotingReward = {
  constant GOVERNANCE_SUBGRAPH_URL (line 166) | const GOVERNANCE_SUBGRAPH_URL =

FILE: dexs/spectrum/index.ts
  type IResponse (line 6) | interface IResponse {
  type IResponseERGO (line 10) | interface IResponseERGO {

FILE: dexs/spicyswap/index.ts
  type IResponse (line 7) | interface IResponse {

FILE: dexs/squaretower.ts
  constant MARKET_ID (line 5) | const MARKET_ID = "0x56cb0ef0b9d59125373112523b0adfc446dff989268547fa1a3...
  constant INJECTIVE_TRADES_V2 (line 6) | const INJECTIVE_TRADES_V2 = "https://sentry.exchange.grpc-web.injective....
  type DerivativeTradeV2 (line 9) | interface DerivativeTradeV2 {
  type TradesResponseV2 (line 19) | interface TradesResponseV2 {
  type MarketMetaResponseV1 (line 24) | interface MarketMetaResponseV1 {
  function getPriceScale (line 31) | async function getPriceScale(): Promise<number> {
  function fetchTradesSumNotionalUSD (line 37) | async function fetchTradesSumNotionalUSD(startMs: number, endMs: number)...

FILE: dexs/stabble-clmm/index.ts
  type DailyStats (line 7) | interface DailyStats {

FILE: dexs/stabble/index.ts
  type DailyStats (line 7) | interface DailyStats {

FILE: dexs/standard-mode/index.ts
  type IPair (line 8) | interface IPair {

FILE: dexs/standard-spot/index.ts
  type IPair (line 15) | interface IPair {

FILE: dexs/standx/index.ts
  type SymbolInfo (line 9) | interface SymbolInfo {
  type MarketInfo (line 14) | interface MarketInfo {

FILE: dexs/starkdefi/index.ts
  type TVolume (line 6) | type TVolume = Record<string, number>;

FILE: dexs/steamm.ts
  type PoolInfo (line 7) | interface PoolInfo {
  type Volume (line 12) | interface Volume {
  function fetchPoolsStats (line 26) | async function fetchPoolsStats(startTimestamp: number, endTimestamp: num...

FILE: dexs/stellarx/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/storyhunt-v3.ts
  function fetch (line 9) | async function fetch({ chain, getStartBlock, getEndBlock }: FetchOptions) {

FILE: dexs/strike-finance/index.ts
  function fetch (line 5) | async function fetch(options: FetchOptions) {

FILE: dexs/sudofinance/index.ts
  type IUrl (line 5) | type IUrl = {
  type IVolume (line 13) | interface IVolume {

FILE: dexs/sundaeswap/index.ts
  type IVolumeall (line 7) | interface IVolumeall {

FILE: dexs/sunperp/index.ts
  type respData (line 8) | interface respData {

FILE: dexs/sunswap-v2/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/sunswap-v3/index.ts
  type IValue (line 7) | interface IValue {

FILE: dexs/sunswap/index.ts
  type IVolumeall (line 7) | interface IVolumeall {
  function fetch (line 25) | async function fetch() {

FILE: dexs/sushi-aptos/index.ts
  type ISwapEventData (line 8) | interface ISwapEventData {

FILE: dexs/swaap-v1.ts
  constant PRICE_DECIMALS (line 9) | const PRICE_DECIMALS = 8;
  constant TOKEN_DECIMALS (line 11) | const TOKEN_DECIMALS: { [key: string]: number } = {

FILE: dexs/swaap-v2.ts
  type ChainConfig (line 5) | interface ChainConfig {
  type Data (line 75) | interface Data {

FILE: dexs/swap-coffee/index.ts
  function normalizeAddress (line 5) | function normalizeAddress(address: string): string {

FILE: dexs/swapbased-perps.ts
  type IGraphResponse (line 30) | interface IGraphResponse {
  type IGraphResponseOI (line 40) | interface IGraphResponseOI {

FILE: dexs/swapline/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/swaps-io/index.ts
  constant SUPPORTED_CHAIN_MAPPING (line 5) | const SUPPORTED_CHAIN_MAPPING: { [chain: Chain]: number } = {
  constant BASE_URL (line 18) | const BASE_URL = 'https://explorer.prod.swaps.io'
  constant AGGERAGATE_ENDPOINT (line 19) | const AGGERAGATE_ENDPOINT = '/api/v0/aggregate'
  constant SWAPS_IO_LAUNCH_TIME (line 20) | const SWAPS_IO_LAUNCH_TIME = '2024-01-01'
  function fetchTotalVolumeCached (line 34) | async function fetchTotalVolumeCached(chainId: number) {
  function get_fetch_for_network (line 55) | function get_fetch_for_network(chain: Chain) {

FILE: dexs/swop/index.ts
  constant URL (line 7) | const URL = "https://backend.swop.fi/pools"
  type IInfo (line 17) | interface IInfo {
  type IVolume (line 22) | interface IVolume {
  type IAPIResponse (line 29) | interface IAPIResponse {

FILE: dexs/sxbet/index.ts
  constant SXBET_API (line 5) | const SXBET_API = "https://api.prod.sx.bet/analytics"
  function fetch (line 7) | async function fetch(_a: any, _b: any, options: FetchOptions): Promise<F...

FILE: dexs/symmetric/index.ts
  type IPool (line 15) | interface IPool {
  type IPoolSnapshot (line 19) | interface IPoolSnapshot {
  type TTime (line 56) | type TTime = {

FILE: dexs/symmio/index.ts
  type ChainConfig (line 4) | interface ChainConfig {

FILE: dexs/syncswap/index.ts
  constant FEE_DENOMINATOR (line 16) | const FEE_DENOMINATOR = 100_000;
  constant MAX_SWAP_FEE (line 17) | const MAX_SWAP_FEE = 10_000;
  constant PAGE_SIZE (line 18) | const PAGE_SIZE = 1000;
  constant PAIR_BATCH_SIZE (line 19) | const PAIR_BATCH_SIZE = 50;
  function fetch (line 21) | async function fetch(_t: any, _b: any, options: FetchOptions) {

FILE: dexs/synfutures-v1/index.ts
  function dayIdFromTimestamp (line 23) | function dayIdFromTimestamp(timestamp: number): number {

FILE: dexs/synfutures-v2/index.ts
  type TContracts (line 6) | type TContracts = {
  function twosComplementHexToDecimal (line 28) | function twosComplementHexToDecimal(hexValue: string): number {

FILE: dexs/synfutures-v3/index.ts
  function convertDecimals (line 17) | function convertDecimals(value: string | number, decimals: number) {

FILE: dexs/synthetify/index.ts
  type IVolumeall (line 9) | interface IVolumeall {

FILE: dexs/synthetix-v4/index.ts
  constant API (line 5) | const API = "https://papi.synthetix.io/v1/info";
  constant DAY_MS (line 6) | const DAY_MS = 24 * 60 * 60 * 1000;

FILE: dexs/tangleswap/index.ts
  function fetch (line 23) | async function fetch({ createBalances, getLogs, api, chain }: FetchOptio...

FILE: dexs/tapp-exchange/index.ts
  constant URL (line 7) | const URL = 'https://api.tapp.exchange/api/v1'
  type TappDefillamaDimension (line 10) | interface TappDefillamaDimension {

FILE: dexs/tea-fi.ts
  constant ONE_INCH_AGGREGATOR (line 5) | const ONE_INCH_AGGREGATOR = "0x111111125421cA6dc452d289314280a0f8842A65";
  constant PROXY_TRADE_ADDRESS_POL (line 6) | const PROXY_TRADE_ADDRESS_POL = "0xbec2b1fd0aa1f13046be83547abf227470290...
  constant PROXY_TRADE_ADDRESS_ETH (line 7) | const PROXY_TRADE_ADDRESS_ETH = "0x43f46e43a7c186ec898C8fECE5325A83DD3C8...
  constant SYNTH_TREASURY_POL (line 8) | const SYNTH_TREASURY_POL = "0x1FC39644C58396e567aa44840cF5E5c9696a9a1c";
  constant SYNTH_TREASURY_ETH (line 9) | const SYNTH_TREASURY_ETH = "0x23Ca477089466Ac4D563a89E4F0df8C46B92735d";
  function getParams (line 15) | function getParams(chain: string) {
  function groupLogsByTransactionHash (line 26) | function groupLogsByTransactionHash(logs: any) {

FILE: dexs/tealswap/index.ts
  type IRawData (line 8) | interface IRawData {
  type IVolumeall (line 12) | interface IVolumeall {

FILE: dexs/teleswap/index.ts
  type ChainConfig (line 4) | interface ChainConfig {
  type UnwrapEvent (line 12) | interface UnwrapEvent {
  type WrapEvent (line 18) | interface WrapEvent {
  type WrapAndSwapV1Event (line 23) | interface WrapAndSwapV1Event {
  type WrapAndSwapV2Event (line 29) | interface WrapAndSwapV2Event {
  constant CHAIN_CONFIGS (line 36) | const CHAIN_CONFIGS: Partial<Record<CHAIN, ChainConfig>> = {
  constant EVENT_SIGNATURES (line 67) | const EVENT_SIGNATURES = {
  constant FEE_INDICES (line 78) | const FEE_INDICES = {
  function processUnwrapEvents (line 83) | async function processUnwrapEvents(
  function processWrapAndSwapEvents (line 107) | async function processWrapAndSwapEvents(
  function processWrapEvents (line 141) | async function processWrapEvents(
  function fetch (line 165) | async function fetch(options: FetchOptions): Promise<FetchResult> {

FILE: dexs/tempo-fee-amm.ts
  constant FEE_MANAGER (line 38) | const FEE_MANAGER = '0xfeec000000000000000000000000000000000000';
  constant FEE_BPS (line 43) | const FEE_BPS = 25n;
  constant BASIS_POINTS (line 44) | const BASIS_POINTS = 10000n;

FILE: dexs/tempo-stable-dex/index.ts
  constant STABLECOIN_DEX (line 4) | const STABLECOIN_DEX = "0xdec0000000000000000000000000000000000000";

FILE: dexs/tessera/index.ts
  constant TESSERA_SWAP_ADDRESS (line 22) | const TESSERA_SWAP_ADDRESS = "0x55555522005BcAE1c2424D474BfD5ed477749E3e"

FILE: dexs/testing-please-ignore-2/index.ts
  function fetch (line 31) | async function fetch(_1: number, _: any,  options: FetchOptions): Promis...

FILE: dexs/thalaswap-v2/index.ts
  type IVolumeall (line 25) | interface IVolumeall {

FILE: dexs/thalaswap-v3.ts
  type IVolumeall (line 25) | interface IVolumeall {

FILE: dexs/thalaswap/index.ts
  type IVolumeall (line 25) | interface IVolumeall {

FILE: dexs/thales/abis.ts
  constant OVERTIME_EVENT_ABI (line 1) | const OVERTIME_EVENT_ABI = {

FILE: dexs/thales/config.ts
  constant OVERTIME_CONTRACT_ADDRESSES (line 4) | const OVERTIME_CONTRACT_ADDRESSES: any = {
  constant LP_CONTRACT_COLLATERAL_MAPPING (line 30) | const LP_CONTRACT_COLLATERAL_MAPPING: Record<string, Record<string, stri...

FILE: dexs/thales/eventArgs.ts
  type ITicketCreatedEvent (line 1) | interface ITicketCreatedEvent {
  type IBoughtFromAmmEvent (line 11) | interface IBoughtFromAmmEvent {
  type IChainedMarketCreatedEvent (line 21) | interface IChainedMarketCreatedEvent {
  type ISpeedMarketCreatedEvent (line 34) | interface ISpeedMarketCreatedEvent {
  type ISafeBoxFeePaidEvent (line 46) | interface ISafeBoxFeePaidEvent {
  type ISafeBoxSharePaidEvent (line 52) | interface ISafeBoxSharePaidEvent {

FILE: dexs/thales/index.ts
  constant CONTRACT_EVENT_MAPPING (line 23) | const CONTRACT_EVENT_MAPPING = {
  function getChainContractsToQuery (line 31) | function getChainContractsToQuery(
  function fetch (line 52) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: dexs/thales/parsers.ts
  function parseTicketCreatedEvent (line 11) | function parseTicketCreatedEvent(
  function parseBoughtFromAmmEvent (line 21) | function parseBoughtFromAmmEvent(
  function parseSpeedMarketCreatedEvent (line 31) | function parseSpeedMarketCreatedEvent(
  function parseChainedMarketCreatedEvent (line 41) | function parseChainedMarketCreatedEvent(
  function parseSafeBoxFeePaidEvent (line 52) | function parseSafeBoxFeePaidEvent(
  function parseSafeBoxSharePaidEvent (line 60) | function parseSafeBoxSharePaidEvent(

FILE: dexs/thirdfy.ts
  constant SUBGRAPH_URL (line 5) | const SUBGRAPH_URL = "https://api.studio.thegraph.com/query/47039/thirdf...
  type PoolDayData (line 7) | interface PoolDayData {

FILE: dexs/thorchain-dex.ts
  type IVolumeall (line 7) | interface IVolumeall {

FILE: dexs/thorswap/index.ts
  type providers (line 5) | enum providers {

FILE: dexs/thorwallet/index.ts
  type IVolumeall (line 9) | interface IVolumeall {

FILE: dexs/tinyman/index.ts
  constant URL (line 5) | const URL = "https://mainnet.analytics.tinyman.org/api/v1/general-statis...
  type IAPIResponse (line 7) | interface IAPIResponse {

FILE: dexs/tlx-finance/index.ts
  constant FACTORY (line 12) | const FACTORY = "0x5Dd85f51e9fD6aDE8ecc216C07919ecD443eB14d";
  constant MINT_EVENT (line 13) | const MINT_EVENT = "event Minted(address indexed account, uint256 levera...
  constant REDEEM_EVENT (line 14) | const REDEEM_EVENT = "event Redeemed(address indexed account, uint256 le...

FILE: dexs/tonco/index.ts
  constant GRAPHQL_ENDPOINT (line 5) | const GRAPHQL_ENDPOINT = 'https://indexer.tonco.io';
  constant WHITELIST_JETTONS (line 7) | const WHITELIST_JETTONS = [

FILE: dexs/topstrike/index.ts
  constant TRADING_CONTRACT (line 5) | const TRADING_CONTRACT = "0xf3393dC9E747225FcA0d61BfE588ba2838AFb077";
  constant PACKSHOP_CONTRACT (line 6) | const PACKSHOP_CONTRACT = "0xd303fccf599648f89ccfa483f10da4a92e3dabd5";
  constant TRADE_EVENT_ABI (line 8) | const TRADE_EVENT_ABI =
  constant REFERRAL_FEE_PAID_ABI (line 11) | const REFERRAL_FEE_PAID_ABI =
  constant ETH_PRIZE_DEPOSITED_ABI (line 14) | const ETH_PRIZE_DEPOSITED_ABI =
  constant TOKENS_CLAIMED_ABI (line 20) | const TOKENS_CLAIMED_ABI =
  constant GET_CLAIM_CONDITION_ABI (line 23) | const GET_CLAIM_CONDITION_ABI =
  constant NATIVE_ETH (line 26) | const NATIVE_ETH = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
  constant NULL_ADDRESS (line 27) | const NULL_ADDRESS = "0x0000000000000000000000000000000000000000";

FILE: dexs/toros/index.ts
  constant CONFIG (line 22) | const CONFIG = {

FILE: dexs/trado-spot/index.ts
  type IVolumeall (line 9) | interface IVolumeall {
  type TChains (line 15) | type TChains = {
  type TAdapter (line 18) | type TAdapter = {

FILE: dexs/trado/index.ts
  function getBlock (line 8) | async function getBlock(timestamp: number) {
  function getTotalVolume (line 28) | async function getTotalVolume(timestamp: number) {

FILE: dexs/treadfi-perps.ts
  constant HL_BUILDER_ADDRESS (line 9) | const HL_BUILDER_ADDRESS = "0x999a4b5f268a8fbf33736feff360d462ad248dbf";
  constant EXTENDED_BUILDER_NAMES (line 10) | const EXTENDED_BUILDER_NAMES = ["Tread.fi"];
  constant TREADTOOLS_API_URL (line 11) | const TREADTOOLS_API_URL = "https://treadtools.vercel.app/api/defillama-...
  constant TREADTOOLS_FEE_RATE (line 14) | const TREADTOOLS_FEE_RATE = 0.0002;
  type TreadToolsApiResponse (line 16) | interface TreadToolsApiResponse {

FILE: dexs/tristero/index.ts
  type RouterConfig (line 7) | type RouterConfig = {
  constant ROUTER_SCHEDULE (line 14) | const ROUTER_SCHEDULE: RouterConfig[] = [
  constant WRAPPED_NATIVE_TOKENS (line 46) | const WRAPPED_NATIVE_TOKENS: Record<string, string | undefined> = {

FILE: dexs/truemarkets.ts
  constant TRUTH_MARKET_MANAGER (line 7) | const TRUTH_MARKET_MANAGER = '0x61A98Bef11867c69489B91f340fE545eEfc695d7'
  constant FEE_COLLECTOR (line 8) | const FEE_COLLECTOR = '0x39339E149c2D916aa899Bf73D2Debb15F4755d9D'
  constant UNISWAP_V4_POOL_MANAGER (line 9) | const UNISWAP_V4_POOL_MANAGER = '0x498581fF718922c3f8e6A244956aF099B2652...
  constant UNISWAP_V4_POSITION_MANAGER (line 10) | const UNISWAP_V4_POSITION_MANAGER = '0x7c5f5a4bbd8fd63184577525326123b51...
  constant TYD_TOKEN (line 11) | const TYD_TOKEN = '0xb13CF163d916917d9cD6E836905cA5f12a1dEF4B'.toLowerCa...
  constant USDC_TOKEN (line 12) | const USDC_TOKEN = ADDRESSES.base.USDC.toLowerCase()
  constant ZERO_ADDRESS (line 13) | const ZERO_ADDRESS = ADDRESSES.null
  constant ABI (line 15) | const ABI = {
  constant SWAP_TOPIC_V4 (line 31) | const SWAP_TOPIC_V4 = '0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708...
  function fetch (line 34) | async function fetch(options: FetchOptions): Promise<FetchResult> {

FILE: dexs/ttswap/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/turbolev/index.ts
  constant API_URL (line 5) | const API_URL = "https://api-boolean-sei.capylabs.io/api/v1/defillama/de...
  type DerivativeMetric (line 7) | interface DerivativeMetric {
  type DerivativeResponse (line 14) | interface DerivativeResponse {

FILE: dexs/turbos/index.ts
  type IUrl (line 7) | type IUrl = {
  type IVolume (line 15) | interface IVolume {

FILE: dexs/txflow-perps/index.ts
  function fetch (line 5) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: dexs/typus-perp/index.ts
  function getChainData (line 5) | async function getChainData(options: FetchOptions): Promise<FetchResultV...

FILE: dexs/umbra/index.ts
  type VolumeItem (line 5) | type VolumeItem = {
  type VolumeResponse (line 10) | type VolumeResponse = {

FILE: dexs/unidex-unidex.ts
  type TChainIDs (line 7) | type TChainIDs = { [key in Chain]?: number; };
  type IDayProduct (line 18) | interface IDayProduct {

FILE: dexs/uniswap-v2.ts
  function getLogAdapterConfig (line 117) | function getLogAdapterConfig(options: FetchOptions) {

FILE: dexs/uniswap-v3.ts
  type TStartTime (line 27) | type TStartTime = {
  constant FEE_SWITCH_DATE (line 43) | const FEE_SWITCH_DATE: Record<string, string> = {
  type IOkuResponse (line 77) | interface IOkuResponse {
  function customUniswapGetLogsAdapter (line 226) | async function customUniswapGetLogsAdapter(props: { options: FetchOption...
  function getRevenueShare (line 275) | function getRevenueShare(fee: number, options: FetchOptions): number {
  function fetchDune (line 332) | async function fetchDune(options: FetchOptions) {

FILE: dexs/uniswap-v4.ts
  type IUniswapConfig (line 62) | interface IUniswapConfig {
  type IPool (line 70) | interface IPool {
  function getPoolKey (line 223) | function getPoolKey(poolId: string): string {
  function fetch (line 227) | async function fetch(options: FetchOptions) {

FILE: dexs/upscale/index.ts
  function fetch (line 6) | async function fetch(_a: any, b_: any, options: FetchOptions): Promise<F...

FILE: dexs/valantis-stex/index.ts
  function fetch (line 10) | async function fetch(options: FetchOptions) {

FILE: dexs/valiant-trade/index.ts
  constant CONFIG (line 5) | const CONFIG: Record<string, { url: string, start: string }> = {
  function fetch (line 12) | async function fetch(_a: number, _b: any, options: FetchOptions) {

FILE: dexs/vanswap/index.ts
  type IVolumeall (line 7) | interface IVolumeall {

FILE: dexs/vapordex-v2.ts
  constant FACTORY (line 5) | const FACTORY = "0x62B672E531f8c11391019F6fba0b8B6143504169";

FILE: dexs/variational-omni/index.ts
  constant URL (line 5) | const URL =

FILE: dexs/veax/index.ts
  constant POOLS_SERVICE_URL (line 5) | const POOLS_SERVICE_URL = "https://veax-liquidity-pool.veax.com/v1/rpc";

FILE: dexs/velar.ts
  constant URL (line 6) | const URL = "https://gateway.velar.network/watcherapp/pool";

FILE: dexs/velodrome-slipstream/index.ts
  type IForSwap (line 37) | interface IForSwap {
  type ILog (line 45) | interface ILog {

FILE: dexs/vexchange/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/vinunft/index.ts
  constant MARKETPLACE (line 6) | const MARKETPLACE = '0xcA396A95E0EB8B6804e25F9db131780a60564047'

FILE: dexs/vinuswap/index.ts
  constant V1_POOLS (line 8) | const V1_POOLS = [
  constant FACTORY (line 17) | const FACTORY = '0xd74dEe1C78D5C58FbdDe619b707fcFbAE50c3EEe'

FILE: dexs/volmex/index.ts
  constant COLLATERALIZED_EVENT (line 4) | const COLLATERALIZED_EVENT =
  constant REDEEMED_EVENT (line 6) | const REDEEMED_EVENT =
  constant INDEX_REGISTERED_EVENT (line 8) | const INDEX_REGISTERED_EVENT =
  constant MINT_VOLUME (line 11) | const MINT_VOLUME = "Mint Volume";
  constant REDEEM_VOLUME (line 12) | const REDEEM_VOLUME = "Redeem Volume";
  constant MINT_REDEEM_FEES (line 13) | const MINT_REDEEM_FEES = "Mint/Redeem Fees";
  constant MINT_REDEEM_FEES_TO_TREASURY (line 14) | const MINT_REDEEM_FEES_TO_TREASURY = "Mint/Redeem Fees To Treasury";
  type FactoryConfig (line 16) | type FactoryConfig = { factory: string; fromBlock: number };
  constant FACTORIES (line 18) | const FACTORIES: Record<string, FactoryConfig> = {

FILE: dexs/volta-markets/index.ts
  type IGraphResponse (line 32) | interface IGraphResponse {
  type IGraphResponseOI (line 40) | interface IGraphResponseOI {

FILE: dexs/voodoo-trade-derivatives.ts
  type IGraphResponse (line 18) | interface IGraphResponse {

FILE: dexs/voodoo-trade-swap.ts
  type IGraphResponse (line 17) | interface IGraphResponse {

FILE: dexs/wasabi-prop-amm/index.ts
  constant FACTORY (line 5) | const FACTORY = "0x851fc799c9f1443a2c1e6b966605a80f8a1b1bf2";
  function fetch (line 10) | async function fetch(options: FetchOptions) {

FILE: dexs/web3world/index.ts
  type IWeb3WorldPoolsStats (line 4) | interface IWeb3WorldPoolsStats {

FILE: dexs/wemix.fi/index.ts
  type IVolumeall (line 8) | interface IVolumeall {

FILE: dexs/wingriders/index.ts
  type IResponse (line 13) | interface IResponse {
  function fetchVolume (line 17) | async function fetchVolume(timestamp: number , _: ChainBlocks, { createB...

FILE: dexs/wombat-exchange/index.ts
  function fetch (line 168) | async function fetch(options: FetchOptions) {

FILE: dexs/woofi/index.ts
  type TStartTime (line 28) | type TStartTime = {
  type FetchResult (line 50) | interface FetchResult {

FILE: dexs/worldinc-perps/worldinc.ts
  constant COMPOSITE_EXCHANGE (line 6) | const COMPOSITE_EXCHANGE = "0x5e3Ae52EbA0F9740364Bd5dd39738e1336086A8b";
  constant SPOT_PERP_TRADE_EVENT (line 9) | const SPOT_PERP_TRADE_EVENT = "event NewTrade(uint64 indexed buyer, uint...
  constant INTEREST_PAID_EVENT (line 10) | const INTEREST_PAID_EVENT = "event InterestPaid(uint64 indexed positionI...
  constant LEND_POSITION_CLOSED_EVENT (line 12) | const LEND_POSITION_CLOSED_EVENT = "event LendPositionClosed(uint64 inde...
  constant LEND_POSITION_CHANGED_EVENT (line 13) | const LEND_POSITION_CHANGED_EVENT = "event LendPositionChanged(uint64 in...
  constant LIQUIDATION_EVENT (line 15) | const LIQUIDATION_EVENT = "event Liquidation(uint64 indexed userId, uint...
  constant ABI_GET_PERPS (line 17) | const ABI_GET_PERPS = 'function getPerpOrderBook(uint32 token1, uint32 t...
  constant ABI_GET_SPOT (line 18) | const ABI_GET_SPOT = 'function getSpotOrderBook(uint32 token1, uint32 to...
  constant ABI_GET_LEND (line 19) | const ABI_GET_LEND = 'function getLendOrderBook(uint32 tokenId) external...
  constant ABI_GET_TOKEN_CONFIGS (line 20) | const ABI_GET_TOKEN_CONFIGS = 'function readTokenConfig(uint32 tokenId) ...
  constant ABI_GET_LEND_POSITION (line 21) | const ABI_GET_LEND_POSITION = 'function readLendingPosition(uint64 posit...
  constant METRICS (line 23) | const METRICS = {
  type OrderbookMarket (line 30) | interface OrderbookMarket {
  type Orderbooks (line 36) | interface Orderbooks {
  constant MASK_64 (line 52) | const MASK_64 = BigInt("0xFFFFFFFFFFFFFFFF");
  constant MASK_32 (line 53) | const MASK_32 = BigInt("0xFFFFFFFF");
  constant MASK_128 (line 54) | const MASK_128 = (1n << 128n) - 1n;
  constant USDM_TOKEN_ID (line 55) | const USDM_TOKEN_ID = 1;
  function parseMatchQuantities (line 57) | function parseMatchQuantities(smq: bigint) {
  function positionRawToErc20Raw (line 65) | function positionRawToErc20Raw(raw: bigint, positionDecimals: number, er...
  function parseInterestPaidData (line 72) | function parseInterestPaidData(interestAndFees: bigint) {
  function parseLiquidationPayoffQuantity (line 78) | function parseLiquidationPayoffQuantity(liquidatoinPayoff: bigint): bigi...
  function tokenIdFromLendMatch (line 82) | function tokenIdFromLendMatch(lendMatchRaw: bigint): number {
  function tokenIdFromLendingEventData (line 86) | function tokenIdFromLendingEventData(lendingEventDataRaw: bigint): number {
  function vaultRawToErc20Raw (line 90) | function vaultRawToErc20Raw(raw: bigint, vaultDecimals: number, erc20Dec...
  function decodeVaultTokenConfig (line 97) | function decodeVaultTokenConfig(vtc: bigint) {
  function getOrderbooks (line 122) | async function getOrderbooks(options: FetchOptions, type: 'PERPS' | 'SPO...
  function getFetch (line 212) | function getFetch(type: 'PERPS' | 'SPOT', traderId?: number) {

FILE: dexs/worm-wtf/index.ts
  constant WORM_PROGRAM (line 5) | const WORM_PROGRAM = "WrgN8d3Xe7qTzZw59kiXaf3fAagHHWg78Mbhkn2dTPD";
  constant CREATOR_PROGRAM (line 6) | const CREATOR_PROGRAM = "SormXyTMQ69ux8yhn9CBQ8v7UuqepefMHbM5TcNDtkf";

FILE: dexs/wx.network/index.ts
  constant URL (line 5) | const URL = "https://waves.exchange/api/v1/liquidity_pools/stats"
  type IVolume (line 7) | interface IVolume {
  type IAPIResponse (line 12) | interface IAPIResponse {

FILE: dexs/x3x.ts
  constant CONRTACTS (line 6) | const CONRTACTS = [
  constant WLD_TOKEN (line 12) | const WLD_TOKEN: string = ADDRESSES.wc.WLD.toLowerCase();

FILE: dexs/x402/index.ts
  type TransferRow (line 6) | interface TransferRow {
  constant DUNE_CHAIN_MAP (line 12) | const DUNE_CHAIN_MAP: Record<string, string> = {
  function arrayToQuotedString (line 24) | function arrayToQuotedString(items: string[]): string {
  function fetch (line 52) | async function fetch(_: any, _1: any, options: FetchOptions): Promise<Fe...

FILE: dexs/xena-finance-derivative/index.ts
  constant VAULT_ADDRESS (line 4) | const VAULT_ADDRESS = '0x22787c26bb0ab0d331eb840ff010855a70a0dca6'

FILE: dexs/xena-finance/index.ts
  constant POOL (line 4) | const POOL = '0x22787c26bb0ab0d331eb840ff010855a70a0dca6';

FILE: dexs/xexchange/index.ts
  type IGraphResponse (line 18) | interface IGraphResponse {

FILE: dexs/xfai/index.ts
  constant FACTORY_ADDRESS (line 7) | const FACTORY_ADDRESS = "0xa5136eAd459F0E61C99Cec70fe8F5C24cF3ecA26";
  constant INFT_ADDRESS (line 8) | const INFT_ADDRESS = "0xa155f12D3Be29BF20b615e1e7F066aE9E3C5239a";
  constant LINEA_WETH_ADDRESS (line 9) | const LINEA_WETH_ADDRESS = ADDRESSES.linea.WETH;
  constant ONE_DAY_IN_SECONDS (line 10) | const ONE_DAY_IN_SECONDS = 60 * 60 * 24;
  constant FEE_VOLUME_MULTIPLIER (line 11) | const FEE_VOLUME_MULTIPLIER = 1000 / 2;

FILE: dexs/xpress/index.ts
  constant ENDPOINTS (line 6) | const ENDPOINTS = {
  type IData (line 10) | interface IData {
  type IGraph (line 13) | interface IGraph {

FILE: dexs/y2k-v1.ts
  constant WETH (line 6) | const WETH = ADDRESSES.arbitrum.WETH;

FILE: dexs/yei-swap.ts
  function fetch (line 4) | async function fetch() {

FILE: dexs/yfx-v3/index.ts
  constant KEY (line 7) | const KEY = '1079471f4ef05e4e9637de21d4bb7c6a'
  type IGraphResponse (line 22) | interface IGraphResponse {
  type IGraphResponse (line 28) | interface IGraphResponse {

FILE: dexs/yfx-v4/index.ts
  type IGraphResponse (line 20) | interface IGraphResponse {

FILE: dexs/yield-basis.ts
  constant ABI (line 4) | const ABI = {
  type IFactory (line 13) | interface IFactory {
  type IPool (line 18) | interface IPool {
  function fetch (line 32) | async function fetch(options: FetchOptions) {

FILE: dexs/zeno/index.ts
  type MarketStat (line 11) | type MarketStat = {
  type MarketDailyStat (line 16) | type MarketDailyStat = {

FILE: dexs/zeta/index.ts
  function fetch (line 6) | async function fetch() {

FILE: dexs/zilswap/index.ts
  type IVolumeall (line 7) | interface IVolumeall {

FILE: dexs/zkswap-stable/index.ts
  function fetch (line 16) | async function fetch(options: FetchOptions) {

FILE: dexs/zkswap-v3/index.ts
  function getRevenueRatio (line 34) | function getRevenueRatio(fee: number): number {

FILE: dexs/zora-sofi/index.ts
  type IZoraFactory (line 44) | interface IZoraFactory {
  function getZoraCoinsVolume (line 85) | async function getZoraCoinsVolume(options: FetchOptions): Promise<FetchR...
  function getZoraCoinsfees (line 166) | async function getZoraCoinsfees(options: FetchOptions): Promise<FetchRes...
  function getZoraCoinsData (line 324) | async function getZoraCoinsData(options: FetchOptions, data: 'fees' | 'v...

FILE: factory/compoundV2.ts
  type Config (line 5) | type Config = {

FILE: factory/hyperliquid.ts
  type BuilderConfig (line 4) | interface BuilderConfig {
  type ValidatorConfig (line 519) | interface ValidatorConfig {
  function hip3Methodology (line 634) | function hip3Methodology(name: string) {

FILE: factory/joeLiquidityBook.ts
  type JoeLBProtocolConfig (line 26) | interface JoeLBProtocolConfig {
  function buildAdapter (line 225) | function buildAdapter(config: JoeLBProtocolConfig): SimpleAdapter {

FILE: factory/nftVolume.ts
  function optimism (line 9) | async function optimism({ }: FetchOptions) {
  function avalanche (line 13) | async function avalanche({ }: FetchOptions) {
  function flow (line 17) | async function flow({ }: FetchOptions) {
  function getAlliumVolume (line 21) | function getAlliumVolume(chain: string) {
  function immutablex (line 32) | async function immutablex({ startOfDay, createBalances }: FetchOptions) {
  function ronin (line 52) | async function ronin({ createBalances }: FetchOptions) {
  function cardano (line 61) | async function cardano({ createBalances }: FetchOptions) {
  function ethereum (line 72) | async function ethereum({ createBalances }: FetchOptions) {

FILE: factory/normalizedVolume.ts
  constant HOURLY_VOLUME_INDEX (line 6) | const HOURLY_VOLUME_INDEX = 'perp-metrics';
  type NormalizedVolumeConfig (line 8) | interface NormalizedVolumeConfig {
  type HourlyVolumeRecord (line 16) | interface HourlyVolumeRecord {
  function fetchV1 (line 28) | function fetchV1({ protocolName, minContracts }: { protocolName: string,...
  function fetchV2 (line 96) | function fetchV2({ protocolName, minContracts }: { protocolName: string,...
  function dailyNormalizedVolumeAdapter (line 169) | function dailyNormalizedVolumeAdapter(config: NormalizedVolumeConfig): S...

FILE: factory/orderly.ts
  type Config (line 4) | type Config = {

FILE: factory/registry.ts
  type FactoryAdapter (line 8) | interface FactoryAdapter {
  function createFactoryExports (line 17) | function createFactoryExports<T extends { [key: string]: SimpleAdapter }>(
  function resolveFactoryPath (line 28) | function resolveFactoryPath(factoryPath: string) {
  function getAdapterFromHelpers (line 115) | function getAdapterFromHelpers(
  function listHelperProtocols (line 171) | function listHelperProtocols(adapterType?: string): Array<{
  function getHelpersForAdapterType (line 222) | function getHelpersForAdapterType(adapterType: string): string[] {

FILE: factory/solLst.ts
  type RevenueMethod (line 33) | type RevenueMethod =
  type FeesConfig (line 39) | interface FeesConfig {
  type SupplySideConfig (line 44) | interface SupplySideConfig {
  type StakingRevenueConfig (line 51) | interface StakingRevenueConfig {
  type RevenueFeedbackConfig (line 58) | interface RevenueFeedbackConfig {
  type SolLstConfig (line 63) | interface SolLstConfig {
  constant DEFAULT_METHODOLOGY (line 99) | const DEFAULT_METHODOLOGY: Record<string, string> = {
  function getMethodology (line 105) | function getMethodology(config: SolLstConfig): Record<string, string> {
  function getBreakdownMethodology (line 119) | function getBreakdownMethodology(config: SolLstConfig): Record<string, R...
  function createSolLstAdapter (line 164) | function createSolLstAdapter(config: SolLstConfig): SimpleAdapter {
  function simpleConfig (line 295) | function simpleConfig(overrides: Partial<SolLstConfig> & Pick<SolLstConf...

FILE: factory/uniSubgraph.ts
  type SubgraphConfig (line 7) | interface SubgraphConfig {
  function computeMethodology (line 31) | function computeMethodology(fp: SubgraphConfig['feesPercent']): Record<s...

FILE: factory/uniV2.ts
  type SubgraphProtocolConfig (line 1224) | interface SubgraphProtocolConfig {
  function buildSubgraphAdapter (line 1627) | function buildSubgraphAdapter(config: SubgraphProtocolConfig): SimpleAda...

FILE: fees/1dex/index.ts
  function fetch (line 6) | async function fetch({ createBalances }: FetchOptions) {

FILE: fees/40acres/index.ts
  constant LOAN_ADDRESS (line 7) | const LOAN_ADDRESS: any = {

FILE: fees/LeadFi-leadBTC/index.ts
  function fetch (line 5) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: fees/LiquidOps/index.ts
  function DryRun (line 16) | async function DryRun(target: string, action: string) {
  function scaleBalance (line 40) | function scaleBalance(amount: string, denomination: string): string {

FILE: fees/SmarDex/index.ts
  constant SMARDEX_SUBGRAPH_API_KEY (line 9) | const SMARDEX_SUBGRAPH_API_KEY = getEnv('SMARDEX_SUBGRAPH_API_KEY')
  constant SMARDEX_SUBGRAPH_GATEWAY (line 10) | const SMARDEX_SUBGRAPH_GATEWAY = "https://subgraph.smardex.io/defillama";
  constant FEES (line 18) | const FEES = {
  constant CHAIN_STARTS (line 27) | const CHAIN_STARTS = {
  constant FEES_METHODOLOGY (line 36) | const FEES_METHODOLOGY = `
  function feesFromSubgraph (line 69) | async function feesFromSubgraph(

FILE: fees/aave-labs.ts
  constant FEE_WALLET (line 5) | const FEE_WALLET = '0xC542C2F197c4939154017c802B0583C596438380';

FILE: fees/aave-v4.ts
  constant HUBS (line 5) | const HUBS: Record<string, string[]> = {
  function discoverSpokes (line 28) | async function discoverSpokes(api: any, hubs: string[], assetCounts: num...

FILE: fees/aavechan.ts
  type AaveCollectorStream (line 5) | type AaveCollectorStream = {
  constant STREAMS (line 14) | const STREAMS: AaveCollectorStream[] = [

FILE: fees/abracadabra.ts
  type ChainConfig (line 6) | type ChainConfig = {
  type DailySnapshot (line 11) | type DailySnapshot = {
  type GraphResponse (line 17) | type GraphResponse = {
  constant MIM (line 21) | const MIM = "magic-internet-money";
  constant BORROW_FEES (line 22) | const BORROW_FEES = "Borrow Fees";
  constant BASE_URL (line 23) | const BASE_URL = "https://api.studio.thegraph.com/query/56065";

FILE: fees/acred/index.ts
  constant METRIC (line 38) | const METRIC = {
  constant REDSTONE_ORACLE_DECIMALS (line 46) | const REDSTONE_ORACLE_DECIMALS = 8;
  constant MANAGEMENT_FEE (line 47) | const MANAGEMENT_FEE = 0.5 / 100;
  constant ONE_YEAR_IN_SECONDS (line 48) | const ONE_YEAR_IN_SECONDS = 365 * 24 * 60 * 60;
  constant APTOS_API_BASE_URL (line 49) | const APTOS_API_BASE_URL = 'https://api.mainnet.aptoslabs.com'
  function prefetch (line 51) | async function prefetch(options: FetchOptions) {
  function fetch (line 74) | async function fetch(_a: any, _b: any, options: FetchOptions) {

FILE: fees/across.ts
  type IResponse (line 12) | interface IResponse {
  type IAcrossDeposit (line 18) | interface IAcrossDeposit {
  constant ACROSS_DEPOSITS_API (line 24) | const ACROSS_DEPOSITS_API = "https://app.across.to/api/deposits";
  constant PAGE_LIMIT (line 25) | const PAGE_LIMIT = 1000;
  constant MAX_PAGES_PER_CHAIN (line 26) | const MAX_PAGES_PER_CHAIN = 200;
  constant MIN_VALID_BRIDGE_FEE_USD (line 27) | const MIN_VALID_BRIDGE_FEE_USD = 0;

FILE: fees/aden/index.ts
  function fetch (line 26) | async function fetch(_a: any, _b: any, options: FetchOptions): Promise<a...

FILE: fees/aegis-jusd/index.ts
  constant METRICS (line 28) | const METRICS = {

FILE: fees/aegis-yusd/index.ts
  constant METRICS (line 42) | const METRICS = {

FILE: fees/aera-v2/index.ts
  constant CHAIN_CONFIG (line 8) | const CHAIN_CONFIG: Record<string, any> = {
  function fetch (line 47) | async function fetch(_a: any, _b: any, options: FetchOptions): Promise<F...

FILE: fees/aera-v3.ts
  constant PROTOCOL_FEE_RATIO (line 41) | const PROTOCOL_FEE_RATIO = 0.2;

FILE: fees/aethir/index.ts
  constant AETHIR_CORE (line 5) | const AETHIR_CORE = "0x226DC7D2AA1F9a565e82faf04772FDbBaF2da42d";
  constant AETHIR_TOKEN (line 6) | const AETHIR_TOKEN = "0xc87B37a581ec3257B734886d9d3a581F5A9d056c";
  constant DEPOSIT_SERVICE_FEE_EVENT (line 8) | const DEPOSIT_SERVICE_FEE_EVENT = "event DepositServiceFee (address inde...
  constant WITHDRAW_SERVICE_FEE_EVENT (line 10) | const WITHDRAW_SERVICE_FEE_EVENT = "event WithdrawServiceFee (address in...
  function fetch (line 12) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: fees/affluent/index.ts
  constant API_URL (line 6) | const API_URL = "https://api.affluent.org/v2/api/protocol/financials";

FILE: fees/afiprotocol/index.ts
  constant DISTRIBUTE_YIELD_EVENT (line 12) | const DISTRIBUTE_YIELD_EVENT =

FILE: fees/aftermath-fi-amm.ts
  type PoolStats (line 7) | interface PoolStats {
  constant POOL_STATS_CHUNK_SIZE (line 12) | const POOL_STATS_CHUNK_SIZE = 42;

FILE: fees/aimbot.ts
  type IData (line 8) | interface IData {

FILE: fees/airnft/index.ts
  type chainData (line 5) | interface chainData {
  constant PURCHASE (line 16) | const PURCHASE = 'event Purchase(address indexed previousOwner, address ...

FILE: fees/airswap.ts
  type TAddress (line 8) | type TAddress = {

FILE: fees/ajna-v1/index.ts
  constant ABI (line 6) | const ABI = {

FILE: fees/ajna-v2/index.ts
  constant RESERVE_INFO_ABI (line 6) | const RESERVE_INFO_ABI = "function reservesInfo() view returns (uint256,...

FILE: fees/akash-network/index.ts
  constant AKASH_FEE_ENDPOINT (line 5) | const AKASH_FEE_ENDPOINT = "https://console-api.akash.network/v1/graph-d...
  function fetch (line 9) | async function fetch(_: any, _1: any, options: FetchOptions) {

FILE: fees/aktionariat/index.ts
  constant BPS_DENOMINATOR (line 4) | const BPS_DENOMINATOR = 10000n;
  constant AKTIONARIAT_LICENSE_FEE_RECIPIENT (line 5) | const AKTIONARIAT_LICENSE_FEE_RECIPIENT = "0x29fe8914e76da5ce2d90de98a64...
  constant MARKET_BROKERBOT_START_BLOCK (line 7) | const MARKET_BROKERBOT_START_BLOCK = 11997227;
  constant SECONDARY_MARKET_START_BLOCK (line 8) | const SECONDARY_MARKET_START_BLOCK = 23434185;

FILE: fees/allbridge-classic.ts
  type ChainData (line 5) | interface ChainData {

FILE: fees/allbridge-core.ts
  type TChainAddress (line 8) | type TChainAddress = {
  constant SUI_EVENT_TYPES (line 59) | const SUI_EVENT_TYPES = [
  function addLogs (line 77) | function addLogs(logs: any, index: number) {
  function fetchFeesAmountFromAnalyticsApi (line 104) | async function fetchFeesAmountFromAnalyticsApi(
  type AnalyticsEvent (line 117) | interface AnalyticsEvent {
  function getEventsFromAnalyticsApi (line 122) | async function getEventsFromAnalyticsApi(

FILE: fees/allox/index.ts
  constant FEE_RECIPIENT (line 5) | const FEE_RECIPIENT = "0x6A80f57ac54123cB71e6c79B3935A381b87B4308";

FILE: fees/almanak/index.ts
  constant ONE_YEAR (line 13) | const ONE_YEAR = 365 * 24 * 60 * 60;
  function fetch (line 15) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: fees/alpha-arcade/index.ts
  function getAmountsForReceiver (line 49) | function getAmountsForReceiver(transactions: any[], receiver: string, as...

FILE: fees/alphafi/index.ts
  constant ALPHAFI_CONFIG_ENDPOINT (line 8) | const ALPHAFI_CONFIG_ENDPOINT = "https://api.alphafi.xyz/public/config";
  constant START_DATE (line 9) | const START_DATE = "2024-07-05";
  constant EVENT_QUERY_CONCURRENCY (line 10) | const EVENT_QUERY_CONCURRENCY = 2;
  type Asset (line 12) | type Asset = {
  type AlphaFiConfigEntry (line 17) | type AlphaFiConfigEntry = {
  type PoolConfig (line 22) | type PoolConfig = {
  type PoolInfo (line 38) | type PoolInfo = PoolConfig & {
  type ConfigEvent (line 42) | type ConfigEvent = {
  function normalizeCoinType (line 48) | function normalizeCoinType(coinType?: string) {
  function eventCoinType (line 53) | function eventCoinType(e: any) {
  function poolAsset (line 57) | function poolAsset(pool: PoolInfo) {
  function addAmount (line 65) | function addAmount(balances: any, token: string | undefined, amount: any...
  function addSupplyYield (line 71) | function addSupplyYield(balances: {
  function addYieldAndFee (line 79) | function addYieldAndFee(balances: {
  function configuredEvents (line 89) | function configuredEvents(
  function isXTokenRatioEvent (line 99) | function isXTokenRatioEvent(key: string, eventType: string) {
  function isYieldEvent (line 103) | function isYieldEvent(key: string, eventType: string, pool: PoolInfo) {
  function isFeeEvent (line 110) | function isFeeEvent(key: string) {
  function queryConfiguredEvents (line 117) | async function queryConfiguredEvents(events: ConfigEvent[], options: Fet...
  function poolForEvent (line 135) | function poolForEvent(event: any, configEvents: ConfigEvent[], byInvesto...
  function getPoolConfig (line 143) | async function getPoolConfig() {
  function fetch (line 159) | async function fetch(options: FetchOptions) {

FILE: fees/alphix.ts
  constant SWAP_TOPIC (line 6) | const SWAP_TOPIC = '0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708dac...
  type ChainConfig (line 8) | type ChainConfig = {
  function decodeInt128 (line 51) | function decodeInt128(hex: string): bigint {
  function calculateLendingYield (line 56) | async function calculateLendingYield(fromApi: any, toApi: any, chainCfg:...
  function fetch (line 87) | async function fetch(options: FetchOptions) {

FILE: fees/amnis-finance/index.ts
  type IFeeData (line 15) | interface IFeeData {

FILE: fees/amped/index.ts
  constant GRAPH_BEARER_TOKEN (line 7) | const GRAPH_BEARER_TOKEN = "e8cbd58884ab58d21be68ac2c1e15a24";
  type IGraphResponse (line 55) | interface IGraphResponse {

FILE: fees/angle/index.ts
  constant DAY (line 18) | const DAY = 3600 * 24;
  constant BORROW_FEE_NAMES (line 19) | const BORROW_FEE_NAMES = ['surplusFromBorrowFees', 'surplusFromInterests...
  constant CORE_FEE_NAMES (line 20) | const CORE_FEE_NAMES = ['totalProtocolFees', 'totalProtocolInterests', '...
  constant CORE_PROTOCOL_FEE_NAMES (line 21) | const CORE_PROTOCOL_FEE_NAMES = ['totalProtocolFees', 'totalProtocolInte...
  constant CORE_QUERY (line 23) | const CORE_QUERY = gql
  constant BORROW_QUERY (line 47) | const BORROW_QUERY = gql
  constant VEANGLE_QUERY (line 69) | const VEANGLE_QUERY = gql
  function aggregateFee (line 177) | function aggregateFee(

FILE: fees/angle/types.ts
  type ChainEndpoint (line 3) | type ChainEndpoint = { [key in CHAIN]?: string }
  type BorrowFee (line 6) | type BorrowFee = {
  type CoreFee (line 15) | type CoreFee = {
  type BorrowFeeQuery (line 25) | type BorrowFeeQuery = {
  type CoreFeeQuery (line 30) | type CoreFeeQuery = {
  type BorrowResult (line 35) | type BorrowResult = { totalFees: BorrowFee, deltaFees: BorrowFee };
  type CoreResult (line 36) | type CoreResult = { totalFees: CoreFee, deltaFees: CoreFee };
  type RewardWeekFee (line 39) | type RewardWeekFee = {
  type FeeDistribution (line 44) | type FeeDistribution = {
  type veANGLEQuery (line 51) | type veANGLEQuery = {

FILE: fees/anoncoin/index.ts
  constant PARTNER_FEE_CLAIMER (line 5) | const PARTNER_FEE_CLAIMER = 'BKPxAdgwPHXE3ZPZt5XsAovDgUaUufHgZnSAZ3eRWQNW';
  constant METEORA_POOL_AUTHORITY (line 6) | const METEORA_POOL_AUTHORITY = 'FhVo3mqL8PW5pH5U2CN4XE33DokiyZnUwuGpH2hm...

FILE: fees/antfun.ts
  constant FEE_ADDRESSES_API (line 10) | const FEE_ADDRESSES_API = 'https://api2.ant.fun/api/v1/config/fee-addres...
  function getFeeAddresses (line 12) | async function getFeeAddresses(): Promise<string[]> {

FILE: fees/aori/index.ts
  constant FILL_EVENT (line 52) | const FILL_EVENT = `event Fill(
  function fetch (line 72) | async function fetch(options: FetchOptions) {

FILE: fees/apebot/index.ts
  constant FEE_WALLET (line 6) | const FEE_WALLET = "Bkfx4XwD9VuztHyimbKyte2zkv78eBRHyeq4CvG6RFdB";

FILE: fees/apestore/index.ts
  constant APE_STORE_FEE_VAULT (line 5) | const APE_STORE_FEE_VAULT = '0xd52b1994e745c0ee5bc7ad41414da7d9e0815b66';

FILE: fees/apex-omni.ts
  type IFees (line 9) | interface IFees {

FILE: fees/apexdefi/burst.ts
  type TAddress (line 7) | type TAddress = {
  type BurstSwap (line 11) | type BurstSwap = {
  type CurveComplete (line 20) | type CurveComplete = {
  constant BURST_FACTORIES (line 27) | const BURST_FACTORIES: TAddress = {
  function burstMetrics (line 36) | async function burstMetrics(options: FetchOptions): Promise<{

FILE: fees/apexdefi/dex.ts
  type TAddress (line 11) | type TAddress = {
  type Swap (line 15) | type Swap = {
  constant FACTORIES (line 24) | const FACTORIES: TAddress = {
  function swapMetrics (line 34) | async function swapMetrics(options: FetchOptions): Promise<{

FILE: fees/apricot/index.ts
  constant APRICOT_MAIN_POOL (line 6) | const APRICOT_MAIN_POOL = "7Ne6h2w3LpTNTa7CNYcUs7UkjeJT3oW7jcrXWfVScTXW";

FILE: fees/apyx-protocol.ts
  constant APYUSD_VAULT (line 5) | const APYUSD_VAULT = "0x38EEb52F0771140d10c4E9A9a72349A329Fe8a6A"
  constant APXUSD (line 6) | const APXUSD = "0x98A878b1Cd98131B271883B390f68D2c90674665"
  constant APX_UNLOCK (line 7) | const APX_UNLOCK = "0x93775E2dFa4e716c361A1f53F212c7AE031BF4e6"

FILE: fees/aquabank.ts
  constant USDT (line 10) | const USDT = "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7";
  constant B_TOKENS (line 12) | const B_TOKENS = [bUSDT, bUSDC, bAUSD];
  constant BUYBACK_WALLET (line 15) | const BUYBACK_WALLET = "0xa6fbc057e82a56ac325c1ad4245055217cf112b3";
  constant LIQUIDITY_WALLET (line 16) | const LIQUIDITY_WALLET = "0x87e21a66054fb9b335d94082f079d87f8d58d8d8";
  constant EXIT_FEE_WALLET (line 17) | const EXIT_FEE_WALLET = "0xd9e464f0e3918a6feb4624d22095969e53815e50";

FILE: fees/arbitrum-nova.ts
  function getFees (line 7) | async function getFees(options: FetchOptions) {

FILE: fees/arbitrum-timeboost/index.ts
  constant AUCTIONRESOLVED_EVENT_ABI (line 6) | const AUCTIONRESOLVED_EVENT_ABI = 'event AuctionResolved(bool indexed is...
  constant WETH_ADDRESS (line 8) | const WETH_ADDRESS = ADDRESSES.arbitrum.WETH;

FILE: fees/aries-markets/index.ts
  constant STABLE_COIN_DECIMAL (line 11) | const STABLE_COIN_DECIMAL = 6;
  constant DAY_IN_YEARS (line 12) | const DAY_IN_YEARS = 365;

FILE: fees/arkada/index.ts
  constant PYRAMID_CLAIM_EVENT (line 82) | const PYRAMID_CLAIM_EVENT =
  constant STATUS_UPDATED_EVENT (line 85) | const STATUS_UPDATED_EVENT =
  constant METRICS (line 88) | const METRICS = {

FILE: fees/arrakis-v2/index.ts
  type IVault (line 6) | type IVault = {
  type IAddress (line 11) | type IAddress = {
  function fetch (line 47) | async function fetch({ chain, api, fromApi, toApi, createBalances }: Fet...

FILE: fees/ash-perp/index.ts
  constant API_URL (line 6) | const API_URL = 'https://statistic-api.ashperp.trade/graphql';

FILE: fees/aspecta.ts
  constant ASPECTA_FEE_COLLECTOR (line 9) | const ASPECTA_FEE_COLLECTOR = "0x38799Ce388a9b65EC6bA7A47c1efb9cF1A7068e4";

FILE: fees/assetchain.ts
  function getFees24Hr (line 6) | async function getFees24Hr(api: any) {

FILE: fees/aster-spot/index.ts
  function fetch (line 6) | async function fetch(options: FetchOptions) {

FILE: fees/asymmetry-usdaf.ts
  function fetch (line 5) | async function fetch(options: FetchOptions) {

FILE: fees/auki/index.ts
  function fetch (line 5) | async function fetch(options: FetchOptions) {

FILE: fees/aur/index.ts
  function aurHelperTotalSuiDeployed (line 11) | async function aurHelperTotalSuiDeployed(

FILE: fees/aura.ts
  constant BAL_TOKEN (line 6) | const BAL_TOKEN = '0xba100000625a3754423978a60c9317c58a424e3D';

FILE: fees/autofinance/index.ts
  constant AUTOFINANCE_API (line 7) | const AUTOFINANCE_API = "https://autopools-api.tokemaklabs.com/api";
  constant CHAIN_CONFIG (line 9) | const CHAIN_CONFIG: Record<string, any> = {
  constant ADDRESSES (line 36) | const ADDRESSES = {
  function fetch (line 50) | async function fetch(options: FetchOptions): Promise<FetchResult> {

FILE: fees/autopilot/index.ts
  constant ABI (line 6) | const ABI = {
  constant REWARDS_DISTRIBUTOR (line 11) | const REWARDS_DISTRIBUTOR = "0xA7c68a960bA0F6726C4b7446004FE64969E2b4d4";
  function fetch (line 13) | async function fetch(_a: any, _b: any, options: FetchOptions): Promise<F...

FILE: fees/avalon-usda.ts
  function fetch (line 54) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: fees/avalon_old/index.ts
  constant ONE_DAY (line 7) | const ONE_DAY = 24 * 60 * 60;
  constant ENDPOINTS (line 9) | const ENDPOINTS = {
  constant POOL_ADDRESSES (line 14) | const POOL_ADDRESSES = {
  type V3Reserve (line 19) | type V3Reserve = {
  function fetch (line 70) | async function fetch({ fromTimestamp, toTimestamp, createBalances, chain...

FILE: fees/avant-avbtc/index.ts
  constant MINT_AND_REDEEM_CONTRACT (line 9) | const MINT_AND_REDEEM_CONTRACT = '0x58C32c34fd4Ae48A7D45EC4b3C940b41D676...
  constant REDEEM_ABI (line 11) | const REDEEM_ABI = 'event Redeem(address indexed redeemer,address indexe...

FILE: fees/avant-aveth/index.ts
  constant MINT_AND_REDEEM_CONTRACT (line 9) | const MINT_AND_REDEEM_CONTRACT = '0x09becF6E5e297825D19aA14eD6081A035245...
  constant REDEEM_ABI (line 11) | const REDEEM_ABI = 'event Redeem(address indexed redeemer,address indexe...

FILE: fees/avant-avusd/index.ts
  constant MINT_AND_REDEEM_CONTRACT (line 9) | const MINT_AND_REDEEM_CONTRACT = '0xcb43139E90f019624e3B76C56FB05394B162...
  constant REDEEM_ABI (line 11) | const REDEEM_ABI = 'event Redeem(address indexed redeemer,address indexe...

FILE: fees/avantis/index.ts
  type IData (line 6) | interface IData {
  constant API_URL (line 19) | const API_URL = "https://api.avantisfi.com/v1";

FILE: fees/aveai/index.ts
  function fetch (line 12) | async function fetch(options: FetchOptions) {

FILE: fees/aveforge/index.ts
  constant MARKETPLACE_FEE_COLLECTOR (line 9) | const MARKETPLACE_FEE_COLLECTOR = "0x4ed28973Bc386655E541864e6964C780b9B...
  constant GAME_TREASURY (line 10) | const GAME_TREASURY = "0xb12e49a4CDB83eac29C759ffC64DF818fBa8e28b";

FILE: fees/axelar/index.ts
  constant GAS_SERVICE (line 7) | const GAS_SERVICE: Record<string, string> = {
  constant ABI (line 24) | const ABI = [
  constant TOPICS (line 37) | const TOPICS = {
  function extractFeeWei (line 48) | function extractFeeWei(log: any): BigNumber {

FILE: fees/axie-infinity/index.ts
  constant TREASURY_ADDRESS (line 8) | const TREASURY_ADDRESS = '0x245db945c485b68fdc429e4f7085a1761aa4d45d';
  constant MARKETPLACE_ADDRESS (line 9) | const MARKETPLACE_ADDRESS = '0x3b3adf1422f84254b7fbb0e7ca62bd0865133fe3';
  constant PROTOCOL_FEE (line 10) | const PROTOCOL_FEE = 0.0425;
  constant CREATOR_FEE (line 11) | const CREATOR_FEE = 0.01;
  constant TREASURY_MIGRATION (line 12) | const TREASURY_MIGRATION = 1682553600 // 2023-04-27
  function fetchHistoricalRonin (line 14) | async function fetchHistoricalRonin(options: FetchOptions): Promise<Fetc...
  function fetchHistoricalEth (line 49) | async function fetchHistoricalEth(options: FetchOptions): Promise<FetchR...

FILE: fees/axiom.ts
  constant LABELS (line 6) | const LABELS = {
  function fetchSolana (line 56) | async function fetchSolana(options: FetchOptions) {
  function fetchBsc (line 176) | async function fetchBsc(options: FetchOptions) {

FILE: fees/b14g/index.ts
  constant DUAL_BTC_FEE_BPS (line 7) | const DUAL_BTC_FEE_BPS = 1900n;
  constant BPS (line 8) | const BPS = 10000n;
  constant BABY_DECIMALS (line 9) | const BABY_DECIMALS = 1e6;
  function fetch (line 88) | async function fetch(options: FetchOptions) {

FILE: fees/b402.ts
  constant FEE_COLLECTOR (line 6) | const FEE_COLLECTOR = "0x2dBe91FF25ABd5419435656a7bccD269EC358Ea4";

FILE: fees/babydoge-bridge/index.ts
  constant API_BASE (line 5) | const API_BASE = "https://axelar-bridge-connector-backend-main.babybulld...
  constant API_TON (line 6) | const API_TON = "https://defillama-bsc-ton-bridge-backend-main.babybulld...
  constant API_SOL (line 7) | const API_SOL = "https://wormhole-bridge-defilama-connector-backend-main...

FILE: fees/babylon-genesis/index.ts
  constant BABYLON_DECIMALS (line 5) | const BABYLON_DECIMALS = 6;

FILE: fees/backedfi.ts
  type ApiDeployment (line 17) | interface ApiDeployment {
  type ApiProduct (line 23) | interface ApiProduct {
  type ApiResponse (line 36) | interface ApiResponse {
  constant CHAIN_NAME_MAP (line 48) | const CHAIN_NAME_MAP: Record<string, string> = {
  constant CACHE_TTL (line 62) | const CACHE_TTL = 3600000;
  function getProducts (line 64) | async function getProducts(): Promise<ApiProduct[]> {
  function getAddressesByChain (line 76) | async function getAddressesByChain(products: ApiProduct[], chainName: st...
  type IData (line 144) | interface IData {

FILE: fees/baker-dao/index.ts
  constant BREAD_CONTRACT_ADDRESS (line 6) | const BREAD_CONTRACT_ADDRESS = "0x0003eEDFdd020bf60D10cf684ABAc7C4534B7e...

FILE: fees/bancor-v2.ts
  function fetch (line 6) | async function fetch(fetchOptions: FetchOptions) {

FILE: fees/bankr.ts
  type DailyProtocolFees (line 5) | interface DailyProtocolFees {
  type DailyFees (line 11) | interface DailyFees {
  type BankrDashboard (line 17) | interface BankrDashboard {

FILE: fees/basisos/index.ts
  constant DATA_PROVIDER_ADDRESS (line 8) | const DATA_PROVIDER_ADDRESS = '0xDD5C8aB2E9F113b397ff2b8528C649bAEf24dF97';
  constant VAULT_STATE_BLOCK_LIMIT (line 13) | const VAULT_STATE_BLOCK_LIMIT = 330229681;

FILE: fees/beamable-network/index.ts
  constant TREASURY_PDA (line 7) | const TREASURY_PDA = '6pZERJjcMpNjPZ6ovnXWC6LzwkXLAYgAR1URAEs63cWC';

FILE: fees/bedrock-unibtc/index.ts
  type ChainConfig (line 4) | type ChainConfig = {
  constant UNIBTC_DELAYED_REDEEM_CREATED_EVENT (line 9) | const UNIBTC_DELAYED_REDEEM_CREATED_EVENT = "event DelayedRedeemCreated(...
  constant METRICS (line 11) | const METRICS = {
  function fetch (line 39) | async function fetch(options: FetchOptions) {

FILE: fees/bedrock-unieth/index.ts
  constant UNIETH_MANAGER_FEE_DENOMINATOR (line 5) | const UNIETH_MANAGER_FEE_DENOMINATOR = 1000;
  constant UNIETH (line 6) | const UNIETH = "0xF1376bceF0f78459C0Ed0ba5ddce976F1ddF51F4";
  constant UNIETH_STAKING (line 7) | const UNIETH_STAKING = "0x4beFa2aA9c305238AA3E0b5D17eB20C045269E9d";
  constant METRICS (line 9) | const METRICS = {
  function fetch (line 15) | async function fetch(options: FetchOptions) {

FILE: fees/bedrock-uniiotx/index.ts
  constant DECIMALS (line 4) | const DECIMALS = 18;
  constant MANAGER_FEE_DENOMINATOR (line 5) | const MANAGER_FEE_DENOMINATOR = 1000;
  constant UNI_IOTX (line 6) | const UNI_IOTX = "0x236f8c0a61da474db21b693fb2ea7aab0c803894";
  constant UNI_IOTX_STAKING (line 7) | const UNI_IOTX_STAKING = "0x2c914ba874d94090ba0e6f56790bb8eb6d4c7e5f";
  constant METRICS (line 9) | const METRICS = {
  function fetch (line 15) | async function fetch(options: FetchOptions) {

FILE: fees/beefy/index.ts
  type ChainConfigType (line 17) | type ChainConfigType = {
  type ERC20TransferLogResult (line 24) | type ERC20TransferLogResult = {
  function makeErc20BlacklistFromFilter (line 31) | function makeErc20BlacklistFromFilter(blacklistedFromAddresses: string[]...

FILE: fees/beezie.ts
  constant CLAW_MANAGERS (line 138) | const CLAW_MANAGERS = new Set(

FILE: fees/believe/index.ts
  type IData (line 7) | interface IData {

FILE: fees/bellumexchange.ts
  constant FACTORIES (line 5) | const FACTORIES = [
  constant FEE (line 15) | const FEE = BigInt(100);

FILE: fees/bend/index.ts
  constant CONFIG (line 6) | const CONFIG = {
  type MorphoMarket (line 40) | type MorphoMarket = {
  type MorphoBlueAccrueInterestEvent (line 49) | type MorphoBlueAccrueInterestEvent = {
  type MorphoBlueLiquidateEvent (line 55) | type MorphoBlueLiquidateEvent = {
  type PerformanceFee (line 61) | type PerformanceFee = {
  type RewardVault (line 66) | type RewardVault = {
  constant BERACHAIN_API (line 70) | const BERACHAIN_API = "https://api.berachain.com";
  constant ONE (line 75) | const ONE = 10n ** 18n;
  constant ZERO_ADDRESS (line 79) | const ZERO_ADDRESS = '0x' + '0'.repeat(40);
  function _getLIFFromLLTV (line 82) | function _getLIFFromLLTV(lltv: bigint): bigint {

FILE: fees/benddao-lending-v1.ts
  constant LEND_POOL (line 8) | const LEND_POOL = "0x70b97a0da65c15dfb0ffa02aee6fa36e507c2762";
  constant DATA_PROVIDER (line 9) | const DATA_PROVIDER = "0x3811DA50f55CCF75376C5535562F5b4797822480";
  constant SECONDS_PER_YEAR (line 10) | const SECONDS_PER_YEAR = 31536000;

FILE: fees/benddao-lending-v2.ts
  constant POOL_MANAGER (line 8) | const POOL_MANAGER = "0x0b870d974fB968B2E06798ABBD2563c80933D148";
  constant POOL_LENS (line 9) | const POOL_LENS = "0x4643f7791ac622863503d8d3e62942fcff592a91";
  constant SECONDS_PER_YEAR (line 10) | const SECONDS_PER_YEAR = 31536000;

FILE: fees/beraborrow/index.ts
  constant TRANSFER_TOPIC (line 10) | const TRANSFER_TOPIC = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a1...
  function getAddressParam (line 12) | function getAddressParam(address: string): string {
  type CollateralVault (line 78) | interface CollateralVault {
  type CollateralVaultAmount (line 85) | interface CollateralVaultAmount extends CollateralVault {
  function getCollateralVaults (line 89) | async function getCollateralVaults(options: FetchOptions): Promise<{[key...

FILE: fees/beradrome/index.ts
  constant VOTER (line 8) | const VOTER = "0xd7ea36ECA1cA3E73bC262A6D05DB01E60AE4AD47";
  constant BERO (line 9) | const BERO = "0x7838CEc5B11298Ff6a9513Fa385621B765C74174";
  constant DEPLOYMENT_BLOCK (line 10) | const DEPLOYMENT_BLOCK = 784968;
  constant HONEY (line 12) | const HONEY = ADDRESSES.berachain.HONEY;
  constant SWAP_FEE (line 14) | const SWAP_FEE = 30n;
  constant BORROW_FEE (line 15) | const BORROW_FEE = 250n;
  constant PROVIDER_FEE (line 16) | const PROVIDER_FEE = 2000n;
  constant DIVISOR (line 18) | const DIVISOR = 10000n;
  function addBondigCurveFees (line 20) | async function addBondigCurveFees(options: FetchOptions, totalFees: Bala...
  function addBorrowFees (line 46) | async function addBorrowFees(options: FetchOptions, totalFees: Balances) {
  function addBribes (line 59) | async function addBribes(options: FetchOptions, totalFees: Balances) {
  constant BERACHAIN_DISTRIBUTOR (line 85) | const BERACHAIN_DISTRIBUTOR = "0xD2f19a79b026Fb636A7c300bF5947df113940761";
  constant BERADROME_REWARD_VAULT (line 86) | const BERADROME_REWARD_VAULT = "0x63233e055847eD2526d9275a6cD1d01CAAFC09...
  constant BGT_ADDRESS (line 87) | const BGT_ADDRESS = "0x656b95E550C07a9ffe548bd4085c72418Ceb1dba";
  constant DISTRIBUTED_TOPIC_0 (line 88) | const DISTRIBUTED_TOPIC_0 =
  function addHoldersRevenue (line 91) | async function addHoldersRevenue(options: FetchOptions, balances: Balanc...
  function fetch (line 109) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: fees/betswirl/index.ts
  type IToken (line 16) | interface IToken {
  type IPvPToken (line 25) | interface IPvPToken {
  type IGraph (line 34) | interface IGraph {

FILE: fees/bifrost-chain.ts
  constant BURN_START_DATE (line 6) | const BURN_START_DATE = "2025-11-01";

FILE: fees/bim/index.ts
  type ChainConfigType (line 62) | type ChainConfigType = {

FILE: fees/binance-alpha.ts
  type IRouter (line 6) | interface IRouter {

FILE: fees/binance-staked-eth.ts
  constant WBETH (line 7) | const WBETH = ADDRESSES.bsc.wBETH
  constant ETH_ON_BSC (line 8) | const ETH_ON_BSC = ADDRESSES.bsc.ETH
  function fetch (line 10) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: fees/bitfi-basis.ts
  type BfUSDConfig (line 5) | interface BfUSDConfig {
  constant RATIO_PRECISION (line 12) | const RATIO_PRECISION = 100_000_000n
  constant BFUSD_DECIMALS (line 13) | const BFUSD_DECIMALS = 1_000_000
  function fetch (line 27) | async function fetch(options: FetchOptions) {

FILE: fees/bitfi-btc.ts
  type config (line 5) | interface config {
  function fetch (line 44) | async function fetch(options: FetchOptions): Promise<FetchResultV2> {

FILE: fees/bitflow-fi.ts
  type Pool (line 8) | interface Pool {

FILE: fees/bitlayer/index.ts
  function getFeeUSD (line 9) | async function getFeeUSD({ startOfDay, createBalances }: FetchOptions, u...

FILE: fees/bitway-earn.ts
  constant STRATEGIES (line 7) | const STRATEGIES = [

FILE: fees/blastapi.ts
  type TMarketPlaceAddress (line 5) | type TMarketPlaceAddress = {

FILE: fees/blend-backstop-v2/index.ts
  constant V2_BACKSTOP (line 6) | const V2_BACKSTOP = "CAQQR5SWBXKIGZKPBZDH3KM5GQ5GUTPKB7JAFCINLZBC5WXPJKR...
  type BlendBackstopV2Row (line 8) | type BlendBackstopV2Row = {

FILE: fees/blend-pools-v2/index.ts
  constant V2_BACKSTOP (line 6) | const V2_BACKSTOP = "CAQQR5SWBXKIGZKPBZDH3KM5GQ5GUTPKB7JAFCINLZBC5WXPJKR...
  type BlendV2Row (line 8) | type BlendV2Row = {

FILE: fees/blend-pools/index.ts
  constant V1_POOLS (line 6) | const V1_POOLS = [
  type BlendV1Row (line 13) | type BlendV1Row = {

FILE: fees/blex/index.ts
  type IGraphResponse (line 44) | interface IGraphResponse{

FILE: fees/blockchain-capital/index.ts
  constant BCAP_TOKEN (line 4) | const BCAP_TOKEN = "0x57fD71a86522Dc06D6255537521886057c1772A3";
  constant PRICE_FEED (line 5) | const PRICE_FEED = "0x0eF2418216476Ab5264821070B8c24b6B458F796";
  constant TOKEN_DECIMALS (line 6) | const TOKEN_DECIMALS = 2;
  constant REDSTONE_ORACLE_DECIMALS (line 7) | const
Condensed preview — 2538 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (8,414K chars).
[
  {
    "path": ".coderabbit.yaml",
    "chars": 6423,
    "preview": "# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json\nlanguage: \"en-US\"\nearly_access: true\n\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 210,
    "preview": "# Protect dependency and config files — require @g1nt0ki @0xngmi approval\n/.github/CODEOWNERS @g1nt0ki @0xngmi\n\npackage."
  },
  {
    "path": ".github/workflows/build-modules-and-alert.yml",
    "chars": 1217,
    "preview": "name: Build dimensionModules and alert unlisted projects\n\non:\n  push:\n    branches: [ \"master\" ]\n\njobs:\n  build-and-uplo"
  },
  {
    "path": ".github/workflows/comment.yml",
    "chars": 2076,
    "preview": "name: comment-pr\non:\n  workflow_run:\n    workflows: [\"test-adapter\"]\n    types: [completed]\n\npermissions:\n  pull-request"
  },
  {
    "path": ".github/workflows/commentResult.js",
    "chars": 1196,
    "preview": "const { readFileSync, writeFileSync, mkdirSync } = require('fs');\nconst path = require('path');\n\nfunction main() {\n    c"
  },
  {
    "path": ".github/workflows/getFileList.js",
    "chars": 718,
    "preview": "const ALLOWED_ROOTS = ['volumes', 'dexs', 'options', 'derivatives', 'incentives', 'fees', 'options', 'protocols', 'aggre"
  },
  {
    "path": ".github/workflows/test-adapter.yml",
    "chars": 2440,
    "preview": "name: test-adapter\non: [pull_request]\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - id: file_changes\n     "
  },
  {
    "path": ".github/workflows/ts-check.yml",
    "chars": 659,
    "preview": "name: Check ts\n\non: [pull_request]\n    \njobs:\n  ts-check:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout r"
  },
  {
    "path": ".gitignore",
    "chars": 126,
    "preview": "node_modules\n.vscode\n.DS_store\n.env\n.idea\nyarn.lock\ntest.py\ntest.js\n\ncli/dimensionModules.json\nwash/\n*.log\n\n.claude\nCLAU"
  },
  {
    "path": "GUIDELINES.md",
    "chars": 7001,
    "preview": "# DefiLlama Dimension Adapters - Global Guidelines\n\nThese guidelines apply to ALL adapters in this repository.\n\n## PR De"
  },
  {
    "path": "README.md",
    "chars": 449,
    "preview": "# Adapters\n\nFind the instructions to list, write, test and submit an adapter [here](https://docs.llama.fi/list-your-proj"
  },
  {
    "path": "active-users/aptos.ts",
    "chars": 1086,
    "preview": "import { Dependencies, SimpleAdapter, ProtocolType, FetchOptions } from \"../adapters/types\";\nimport { CHAIN } from \"../h"
  },
  {
    "path": "active-users/kyan.ts",
    "chars": 731,
    "preview": "import { SimpleAdapter } from \"../adapters/types\";\nimport { CHAIN } from \"../helpers/chains\";\nimport { httpGet } from \"."
  },
  {
    "path": "active-users/sui.ts",
    "chars": 1120,
    "preview": "import { Dependencies, SimpleAdapter, ProtocolType, FetchOptions } from \"../adapters/types\";\nimport { CHAIN } from \"../h"
  },
  {
    "path": "adapters/types.ts",
    "chars": 8110,
    "preview": "import { Balances, ChainApi, util } from '@defillama/sdk';\nimport sdk from '@defillama/sdk';\nexport type Chain = string\n"
  },
  {
    "path": "adapters/utils/importAdapter.ts",
    "chars": 1488,
    "preview": "import { getAdapterFromHelpers, listHelperProtocols } from \"../../factory/registry\";\nimport { SimpleAdapter } from \"../t"
  },
  {
    "path": "adapters/utils/runAdapter.ts",
    "chars": 21551,
    "preview": "import * as sdk from '@defillama/sdk';\nimport { Balances, ChainApi, elastic, getEventLogs, getProvider } from '@defillam"
  },
  {
    "path": "aggregator-derivatives/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "aggregator-derivatives/GUIDELINES.md",
    "chars": 1823,
    "preview": "# Derivatives Aggregator Guidelines\n\nThese guidelines apply to all adapters in the `aggregator-derivatives/` directory.\n"
  },
  {
    "path": "aggregator-derivatives/defiapp/index.ts",
    "chars": 1198,
    "preview": "// DEFI_APP_BUILDER_ADDRESS = '0x1922810825C90F4270048B96Da7b1803CD8609Ef';\n\nimport { FetchResult, SimpleAdapter } from "
  },
  {
    "path": "aggregator-derivatives/flat-money/helper.ts",
    "chars": 4305,
    "preview": "import {CHAIN} from \"../../helpers/chains\";\nimport {gql, GraphQLClient} from \"graphql-request\";\n\nexport const CONFIG = {"
  },
  {
    "path": "aggregator-derivatives/flat-money/index.ts",
    "chars": 1436,
    "preview": "import { SimpleAdapter, FetchV2, FetchResultV2 } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chain"
  },
  {
    "path": "aggregator-derivatives/flat-money-v1/index.ts",
    "chars": 1502,
    "preview": "import { SimpleAdapter, FetchV2, FetchResultV2 } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chain"
  },
  {
    "path": "aggregator-derivatives/flat-money-v2/index.ts",
    "chars": 1531,
    "preview": "import { SimpleAdapter, FetchV2, FetchResultV2 } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chain"
  },
  {
    "path": "aggregator-derivatives/kwenta/index.ts",
    "chars": 3327,
    "preview": "import { SimpleAdapter, FetchV2, FetchResultV2 } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chain"
  },
  {
    "path": "aggregator-derivatives/mux-protocol-agge.ts",
    "chars": 1226,
    "preview": "import fetchURL from \"../utils/fetchURL\"\nimport { Chain, FetchOptions } from \"../adapters/types\";\nimport { CHAIN } from "
  },
  {
    "path": "aggregator-derivatives/vooi/index.ts",
    "chars": 3548,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchResult, SimpleAdapter, FetchOptions } from \"../../adapters/ty"
  },
  {
    "path": "aggregator-options/GUIDELINES.md",
    "chars": 1595,
    "preview": "# Options Aggregator Guidelines\n\nThese guidelines apply to all adapters in the `aggregator-options/` directory.\n\n## Requ"
  },
  {
    "path": "aggregator-options/example.ts",
    "chars": 11,
    "preview": "//code here"
  },
  {
    "path": "aggregator-options/grix/index.ts",
    "chars": 1338,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/1delta/index.ts",
    "chars": 3660,
    "preview": "import { Adapter, FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { htt"
  },
  {
    "path": "aggregators/1inch-agg/index.ts",
    "chars": 1679,
    "preview": "import { Dependencies, FetchOptions, FetchResult, SimpleAdapter } from \"../../adapters/types\";\nimport { queryDuneSql } f"
  },
  {
    "path": "aggregators/3route/index.ts",
    "chars": 2135,
    "preview": "import { gql, request } from \"graphql-request\";\n\nimport { CHAIN } from \"../../helpers/chains\";\nimport fetchURL from \"../"
  },
  {
    "path": "aggregators/8dx-aggregator/index.ts",
    "chars": 1440,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/GUIDELINES.md",
    "chars": 1891,
    "preview": "# DEX Aggregator Guidelines\n\nThese guidelines apply to all adapters in the `aggregators/` directory.\n\n## Required Dimens"
  },
  {
    "path": "aggregators/aftermath-aggregator/index.ts",
    "chars": 530,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchResult, SimpleAdapter } from \"../../adapters/types\";\nimport {"
  },
  {
    "path": "aggregators/aggre/index.ts",
    "chars": 1066,
    "preview": "import { Chain } from \"../../adapters/types\";\nimport { FetchV2, SimpleAdapter } from \"../../adapters/types\";\nimport { CH"
  },
  {
    "path": "aggregators/akka/index.ts",
    "chars": 1207,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions, FetchResult, SimpleAdapter } from \"../../adapters/ty"
  },
  {
    "path": "aggregators/allox/index.ts",
    "chars": 946,
    "preview": "import { Adapter, FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { add"
  },
  {
    "path": "aggregators/anqa/index.ts",
    "chars": 2569,
    "preview": "import { Dependencies, FetchOptions, FetchResult, } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/ch"
  },
  {
    "path": "aggregators/apstation/index.ts",
    "chars": 865,
    "preview": "\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\ncons"
  },
  {
    "path": "aggregators/arbitrage-inc/index.ts",
    "chars": 1486,
    "preview": "import type { Adapter, FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport "
  },
  {
    "path": "aggregators/atmos-aggregator.ts",
    "chars": 612,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../adapters/types\";\nimport { CHAIN } from \"../helpers/chains\";\nimport { htt"
  },
  {
    "path": "aggregators/aura-agg/index.ts",
    "chars": 1645,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\nconst"
  },
  {
    "path": "aggregators/avnu/index.ts",
    "chars": 845,
    "preview": "import fetchURL from \"../../utils/fetchURL\"\nimport { FetchResult, SimpleAdapter } from \"../../adapters/types\";\nimport { "
  },
  {
    "path": "aggregators/barter/index.ts",
    "chars": 2252,
    "preview": "import { ethers } from \"ethers\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } fr"
  },
  {
    "path": "aggregators/bebop/index.ts",
    "chars": 12605,
    "preview": "import { ethers } from \"ethers\";\nimport { Adapter, Dependencies, FetchOptions } from \"../../adapters/types\";\nimport { ge"
  },
  {
    "path": "aggregators/bebop/jamAbi.ts",
    "chars": 27106,
    "preview": "const ABI = [\n  {\n    inputs: [\n      { internalType: \"address\", name: \"_permit2\", type: \"address\" },\n      { internalTy"
  },
  {
    "path": "aggregators/bim/config.ts",
    "chars": 2139,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\n\nconst SocketGatewayContracts: { [key: string]: string } = {\n    [CHAIN.ET"
  },
  {
    "path": "aggregators/bim/index.ts",
    "chars": 759,
    "preview": "import { FetchOptions, FetchResultVolume, SimpleAdapter } from \"../../adapters/types\";\nimport { fetchBungeeData } from \""
  },
  {
    "path": "aggregators/binancewallet/index.ts",
    "chars": 3752,
    "preview": "import { Dependencies, FetchOptions, FetchResult, SimpleAdapter } from \"../../adapters/types\";\nimport { queryDuneSql } f"
  },
  {
    "path": "aggregators/bitgetwallet/index.ts",
    "chars": 2221,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/bluefin7k-aggregator/index.ts",
    "chars": 631,
    "preview": "import fetchURL from '../../utils/fetchURL';\nimport { FetchV2, SimpleAdapter } from '../../adapters/types';\nimport { CHA"
  },
  {
    "path": "aggregators/bountive/index.ts",
    "chars": 730,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport "
  },
  {
    "path": "aggregators/bungee-dex.ts",
    "chars": 630,
    "preview": "import { FetchOptions, FetchResultVolume, SimpleAdapter } from \"../adapters/types\";\nimport { fetchBungeeChains, fetchBun"
  },
  {
    "path": "aggregators/bytzz/index.ts",
    "chars": 594,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions, Simple"
  },
  {
    "path": "aggregators/carina-aggregator/index.ts",
    "chars": 562,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from "
  },
  {
    "path": "aggregators/cetus-aggregator/index.ts",
    "chars": 627,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { httpGet } from \"../../utils/fetchURL\";\nimport { FetchOptions } fr"
  },
  {
    "path": "aggregators/chainspot/index.ts",
    "chars": 1988,
    "preview": "import { httpGet } from \"../../utils/fetchURL\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions, Sim"
  },
  {
    "path": "aggregators/chimpx/index.ts",
    "chars": 2107,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions, FetchResultVolume, SimpleAdapter } from \"../../adap"
  },
  {
    "path": "aggregators/conveyor/index.ts",
    "chars": 1392,
    "preview": "import { Dependencies, FetchOptions, FetchResult, SimpleAdapter, } from \"../../adapters/types\";\nimport { getSqlFromFile,"
  },
  {
    "path": "aggregators/cowswap/index.ts",
    "chars": 1076,
    "preview": "import { FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\nconst abis = {\n  \"Tr"
  },
  {
    "path": "aggregators/cro-ag/index.ts",
    "chars": 565,
    "preview": "import { CHAIN } from '../../helpers/chains'\r\nimport { httpGet } from '../../utils/fetchURL'\r\nimport { FetchOptions } fr"
  },
  {
    "path": "aggregators/dedust/index.ts",
    "chars": 1538,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { Dependencies, FetchOptions } from \"../../adapters/types\";\nimport "
  },
  {
    "path": "aggregators/defiapp/index.ts",
    "chars": 1510,
    "preview": "import { SimpleAdapter, FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/deluthium/index.ts",
    "chars": 2244,
    "preview": "import { FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { addOneToken "
  },
  {
    "path": "aggregators/dexhunter/index.ts",
    "chars": 987,
    "preview": "import { postURL } from \"../../utils/fetchURL\"\nimport { FetchResult, SimpleAdapter } from \"../../adapters/types\";\nimport"
  },
  {
    "path": "aggregators/dexr/index.ts",
    "chars": 6676,
    "preview": "import { Adapter, FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { MET"
  },
  {
    "path": "aggregators/dflow/index.ts",
    "chars": 2010,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport {\n  Dependencies,\n  FetchOptions,\n  SimpleAdapter,\n} from \"../../ad"
  },
  {
    "path": "aggregators/dirol/index.ts",
    "chars": 1064,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\nconst"
  },
  {
    "path": "aggregators/dodo-agg/index.ts",
    "chars": 4652,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/durianfun/index.ts",
    "chars": 4282,
    "preview": "/**\n * Durianfun Aggregator — DEX-aggregator volume adapter.\n * ── Protocol ────────────────────────────────────────────"
  },
  {
    "path": "aggregators/dzap/index.ts",
    "chars": 832,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { DZAP_SUPPORTED_CHAINS, fetchChainWiseVolume"
  },
  {
    "path": "aggregators/eisen/index.ts",
    "chars": 3740,
    "preview": "import { FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport ADDRESSES from"
  },
  {
    "path": "aggregators/enso/index.ts",
    "chars": 2201,
    "preview": "import { httpGet } from \"../../utils/fetchURL\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } fr"
  },
  {
    "path": "aggregators/erc-burner/index.ts",
    "chars": 1920,
    "preview": "import { SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\n// Contract address"
  },
  {
    "path": "aggregators/etaswap/index.ts",
    "chars": 574,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport fetchURL from \"../../utils/fetchURL\";\n\nconst fetch = async (timesta"
  },
  {
    "path": "aggregators/fibrous-finance/index.ts",
    "chars": 1070,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions, FetchResult } from \"../../adapters/types\";\nimport { "
  },
  {
    "path": "aggregators/flowx-aggregator/index.ts",
    "chars": 646,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { httpGet } from \"../../utils/fetchURL\";\nimport { FetchOptions } fr"
  },
  {
    "path": "aggregators/fluxa/index.ts",
    "chars": 650,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport"
  },
  {
    "path": "aggregators/gluex-protocol/index.ts",
    "chars": 5777,
    "preview": "import ADDRESSES from '../../helpers/coreAssets.json'\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\""
  },
  {
    "path": "aggregators/grelfswap/index.ts",
    "chars": 674,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/groypfi/index.ts",
    "chars": 3528,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/haiku/index.ts",
    "chars": 2978,
    "preview": "\nimport {\n  HaikuChainConfig,\n  mappingChainToDuneChain,\n} from \"../../helpers/aggregators/haiku\";\nimport { Dependencies"
  },
  {
    "path": "aggregators/hallswap/index.ts",
    "chars": 1621,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { BaseAdapter, FetchOptions, SimpleAdapter } from \"../../adapters/ty"
  },
  {
    "path": "aggregators/hinkal/index.ts",
    "chars": 4054,
    "preview": "import { Adapter, FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport fetch"
  },
  {
    "path": "aggregators/holdstation-agg/index.ts",
    "chars": 3466,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/houdiniswap/index.ts",
    "chars": 2407,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } from "
  },
  {
    "path": "aggregators/hyperbloom/index.ts",
    "chars": 1495,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\nconst"
  },
  {
    "path": "aggregators/hyperflow/index.ts",
    "chars": 744,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/injex/index.ts",
    "chars": 488,
    "preview": "import { CHAIN } from '../../helpers/chains';\nimport fetchURL from '../../utils/fetchURL';\n\nconst fetch = async (_a: any"
  },
  {
    "path": "aggregators/inoswap/index.ts",
    "chars": 1612,
    "preview": "import { FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { addTokensRec"
  },
  {
    "path": "aggregators/jeton/index.ts",
    "chars": 1463,
    "preview": "import { Adapter, FetchResultVolume } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport "
  },
  {
    "path": "aggregators/joe-agg/index.ts",
    "chars": 1186,
    "preview": "import {\n  FetchOptions, SimpleAdapter\n} from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\ncon"
  },
  {
    "path": "aggregators/jumper-exchange/index.ts",
    "chars": 2922,
    "preview": "import { Chain } from \"../../adapters/types\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport"
  },
  {
    "path": "aggregators/jupiter-aggregator/index.ts",
    "chars": 1035,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { Dependencies, FetchOptions } from \"../../adapters/types\";\nimport "
  },
  {
    "path": "aggregators/kame-aggregator/index.ts",
    "chars": 636,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from "
  },
  {
    "path": "aggregators/kanalabs/index.ts",
    "chars": 2633,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport "
  },
  {
    "path": "aggregators/kuru/index.ts",
    "chars": 2213,
    "preview": "import { FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\nconst abis = {\n  \"Ku"
  },
  {
    "path": "aggregators/kyberswap/index.ts",
    "chars": 2111,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/kyoag/index.ts",
    "chars": 7024,
    "preview": "import { ethers } from \"ethers\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } fr"
  },
  {
    "path": "aggregators/lamboo/index.ts",
    "chars": 6866,
    "preview": "import { Dependencies, FetchOptions, FetchResult, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \".."
  },
  {
    "path": "aggregators/lifi/index.ts",
    "chars": 2304,
    "preview": "import { FetchOptions, FetchResultVolume, SimpleAdapter } from \"../../adapters/types\";\nimport { LifiDiamonds, fetchVolum"
  },
  {
    "path": "aggregators/lilswap/index.ts",
    "chars": 3235,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/liquidmesh/index.ts",
    "chars": 3790,
    "preview": "import { Dependencies, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/liquidswap/index.ts",
    "chars": 5055,
    "preview": "import { FetchOptions, FetchResult, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/ch"
  },
  {
    "path": "aggregators/llamaswap/index.ts",
    "chars": 1271,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions, FetchResult, SimpleAdapter } from \"../../adapters/ty"
  },
  {
    "path": "aggregators/lunar-finance/index.ts",
    "chars": 1553,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport "
  },
  {
    "path": "aggregators/madhouse/index.ts",
    "chars": 798,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } from \"../../adapters/types\";\n\nconst CONTRACTS: Rec"
  },
  {
    "path": "aggregators/magpie/index.ts",
    "chars": 3183,
    "preview": "import { postURL } from \"../../utils/fetchURL\";\nimport { ChainBlocks, FetchOptions, FetchResult, SimpleAdapter } from \"."
  },
  {
    "path": "aggregators/metamask.ts",
    "chars": 3910,
    "preview": "import * as sdk from \"@defillama/sdk\";\nimport { Chain, FetchResultV2 } from \"../adapters/types\";\nimport { CHAIN } from \""
  },
  {
    "path": "aggregators/mimboku-aggregator/index.ts",
    "chars": 2401,
    "preview": "import { gql, request } from \"graphql-request\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimpo"
  },
  {
    "path": "aggregators/minswap/index.ts",
    "chars": 632,
    "preview": "import fetchURL from '../../utils/fetchURL';\nimport { FetchV2, SimpleAdapter } from '../../adapters/types';\nimport { CHA"
  },
  {
    "path": "aggregators/monbridgedex/index.ts",
    "chars": 1154,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } from \"../../adapters/types\";\n\nconst CONTRACTS: Rec"
  },
  {
    "path": "aggregators/monorail.ts",
    "chars": 732,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../adapters/types\";\nimport { CHAIN } from \"../helpers/chains\";\n\nconst fetch"
  },
  {
    "path": "aggregators/mosaic/index.ts",
    "chars": 633,
    "preview": "import { FetchOptions } from \"../../adapters/types\"\nimport { CHAIN } from \"../../helpers/chains\"\nimport fetchURL from \"."
  },
  {
    "path": "aggregators/nanoport/index.ts",
    "chars": 1789,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { Dependencies, FetchOptions, SimpleAdapter } from \"../../adapters/"
  },
  {
    "path": "aggregators/navi/index.ts",
    "chars": 1130,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } from \"../../adapters/types\";\nimport { httpPost } f"
  },
  {
    "path": "aggregators/neptune-swap/index.ts",
    "chars": 1426,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } from \"../../adapters/types\";\n\nconst AGGREGATOR_CON"
  },
  {
    "path": "aggregators/nordstern-finance/index.ts",
    "chars": 5808,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions, FetchResult, SimpleAdapter } from \"../../adapters/ty"
  },
  {
    "path": "aggregators/obsidian/index.ts",
    "chars": 4031,
    "preview": "import { ethers, getAddress, id, zeroPadValue } from \"ethers\";\nimport { BaseAdapter, FetchOptions, SimpleAdapter } from "
  },
  {
    "path": "aggregators/odos/index.ts",
    "chars": 6529,
    "preview": "\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimpor"
  },
  {
    "path": "aggregators/okx/index.ts",
    "chars": 5138,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } from \"../../adapters/types\";\nimport { getEnv } fro"
  },
  {
    "path": "aggregators/oogabooga/index.ts",
    "chars": 2455,
    "preview": "import type { FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\nconst swapEvent"
  },
  {
    "path": "aggregators/ooia/index.ts",
    "chars": 837,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/openocean/index.ts",
    "chars": 2155,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport"
  },
  {
    "path": "aggregators/opensea/index.ts",
    "chars": 2327,
    "preview": "import { Dependencies, FetchOptions } from \"../../adapters/types\";\nimport { queryDuneSql } from \"../../helpers/dune\";\nim"
  },
  {
    "path": "aggregators/opt-agg/index.ts",
    "chars": 584,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchResult, SimpleAdapter } from \"../../adapters/types\";\nimport {"
  },
  {
    "path": "aggregators/orbiter-finance/index.ts",
    "chars": 1306,
    "preview": "import type { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\n"
  },
  {
    "path": "aggregators/paraswap/index.ts",
    "chars": 4673,
    "preview": "import { FetchResult, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport "
  },
  {
    "path": "aggregators/rainbow-swap/index.ts",
    "chars": 641,
    "preview": "import { Fetch, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport fetchU"
  },
  {
    "path": "aggregators/rango/index.ts",
    "chars": 4480,
    "preview": "import { Adapter, FetchOptions } from '../../adapters/types';\nimport { httpGet } from '../../utils/fetchURL';\nimport { C"
  },
  {
    "path": "aggregators/rheon/index.ts",
    "chars": 747,
    "preview": "import type { FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\nconst AGGREGATO"
  },
  {
    "path": "aggregators/rubic/index.ts",
    "chars": 2972,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions, FetchResult, SimpleAdapter } from \"../../adapters/ty"
  },
  {
    "path": "aggregators/scallop/index.ts",
    "chars": 585,
    "preview": "import fetchURL from '../../utils/fetchURL';\nimport { FetchV2, SimpleAdapter } from '../../adapters/types';\nimport { CHA"
  },
  {
    "path": "aggregators/stackit/index.ts",
    "chars": 3604,
    "preview": "import { FetchOptions, FetchResultV2, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/"
  },
  {
    "path": "aggregators/superboring/index.ts",
    "chars": 6003,
    "preview": "import { request, gql } from 'graphql-request'\nimport { CHAIN } from '../../helpers/chains'\nimport { FetchOptions, Simpl"
  },
  {
    "path": "aggregators/superswap/index.ts",
    "chars": 8070,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\"\nimport { CHAIN } from \"../../helpers/chains\"\nimport A"
  },
  {
    "path": "aggregators/sushiswap-agg.ts",
    "chars": 36918,
    "preview": "import ADDRESSES from '../helpers/coreAssets.json'\nimport { FetchResultV2, FetchV2 } from \"../adapters/types\";\nimport { "
  },
  {
    "path": "aggregators/swap-coffee/index.ts",
    "chars": 776,
    "preview": "import { Adapter, FetchV2 } from \"../../adapters/types\";\nimport { httpGet } from \"../../utils/fetchURL\";\nimport { CHAIN "
  },
  {
    "path": "aggregators/swapgpt/index.ts",
    "chars": 908,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport "
  },
  {
    "path": "aggregators/swing/index.ts",
    "chars": 2382,
    "preview": "import { httpGet } from \"../../utils/fetchURL\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } fr"
  },
  {
    "path": "aggregators/symphony/index.ts",
    "chars": 998,
    "preview": "import { Adapter, FetchOptions, FetchResultVolume } from \"../../adapters/types\";\r\nimport { CHAIN } from \"../../helpers/c"
  },
  {
    "path": "aggregators/tephra/index.ts",
    "chars": 1397,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\nconst"
  },
  {
    "path": "aggregators/tideswap/index.ts",
    "chars": 1551,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "aggregators/titan/index.ts",
    "chars": 656,
    "preview": "import { Adapter, FetchV2 } from \"../../adapters/types\";\nimport { httpGet } from \"../../utils/fetchURL\";\nimport { CHAIN "
  },
  {
    "path": "aggregators/titan-exchange/index.ts",
    "chars": 1050,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } from "
  },
  {
    "path": "aggregators/tondiamonds/index.ts",
    "chars": 673,
    "preview": "import { Adapter } from \"../../adapters/types\";\nimport { httpGet } from \"../../utils/fetchURL\";\nimport { CHAIN } from \"."
  },
  {
    "path": "aggregators/udex-agg/index.ts",
    "chars": 1669,
    "preview": "import ADDRESSES from '../../helpers/coreAssets.json'\nimport { Chain } from \"../../adapters/types\";\nimport { FetchResult"
  },
  {
    "path": "aggregators/unizen/index.ts",
    "chars": 1859,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { httpGet } from \"../../utils/fetchURL\";\nimpo"
  },
  {
    "path": "aggregators/venum/index.ts",
    "chars": 1103,
    "preview": "import { Adapter, FetchV2 } from \"../../adapters/types\";\nimport { httpGet } from \"../../utils/fetchURL\";\nimport { CHAIN "
  },
  {
    "path": "aggregators/vetrade/index.ts",
    "chars": 825,
    "preview": "import fetchURL from \"../../utils/fetchURL\"\nimport { FetchOptions, FetchResult, SimpleAdapter } from \"../../adapters/typ"
  },
  {
    "path": "aggregators/virtus/index.ts",
    "chars": 3181,
    "preview": "import { Adapter, FetchOptions } from '../../adapters/types';\nimport { httpGet } from '../../utils/fetchURL';\nimport { C"
  },
  {
    "path": "aggregators/wolfswap/index.ts",
    "chars": 1750,
    "preview": "import { FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\nconst abis = {\n  \"Sw"
  },
  {
    "path": "aggregators/wowmax/index.ts",
    "chars": 1406,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } from "
  },
  {
    "path": "aggregators/yield-yak/index.ts",
    "chars": 854,
    "preview": "import { FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\nconst routers: any ="
  },
  {
    "path": "aggregators/zrx/index.ts",
    "chars": 1661,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } from \"../../adapters/types\";\nimport { getEnv } fro"
  },
  {
    "path": "bridge-aggregators/GUIDELINES.md",
    "chars": 1873,
    "preview": "# Bridge Aggregator Guidelines\n\nThese guidelines apply to all adapters in the `bridge-aggregators/` directory.\n\n## Requi"
  },
  {
    "path": "bridge-aggregators/babydoge-bridge/index.ts",
    "chars": 1426,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { httpGet } from \"../../utils/fetchURL\";\nimpo"
  },
  {
    "path": "bridge-aggregators/bim/index.ts",
    "chars": 730,
    "preview": "import { FetchOptions, FetchResultVolume, SimpleAdapter } from \"../../adapters/types\";\nimport { fetchBungeeData } from \""
  },
  {
    "path": "bridge-aggregators/bitgetwallet/index.ts",
    "chars": 1621,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport"
  },
  {
    "path": "bridge-aggregators/brotocol/index.ts",
    "chars": 1618,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "bridge-aggregators/bungee-bridge/index.ts",
    "chars": 650,
    "preview": "import { FetchOptions, FetchResultVolume, SimpleAdapter } from \"../../adapters/types\";\nimport { fetchBungeeChains, fetch"
  },
  {
    "path": "bridge-aggregators/dzap/index.ts",
    "chars": 683,
    "preview": "import { FetchOptions, FetchResultV2, SimpleAdapter } from \"../../adapters/types\";\nimport { DZAP_SUPPORTED_CHAINS, fetch"
  },
  {
    "path": "bridge-aggregators/garden/index.ts",
    "chars": 5832,
    "preview": "import { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\nimport"
  },
  {
    "path": "bridge-aggregators/jumper.exchange/index.ts",
    "chars": 1730,
    "preview": "import { FetchOptions, FetchResultVolume, SimpleAdapter } from \"../../adapters/types\";\nimport { LifiDiamonds, fetchVolum"
  },
  {
    "path": "bridge-aggregators/lifi/index.ts",
    "chars": 1757,
    "preview": "import { FetchOptions, FetchResultVolume, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../help"
  },
  {
    "path": "bridge-aggregators/lunar-finance-bridge/index.ts",
    "chars": 1578,
    "preview": "import fetchURL from \"../../utils/fetchURL\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport "
  },
  {
    "path": "bridge-aggregators/mynth/index.ts",
    "chars": 2531,
    "preview": "import BigNumber from \"bignumber.js\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN"
  },
  {
    "path": "bridge-aggregators/okx/index.ts",
    "chars": 3503,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { FetchOptions } from \"../../adapters/types\";\nimport { getEnv } fro"
  },
  {
    "path": "bridge-aggregators/opensea/index.ts",
    "chars": 2726,
    "preview": "import { Dependencies, FetchOptions } from \"../../adapters/types\";\nimport { queryDuneSql } from \"../../helpers/dune\";\nim"
  },
  {
    "path": "bridge-aggregators/orbiter-finance/index.ts",
    "chars": 1288,
    "preview": "import type { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\n"
  },
  {
    "path": "bridge-aggregators/rango/index.ts",
    "chars": 2426,
    "preview": "import { Adapter, FetchOptions } from '../../adapters/types';\nimport { httpGet } from '../../utils/fetchURL';\nimport { C"
  },
  {
    "path": "bridge-aggregators/rubic/index.ts",
    "chars": 3830,
    "preview": "import { FetchOptions, FetchResult, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/ch"
  },
  {
    "path": "bridge-aggregators/sharpe-bridge/index.ts",
    "chars": 2210,
    "preview": "import { Chain } from \"../../adapters/types\";\nimport { FetchOptions, FetchResultVolume, SimpleAdapter } from \"../../adap"
  },
  {
    "path": "bridge-aggregators/socket/contracts.ts",
    "chars": 12770,
    "preview": "import ADDRESSES from '../../helpers/coreAssets.json'\nimport { CHAIN } from \"../../helpers/chains\";\n\n// chain => vault ="
  },
  {
    "path": "bridge-aggregators/socket/index.ts",
    "chars": 3779,
    "preview": "import { Interface } from \"ethers\";\nimport { FetchOptions, FetchResultVolume, SimpleAdapter } from \"../../adapters/types"
  },
  {
    "path": "bridge-aggregators/stableflow/index.ts",
    "chars": 1942,
    "preview": "import { Fetch, FetchResult, FetchV2, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/"
  },
  {
    "path": "bridge-aggregators/swing/index.ts",
    "chars": 2522,
    "preview": "import { CHAIN } from \"../../helpers/chains\";\nimport { httpGet } from \"../../utils/fetchURL\";\nimport { FetchOptions, Sim"
  },
  {
    "path": "bridge-aggregators/virtus/index.ts",
    "chars": 2796,
    "preview": "import { Adapter, FetchOptions } from '../../adapters/types';\nimport { httpGet } from '../../utils/fetchURL';\nimport { C"
  },
  {
    "path": "bridge-aggregators/xy-finance/index.ts",
    "chars": 6717,
    "preview": "import { Chain } from \"../../adapters/types\";\nimport { FetchOptions, SimpleAdapter } from \"../../adapters/types\";\nimport"
  },
  {
    "path": "cli/buildModules.ts",
    "chars": 6470,
    "preview": "// console.log(\"Building import files for tvl/dimensions/emissions/liquidations adapters\")\n\nimport { readdir, writeFile "
  },
  {
    "path": "cli/compareModules.js",
    "chars": 7514,
    "preview": "const fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst SKIP_FIELDS = new Set([\"moduleFilePath\", \"codePath\", \"_ra"
  },
  {
    "path": "cli/interactive.js",
    "chars": 1977,
    "preview": "const inquirer = require('inquirer')\nconst childProcess = require('child_process')\ninquirer.registerPrompt('fuzzypath', "
  },
  {
    "path": "cli/migrateDeadProjects.ts",
    "chars": 6388,
    "preview": "import { readdir, writeFile, rm, mkdir } from \"fs/promises\";\nimport { existsSync, readFileSync, statSync } from \"fs\";\nim"
  },
  {
    "path": "cli/moduleStats.js",
    "chars": 2782,
    "preview": "const data = require('./dimensionModules.json');\n\nfunction newStat() {\n  return { total: 0, noVersion: 0, version1: 0, v"
  },
  {
    "path": "cli/testAdapter.ts",
    "chars": 9973,
    "preview": "require('dotenv').config()\nimport { execSync } from 'child_process';\nimport * as path from 'path';\nimport * as sdk from "
  },
  {
    "path": "cli/utils.ts",
    "chars": 7350,
    "preview": "import { SimpleAdapter, whitelistedDimensionKeys } from \"../adapters/types\";\nimport * as sdk from \"@defillama/sdk\";\n\ncon"
  },
  {
    "path": "dexs/0x-limit.ts",
    "chars": 1676,
    "preview": "import { SimpleAdapter, FetchV2 } from \"../adapters/types\";\nimport { CHAIN } from \"../helpers/chains\";\n\nconst config = {"
  },
  {
    "path": "dexs/0x-otc.ts",
    "chars": 1568,
    "preview": "import { SimpleAdapter, FetchV2 } from \"../adapters/types\";\nimport { CHAIN } from \"../helpers/chains\";\n\nconst config = {"
  },
  {
    "path": "dexs/0x-rfq.ts",
    "chars": 1582,
    "preview": "import { SimpleAdapter, FetchV2 } from \"../adapters/types\";\nimport { CHAIN } from \"../helpers/chains\";\n\nconst config = {"
  },
  {
    "path": "dexs/10kswap/index.ts",
    "chars": 911,
    "preview": "import fetchURL from \"../../utils/fetchURL\"\nimport { SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from "
  },
  {
    "path": "dexs/1776meme/index.ts",
    "chars": 1475,
    "preview": "import { Adapter, FetchOptions } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains\";\n\n// Addresse"
  },
  {
    "path": "dexs/1dex/index.ts",
    "chars": 407,
    "preview": "import { CHAIN } from \"../../helpers/chains\"\nimport { httpGet } from \"../../utils/fetchURL\"\n\nasync function fetch() {\n  "
  },
  {
    "path": "dexs/4swap/index.ts",
    "chars": 636,
    "preview": "import fetchURL from \"../../utils/fetchURL\"\nimport { type SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } "
  },
  {
    "path": "dexs/ArbitrumExchange-v2.ts",
    "chars": 367,
    "preview": "import { SimpleAdapter } from \"../adapters/types\";\nimport { CHAIN } from \"../helpers/chains\";\nimport { getUniV2LogAdapte"
  },
  {
    "path": "dexs/ArbitrumExchange-v3.ts",
    "chars": 394,
    "preview": "import { SimpleAdapter } from \"../adapters/types\";\nimport { CHAIN } from \"../helpers/chains\";\nimport { getUniV3LogAdapte"
  },
  {
    "path": "dexs/FeeFree/index.ts",
    "chars": 1521,
    "preview": "import { FetchOptions, FetchV2, SimpleAdapter } from \"../../adapters/types\";\nimport { CHAIN } from \"../../helpers/chains"
  },
  {
    "path": "dexs/GUIDELINES.md",
    "chars": 2808,
    "preview": "# DEX Volume Adapter Guidelines\n\nThese guidelines apply to all adapters in the `dexs/` directory.\n\n## Required Dimension"
  },
  {
    "path": "dexs/ICDex/index.ts",
    "chars": 659,
    "preview": "import { Adapter, FetchResultVolume } from \"../../adapters/types\"\nimport { CHAIN } from \"../../helpers/chains\";\nimport f"
  }
]

// ... and 2338 more files (download for full content)

About this extraction

This page contains the full source code of the DefiLlama/dimension-adapters GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2538 files (7.6 MB), approximately 2.1M tokens, and a symbol index with 4674 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!