{
  "schemaVersion": 3,
  "title": "Sonic Decode Relay",
  "chain": {
    "name": "Sonic",
    "chainId": 146,
    "slug": "sonic"
  },
  "generatedAt": "2026-08-12T12:51:28.084Z",
  "evidence": {
    "gapSnapshot": "2026-08-11T20:58:56Z",
    "spellbookCommit": "9508101c34b635abdcb1423f02a71cbcabd3c8b3",
    "gapFamilies": 27,
    "defillamaGapEngines": 30,
    "method": "Factories and managers come from protocol adapters/registries. Representative pools are proven by factory creation logs, direct factory reads, or the supplied Dexscreener pool pages. Verified ABIs come from SonicScan; unverified contracts use only exact event fragments from the cited adapter family. Already-decoded reference lanes preserve their current Dune namespace and model source."
  },
  "sources": [
    "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
    "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
    "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
    "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js",
    "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/traderJoeV2.js",
    "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/metropolis-amm/index.ts",
    "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/shadow-legacy.ts",
    "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/sonic-market-orderbook/index.ts",
    "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json",
    "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/woofi.js",
    "https://github.com/woonetwork/woofi_swap_smart_contracts/blob/main/contracts/interfaces/IWooPPV2.sol",
    "https://github.com/duneanalytics/spellbook/tree/main/dbt_subprojects/dex/models/trades/sonic",
    "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/uniswap_v3_sonic_base_trades.sql",
    "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/beets_v2_sonic_base_trades.sql",
    "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/beets_v3_sonic_base_trades.sql",
    "https://github.com/beethovenxfi/balancer-deployments/blob/master/addresses/sonic.json",
    "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/equalizer_sonic_base_trades.sql",
    "https://docs.equalizer.exchange/equal-sonic/contracts/"
  ],
  "excluded": [
    {
      "engine": "PaintSwap on Fantom",
      "reason": "The Sonic volume row does not resolve to a Sonic pool factory in the inspected adapter."
    },
    {
      "engine": "SushiSwap V3",
      "reason": "No Sonic V3 factory was present in the inspected current DefiLlama registries."
    },
    {
      "engine": "Vertex AMM",
      "reason": "Subgraph/API source did not expose a factory/pool ABI packet."
    },
    {
      "engine": "XPress Protocol",
      "reason": "No source-backed Sonic deployment was found in the inspected adapters."
    },
    {
      "engine": "Omni Exchange Flux",
      "reason": "Subgraph-only adapter; no source-backed Sonic deployment packet found."
    },
    {
      "engine": "Tristero Spot",
      "reason": "Router-schedule order flow is not a pool/factory decoder submission."
    },
    {
      "engine": "1inch Aqua",
      "reason": "Order protocol flow requires a separate decoding model, not a pool/factory packet."
    },
    {
      "engine": "DeFive / DYORSwap / Fat Finger / SonicSwap",
      "reason": "Dexscreener-only labels without a source-backed Sonic deployment in the inspected adapters."
    }
  ],
  "engines": [
    {
      "id": "oku-uniswap-v3",
      "project": "Oku",
      "version": "Uniswap V3",
      "family": "Oku / Uniswap V3",
      "duneState": "already-decoded",
      "priority": "reference",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "uniswap_v3_sonic",
      "sourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/uniswap_v3_sonic_base_trades.sql",
      "dexscreenerUrl": "https://dexscreener.com/sonic/oku",
      "creationBlock": null,
      "poolCount": null,
      "note": "Dexscreener labels Sonic Uniswap V3 pools as Oku. Dune already models this engine as project uniswap, version 3.",
      "contractIds": [
        "oku-uniswap-v3-factory",
        "oku-uniswap-v3-pool"
      ]
    },
    {
      "id": "beets-v2",
      "project": "Beets",
      "version": "V2",
      "family": "Beets",
      "duneState": "already-decoded",
      "priority": "reference",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "beets_v2_sonic",
      "sourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/beets_v2_sonic_base_trades.sql",
      "dexscreenerUrl": "https://dexscreener.com/sonic/beets",
      "creationBlock": null,
      "poolCount": null,
      "note": "Balancer-compatible v2 trades emit Swap from the canonical Sonic Beets Vault; per-pool contracts are not the Dune trade emitter.",
      "contractIds": [
        "beets-v2-pool"
      ]
    },
    {
      "id": "beets-v3",
      "project": "Beets",
      "version": "V3",
      "family": "Beets",
      "duneState": "already-decoded",
      "priority": "reference",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "beets_v3_sonic",
      "sourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/beets_v3_sonic_base_trades.sql",
      "dexscreenerUrl": "https://dexscreener.com/sonic/beets",
      "creationBlock": null,
      "poolCount": null,
      "note": "Balancer-compatible v3 trades emit Swap from the canonical Sonic Beets Vault; this verified proxy resolves to its implementation ABI.",
      "contractIds": [
        "beets-v3-pool"
      ]
    },
    {
      "id": "equalizer-v1",
      "project": "Equalizer",
      "version": "V1",
      "family": "Equalizer",
      "duneState": "already-decoded",
      "priority": "reference",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "equalizer_sonic",
      "sourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/equalizer_sonic_base_trades.sql",
      "dexscreenerUrl": "https://dexscreener.com/sonic/equalizer",
      "creationBlock": null,
      "poolCount": null,
      "note": "This is Equalizer core V1. Dexscreener also folds 2THICK concentrated-liquidity pools into its Equalizer filter; that separate engine remains in the queue below.",
      "contractIds": [
        "equalizer-v1-factory",
        "equalizer-v1-pool"
      ]
    },
    {
      "id": "metropolis-dlmm",
      "project": "Metropolis",
      "version": "DLMM",
      "family": "Metropolis",
      "duneState": "needs-decoding",
      "priority": "critical",
      "volume30d": 2549865,
      "volumeScope": "family total",
      "suggestedNamespace": "metropolis_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/traderJoeV2.js",
      "dexscreenerUrl": null,
      "creationBlock": 296542,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "metropolis-dlmm-factory",
        "metropolis-dlmm-pool"
      ]
    },
    {
      "id": "metropolis-amm",
      "project": "Metropolis",
      "version": "AMM",
      "family": "Metropolis",
      "duneState": "needs-decoding",
      "priority": "critical",
      "volume30d": 2549865,
      "volumeScope": "family total",
      "suggestedNamespace": "metropolis_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/metropolis-amm/index.ts",
      "dexscreenerUrl": null,
      "creationBlock": 277573,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "metropolis-amm-factory",
        "metropolis-amm-pool"
      ]
    },
    {
      "id": "swapx-v2",
      "project": "SwapX",
      "version": "V2",
      "family": "SwapX",
      "duneState": "needs-decoding",
      "priority": "critical",
      "volume30d": 1869378,
      "volumeScope": "family total",
      "suggestedNamespace": "swapx_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "dexscreenerUrl": null,
      "creationBlock": 1917195,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "swapx-v2-factory",
        "swapx-v2-pool"
      ]
    },
    {
      "id": "swapx-algebra",
      "project": "SwapX",
      "version": "Algebra",
      "family": "SwapX",
      "duneState": "needs-decoding",
      "priority": "critical",
      "volume30d": 1869378,
      "volumeScope": "family total",
      "suggestedNamespace": "swapx_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "dexscreenerUrl": null,
      "creationBlock": 1897950,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "swapx-algebra-factory",
        "swapx-algebra-pool"
      ]
    },
    {
      "id": "spookyswap-v2",
      "project": "SpookySwap",
      "version": "V2",
      "family": "SpookySwap",
      "duneState": "needs-decoding",
      "priority": "high",
      "volume30d": 422435,
      "volumeScope": "family total",
      "suggestedNamespace": "spookyswap_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "dexscreenerUrl": null,
      "creationBlock": 308650,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "spookyswap-v2-factory",
        "spookyswap-v2-pool"
      ]
    },
    {
      "id": "spookyswap-v3",
      "project": "SpookySwap",
      "version": "V3",
      "family": "SpookySwap",
      "duneState": "needs-decoding",
      "priority": "high",
      "volume30d": 422435,
      "volumeScope": "family total",
      "suggestedNamespace": "spookyswap_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "dexscreenerUrl": null,
      "creationBlock": 308130,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "spookyswap-v3-factory",
        "spookyswap-v3-pool"
      ]
    },
    {
      "id": "thick",
      "project": "Thick",
      "version": "V3",
      "family": "Thick / 2THICK",
      "duneState": "needs-decoding",
      "priority": "high",
      "volume30d": 256206,
      "volumeScope": "family total",
      "suggestedNamespace": "thick_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "dexscreenerUrl": null,
      "creationBlock": 3195559,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "thick-factory",
        "thick-pool"
      ]
    },
    {
      "id": "2thick",
      "project": "2THICK",
      "version": "CL",
      "family": "Thick / 2THICK",
      "duneState": "needs-decoding",
      "priority": "high",
      "volume30d": 256206,
      "volumeScope": "family total",
      "suggestedNamespace": "2thick_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "dexscreenerUrl": null,
      "creationBlock": 1424248,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "2thick-factory",
        "2thick-pool"
      ]
    },
    {
      "id": "shadow-legacy",
      "project": "Shadow Exchange",
      "version": "Legacy V2",
      "family": "Shadow Exchange Legacy",
      "duneState": "decoded-unmodeled",
      "priority": "high",
      "volume30d": 159000,
      "volumeScope": null,
      "suggestedNamespace": "shadow_exchange_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/shadow-legacy.ts",
      "dexscreenerUrl": null,
      "creationBlock": 4041572,
      "poolCount": null,
      "note": "Factory and Pair Swap tables already exist in Dune decoded sources; the missing piece is the dex.trades model.",
      "contractIds": [
        "shadow-legacy-factory",
        "shadow-legacy-pool"
      ]
    },
    {
      "id": "solidly-v3",
      "project": "Solidly",
      "version": "V3",
      "family": "Solidly",
      "duneState": "needs-decoding",
      "priority": "high",
      "volume30d": 150000,
      "volumeScope": null,
      "suggestedNamespace": "solidly_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js",
      "dexscreenerUrl": null,
      "creationBlock": 524404,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "solidly-v3-factory",
        "solidly-v3-pool"
      ]
    },
    {
      "id": "zkswap-v2",
      "project": "zkSwap",
      "version": "V2",
      "family": "zkSwap",
      "duneState": "needs-decoding",
      "priority": "high",
      "volume30d": 112586,
      "volumeScope": "family total",
      "suggestedNamespace": "zkswap_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "dexscreenerUrl": null,
      "creationBlock": 22980463,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "zkswap-v2-factory",
        "zkswap-v2-pool"
      ]
    },
    {
      "id": "zkswap-v3",
      "project": "zkSwap",
      "version": "V3",
      "family": "zkSwap",
      "duneState": "needs-decoding",
      "priority": "high",
      "volume30d": 112586,
      "volumeScope": "family total",
      "suggestedNamespace": "zkswap_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js",
      "dexscreenerUrl": null,
      "creationBlock": 18895650,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "zkswap-v3-factory",
        "zkswap-v3-pool"
      ]
    },
    {
      "id": "curve-stableswap-ng",
      "project": "Curve",
      "version": "StableSwap NG",
      "family": "Curve",
      "duneState": "needs-decoding",
      "priority": "medium",
      "volume30d": 33000,
      "volumeScope": null,
      "suggestedNamespace": "curve_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json",
      "dexscreenerUrl": null,
      "creationBlock": null,
      "poolCount": 128,
      "note": null,
      "contractIds": [
        "curve-stableswap-ng-factory",
        "curve-stableswap-ng-pool"
      ]
    },
    {
      "id": "curve-twocrypto-ng",
      "project": "Curve",
      "version": "TwoCrypto NG",
      "family": "Curve",
      "duneState": "needs-decoding",
      "priority": "medium",
      "volume30d": 33000,
      "volumeScope": "family total",
      "suggestedNamespace": "curve_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json",
      "dexscreenerUrl": null,
      "creationBlock": null,
      "poolCount": 36,
      "note": null,
      "contractIds": [
        "curve-twocrypto-ng-factory",
        "curve-twocrypto-ng-pool"
      ]
    },
    {
      "id": "curve-tricrypto-ng",
      "project": "Curve",
      "version": "TriCrypto NG",
      "family": "Curve",
      "duneState": "needs-decoding",
      "priority": "medium",
      "volume30d": 33000,
      "volumeScope": "family total",
      "suggestedNamespace": "curve_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json",
      "dexscreenerUrl": null,
      "creationBlock": null,
      "poolCount": 9,
      "note": null,
      "contractIds": [
        "curve-tricrypto-ng-factory",
        "curve-tricrypto-ng-pool"
      ]
    },
    {
      "id": "sushiswap-v2",
      "project": "SushiSwap",
      "version": "V2",
      "family": "SushiSwap",
      "duneState": "needs-decoding",
      "priority": "medium",
      "volume30d": 28000,
      "volumeScope": null,
      "suggestedNamespace": "sushiswap_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "dexscreenerUrl": null,
      "creationBlock": 585316,
      "poolCount": null,
      "note": "Factory remains present in the DefiLlama registry history and emitted the representative pair on Sonic.",
      "contractIds": [
        "sushiswap-v2-factory",
        "sushiswap-v2-pool"
      ]
    },
    {
      "id": "9mm-v2",
      "project": "9mm",
      "version": "V2",
      "family": "9mm",
      "duneState": "needs-decoding",
      "priority": "medium",
      "volume30d": 23348,
      "volumeScope": "family total",
      "suggestedNamespace": "9mm_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "dexscreenerUrl": null,
      "creationBlock": 10355821,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "9mm-v2-factory",
        "9mm-v2-pool"
      ]
    },
    {
      "id": "9mm-v3",
      "project": "9mm",
      "version": "V3",
      "family": "9mm",
      "duneState": "needs-decoding",
      "priority": "medium",
      "volume30d": 23348,
      "volumeScope": "family total",
      "suggestedNamespace": "9mm_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "dexscreenerUrl": null,
      "creationBlock": 10333381,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "9mm-v3-factory",
        "9mm-v3-pool"
      ]
    },
    {
      "id": "omni-v2",
      "project": "Omni Exchange",
      "version": "V2",
      "family": "Omni Exchange",
      "duneState": "needs-decoding",
      "priority": "discovery",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "omni_exchange_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "dexscreenerUrl": null,
      "creationBlock": 38625953,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "omni-v2-factory",
        "omni-v2-pool"
      ]
    },
    {
      "id": "omni-v3",
      "project": "Omni Exchange",
      "version": "V3",
      "family": "Omni Exchange",
      "duneState": "needs-decoding",
      "priority": "discovery",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "omni_exchange_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "dexscreenerUrl": null,
      "creationBlock": 38626327,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "omni-v3-factory",
        "omni-v3-pool"
      ]
    },
    {
      "id": "sonic-market-amm",
      "project": "Sonic Market",
      "version": "AMM",
      "family": "Sonic Market",
      "duneState": "needs-decoding",
      "priority": "discovery",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "sonic_market_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "dexscreenerUrl": null,
      "creationBlock": 371793,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "sonic-market-amm-factory",
        "sonic-market-amm-pool"
      ]
    },
    {
      "id": "sonic-market-orderbook",
      "project": "Sonic Market",
      "version": "OrderBook",
      "family": "Sonic Market",
      "duneState": "needs-decoding",
      "priority": "discovery",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "sonic_market_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/sonic-market-orderbook/index.ts",
      "dexscreenerUrl": null,
      "creationBlock": null,
      "poolCount": null,
      "note": "Trades emit Take on the manager; there is no per-pair pool contract.",
      "contractIds": [
        "sonic-market-orderbook-pool"
      ]
    },
    {
      "id": "sonicxswap",
      "project": "SonicxSwap",
      "version": "V2",
      "family": "SonicxSwap",
      "duneState": "needs-decoding",
      "priority": "discovery",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "sonicxswap_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "dexscreenerUrl": null,
      "creationBlock": 846757,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "sonicxswap-factory",
        "sonicxswap-pool"
      ]
    },
    {
      "id": "archly-v2",
      "project": "Archly",
      "version": "V2",
      "family": "Archly",
      "duneState": "needs-decoding",
      "priority": "discovery",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "archly_sonic",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "dexscreenerUrl": null,
      "creationBlock": 2336102,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "archly-v2-factory",
        "archly-v2-pool"
      ]
    },
    {
      "id": "atlantis-algebra",
      "project": "Atlantis",
      "version": "Algebra",
      "family": "Atlantis",
      "duneState": "needs-decoding",
      "priority": "discovery",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "atlantis_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js",
      "dexscreenerUrl": null,
      "creationBlock": 33885315,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "atlantis-algebra-factory",
        "atlantis-algebra-pool"
      ]
    },
    {
      "id": "mobiusdex-v2",
      "project": "MobiusDex",
      "version": "V2",
      "family": "MobiusDex",
      "duneState": "needs-decoding",
      "priority": "discovery",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "mobiusdex_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "dexscreenerUrl": null,
      "creationBlock": 405490,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "mobiusdex-v2-factory",
        "mobiusdex-v2-pool"
      ]
    },
    {
      "id": "memebox-v2",
      "project": "Memebox",
      "version": "V2",
      "family": "Memebox",
      "duneState": "needs-decoding",
      "priority": "discovery",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "memebox_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "dexscreenerUrl": null,
      "creationBlock": 524218,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "memebox-v2-factory",
        "memebox-v2-pool"
      ]
    },
    {
      "id": "woofi",
      "project": "WOOFi",
      "version": "WooPP",
      "family": "WOOFi",
      "duneState": "needs-decoding",
      "priority": "discovery",
      "volume30d": null,
      "volumeScope": null,
      "suggestedNamespace": "woofi_sonic",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/woofi.js",
      "dexscreenerUrl": null,
      "creationBlock": null,
      "poolCount": null,
      "note": null,
      "contractIds": [
        "woofi-pool"
      ]
    }
  ],
  "contracts": [
    {
      "id": "oku-uniswap-v3-factory",
      "engineId": "oku-uniswap-v3",
      "project": "Oku",
      "version": "Uniswap V3",
      "family": "Oku / Uniswap V3",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "UniswapV3Factory",
      "address": "0xcb2436774C3e191c85056d248EF4260ce5f27A9D",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "FeeAmountEnabled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "oldOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            }
          ],
          "name": "createPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "enableFeeAmount",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "feeAmountTickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "getPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "parameters",
          "outputs": [
            {
              "internalType": "address",
              "name": "factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_owner",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/uniswap_v3_sonic_base_trades.sql",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xcb2436774C3e191c85056d248EF4260ce5f27A9D",
      "sourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/uniswap_v3_sonic_base_trades.sql"
    },
    {
      "id": "oku-uniswap-v3-pool",
      "engineId": "oku-uniswap-v3",
      "project": "Oku",
      "version": "Uniswap V3",
      "family": "Oku / Uniswap V3",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "UniswapV3Pool",
      "address": "0xcfd41df89d060b72ebdd50d65f9021e4457c477e",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "Collect",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "CollectProtocol",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid1",
              "type": "uint256"
            }
          ],
          "name": "Flash",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "observationCardinalityNextOld",
              "type": "uint16"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "observationCardinalityNextNew",
              "type": "uint16"
            }
          ],
          "name": "IncreaseObservationCardinalityNext",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Initialize",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "feeProtocol0Old",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "feeProtocol1Old",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "feeProtocol0New",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "feeProtocol1New",
              "type": "uint8"
            }
          ],
          "name": "SetFeeProtocol",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collect",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collectProtocol",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "fee",
          "outputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeGrowthGlobal0X128",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeGrowthGlobal1X128",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "flash",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "observationCardinalityNext",
              "type": "uint16"
            }
          ],
          "name": "increaseObservationCardinalityNext",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidity",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "maxLiquidityPerTick",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "observations",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "blockTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "int56",
              "name": "tickCumulative",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityCumulativeX128",
              "type": "uint160"
            },
            {
              "internalType": "bool",
              "name": "initialized",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint32[]",
              "name": "secondsAgos",
              "type": "uint32[]"
            }
          ],
          "name": "observe",
          "outputs": [
            {
              "internalType": "int56[]",
              "name": "tickCumulatives",
              "type": "int56[]"
            },
            {
              "internalType": "uint160[]",
              "name": "secondsPerLiquidityCumulativeX128s",
              "type": "uint160[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "name": "positions",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthInside0LastX128",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthInside1LastX128",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "tokensOwed0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "tokensOwed1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "protocolFees",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "token0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "token1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "feeProtocol0",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "feeProtocol1",
              "type": "uint8"
            }
          ],
          "name": "setFeeProtocol",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "slot0",
          "outputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint16",
              "name": "observationIndex",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "observationCardinality",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "observationCardinalityNext",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "feeProtocol",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "unlocked",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            }
          ],
          "name": "snapshotCumulativesInside",
          "outputs": [
            {
              "internalType": "int56",
              "name": "tickCumulativeInside",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityInsideX128",
              "type": "uint160"
            },
            {
              "internalType": "uint32",
              "name": "secondsInside",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int16",
              "name": "",
              "type": "int16"
            }
          ],
          "name": "tickBitmap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "name": "ticks",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "liquidityGross",
              "type": "uint128"
            },
            {
              "internalType": "int128",
              "name": "liquidityNet",
              "type": "int128"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthOutside0X128",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthOutside1X128",
              "type": "uint256"
            },
            {
              "internalType": "int56",
              "name": "tickCumulativeOutside",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityOutsideX128",
              "type": "uint160"
            },
            {
              "internalType": "uint32",
              "name": "secondsOutside",
              "type": "uint32"
            },
            {
              "internalType": "bool",
              "name": "initialized",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/uniswap_v3_sonic_base_trades.sql",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xcfd41df89d060b72ebdd50d65f9021e4457c477e",
      "sourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/uniswap_v3_sonic_base_trades.sql"
    },
    {
      "id": "beets-v2-pool",
      "engineId": "beets-v2",
      "project": "Beets",
      "version": "V2",
      "family": "Beets",
      "targetType": "manager",
      "roleLabel": "Vault trade emitter",
      "contractName": "Vault",
      "address": "0xBA12222222228d8Ba445958a75a0704d566BF2C8",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "contract IAuthorizer",
              "name": "authorizer",
              "type": "address"
            },
            {
              "internalType": "contract IWETH",
              "name": "weth",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "pauseWindowDuration",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bufferPeriodDuration",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IAuthorizer",
              "name": "newAuthorizer",
              "type": "address"
            }
          ],
          "name": "AuthorizerChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "ExternalBalanceTransfer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IFlashLoanRecipient",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "feeAmount",
              "type": "uint256"
            }
          ],
          "name": "FlashLoan",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "delta",
              "type": "int256"
            }
          ],
          "name": "InternalBalanceChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bool",
              "name": "paused",
              "type": "bool"
            }
          ],
          "name": "PausedStateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "liquidityProvider",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "contract IERC20[]",
              "name": "tokens",
              "type": "address[]"
            },
            {
              "indexed": false,
              "internalType": "int256[]",
              "name": "deltas",
              "type": "int256[]"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "protocolFeeAmounts",
              "type": "uint256[]"
            }
          ],
          "name": "PoolBalanceChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "assetManager",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "cashDelta",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "managedDelta",
              "type": "int256"
            }
          ],
          "name": "PoolBalanceManaged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "poolAddress",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "enum IVault.PoolSpecialization",
              "name": "specialization",
              "type": "uint8"
            }
          ],
          "name": "PoolRegistered",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "relayer",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "RelayerApprovalChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "contract IERC20[]",
              "name": "tokens",
              "type": "address[]"
            }
          ],
          "name": "TokensDeregistered",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "contract IERC20[]",
              "name": "tokens",
              "type": "address[]"
            },
            {
              "indexed": false,
              "internalType": "address[]",
              "name": "assetManagers",
              "type": "address[]"
            }
          ],
          "name": "TokensRegistered",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "WETH",
          "outputs": [
            {
              "internalType": "contract IWETH",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "enum IVault.SwapKind",
              "name": "kind",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "poolId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "assetInIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "assetOutIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "userData",
                  "type": "bytes"
                }
              ],
              "internalType": "struct IVault.BatchSwapStep[]",
              "name": "swaps",
              "type": "tuple[]"
            },
            {
              "internalType": "contract IAsset[]",
              "name": "assets",
              "type": "address[]"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "fromInternalBalance",
                  "type": "bool"
                },
                {
                  "internalType": "address payable",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "toInternalBalance",
                  "type": "bool"
                }
              ],
              "internalType": "struct IVault.FundManagement",
              "name": "funds",
              "type": "tuple"
            },
            {
              "internalType": "int256[]",
              "name": "limits",
              "type": "int256[]"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "batchSwap",
          "outputs": [
            {
              "internalType": "int256[]",
              "name": "assetDeltas",
              "type": "int256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            },
            {
              "internalType": "contract IERC20[]",
              "name": "tokens",
              "type": "address[]"
            }
          ],
          "name": "deregisterTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address payable",
              "name": "recipient",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "contract IAsset[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "minAmountsOut",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "userData",
                  "type": "bytes"
                },
                {
                  "internalType": "bool",
                  "name": "toInternalBalance",
                  "type": "bool"
                }
              ],
              "internalType": "struct IVault.ExitPoolRequest",
              "name": "request",
              "type": "tuple"
            }
          ],
          "name": "exitPool",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IFlashLoanRecipient",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "contract IERC20[]",
              "name": "tokens",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "bytes",
              "name": "userData",
              "type": "bytes"
            }
          ],
          "name": "flashLoan",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "selector",
              "type": "bytes4"
            }
          ],
          "name": "getActionId",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getAuthorizer",
          "outputs": [
            {
              "internalType": "contract IAuthorizer",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getDomainSeparator",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "internalType": "contract IERC20[]",
              "name": "tokens",
              "type": "address[]"
            }
          ],
          "name": "getInternalBalance",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "balances",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            }
          ],
          "name": "getNextNonce",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getPausedState",
          "outputs": [
            {
              "internalType": "bool",
              "name": "paused",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "pauseWindowEndTime",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "bufferPeriodEndTime",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            }
          ],
          "name": "getPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "enum IVault.PoolSpecialization",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            },
            {
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "getPoolTokenInfo",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "cash",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "managed",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastChangeBlock",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "assetManager",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            }
          ],
          "name": "getPoolTokens",
          "outputs": [
            {
              "internalType": "contract IERC20[]",
              "name": "tokens",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "balances",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256",
              "name": "lastChangeBlock",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getProtocolFeesCollector",
          "outputs": [
            {
              "internalType": "contract ProtocolFeesCollector",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "relayer",
              "type": "address"
            }
          ],
          "name": "hasApprovedRelayer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "contract IAsset[]",
                  "name": "assets",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "maxAmountsIn",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "userData",
                  "type": "bytes"
                },
                {
                  "internalType": "bool",
                  "name": "fromInternalBalance",
                  "type": "bool"
                }
              ],
              "internalType": "struct IVault.JoinPoolRequest",
              "name": "request",
              "type": "tuple"
            }
          ],
          "name": "joinPool",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "enum IVault.PoolBalanceOpKind",
                  "name": "kind",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "poolId",
                  "type": "bytes32"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "internalType": "struct IVault.PoolBalanceOp[]",
              "name": "ops",
              "type": "tuple[]"
            }
          ],
          "name": "managePoolBalance",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "enum IVault.UserBalanceOpKind",
                  "name": "kind",
                  "type": "uint8"
                },
                {
                  "internalType": "contract IAsset",
                  "name": "asset",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address payable",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "internalType": "struct IVault.UserBalanceOp[]",
              "name": "ops",
              "type": "tuple[]"
            }
          ],
          "name": "manageUserBalance",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "enum IVault.SwapKind",
              "name": "kind",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "poolId",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "assetInIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "assetOutIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "userData",
                  "type": "bytes"
                }
              ],
              "internalType": "struct IVault.BatchSwapStep[]",
              "name": "swaps",
              "type": "tuple[]"
            },
            {
              "internalType": "contract IAsset[]",
              "name": "assets",
              "type": "address[]"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "fromInternalBalance",
                  "type": "bool"
                },
                {
                  "internalType": "address payable",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "toInternalBalance",
                  "type": "bool"
                }
              ],
              "internalType": "struct IVault.FundManagement",
              "name": "funds",
              "type": "tuple"
            }
          ],
          "name": "queryBatchSwap",
          "outputs": [
            {
              "internalType": "int256[]",
              "name": "",
              "type": "int256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "enum IVault.PoolSpecialization",
              "name": "specialization",
              "type": "uint8"
            }
          ],
          "name": "registerPool",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "poolId",
              "type": "bytes32"
            },
            {
              "internalType": "contract IERC20[]",
              "name": "tokens",
              "type": "address[]"
            },
            {
              "internalType": "address[]",
              "name": "assetManagers",
              "type": "address[]"
            }
          ],
          "name": "registerTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IAuthorizer",
              "name": "newAuthorizer",
              "type": "address"
            }
          ],
          "name": "setAuthorizer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "paused",
              "type": "bool"
            }
          ],
          "name": "setPaused",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "relayer",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "setRelayerApproval",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "poolId",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum IVault.SwapKind",
                  "name": "kind",
                  "type": "uint8"
                },
                {
                  "internalType": "contract IAsset",
                  "name": "assetIn",
                  "type": "address"
                },
                {
                  "internalType": "contract IAsset",
                  "name": "assetOut",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "userData",
                  "type": "bytes"
                }
              ],
              "internalType": "struct IVault.SingleSwap",
              "name": "singleSwap",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "fromInternalBalance",
                  "type": "bool"
                },
                {
                  "internalType": "address payable",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "toInternalBalance",
                  "type": "bool"
                }
              ],
              "internalType": "struct IVault.FundManagement",
              "name": "funds",
              "type": "tuple"
            },
            {
              "internalType": "uint256",
              "name": "limit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountCalculated",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/beethovenxfi/balancer-deployments/blob/master/addresses/sonic.json",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xBA12222222228d8Ba445958a75a0704d566BF2C8",
      "sourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/beets_v2_sonic_base_trades.sql"
    },
    {
      "id": "beets-v3-pool",
      "engineId": "beets-v3",
      "project": "Beets",
      "version": "V3",
      "family": "Beets",
      "targetType": "manager",
      "roleLabel": "Vault trade emitter",
      "contractName": "VaultExtension",
      "address": "0xbA1333333333a1BA1108E8412f11850A5C319bA9",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "contract IVault",
              "name": "mainVault",
              "type": "address"
            },
            {
              "internalType": "contract IVaultAdmin",
              "name": "vaultAdmin",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            }
          ],
          "name": "AddressEmptyCode",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "AddressInsufficientBalance",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "AfterAddLiquidityHookFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "AfterInitializeHookFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "AfterRemoveLiquidityHookFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "AfterSwapHookFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "AmountGivenZero",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxAmountIn",
              "type": "uint256"
            }
          ],
          "name": "AmountInAboveMax",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minAmountOut",
              "type": "uint256"
            }
          ],
          "name": "AmountOutBelowMin",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "BalanceNotSettled",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "BalanceOverflow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "BeforeAddLiquidityHookFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "BeforeInitializeHookFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "BeforeRemoveLiquidityHookFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "BeforeSwapHookFailed",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxAmountIn",
              "type": "uint256"
            }
          ],
          "name": "BptAmountInAboveMax",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minAmountOut",
              "type": "uint256"
            }
          ],
          "name": "BptAmountOutBelowMin",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            }
          ],
          "name": "BufferAlreadyInitialized",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            }
          ],
          "name": "BufferNotInitialized",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "BufferSharesInvalidOwner",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "BufferSharesInvalidReceiver",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "totalSupply",
              "type": "uint256"
            }
          ],
          "name": "BufferTotalSupplyTooLow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "CannotReceiveEth",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "CannotSwapSameToken",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "CodecOverflow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "DoesNotSupportAddLiquidityCustom",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "DoesNotSupportDonation",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "DoesNotSupportRemoveLiquidityCustom",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "DoesNotSupportUnbalancedLiquidity",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "DynamicSwapFeeHookFailed",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "allowance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "needed",
              "type": "uint256"
            }
          ],
          "name": "ERC20InsufficientAllowance",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "balance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "needed",
              "type": "uint256"
            }
          ],
          "name": "ERC20InsufficientBalance",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "approver",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidApprover",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidReceiver",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidSender",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidSpender",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ErrorSelectorNotFound",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "FailedInnerCall",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "FeePrecisionTooHigh",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxAmountIn",
              "type": "uint256"
            }
          ],
          "name": "HookAdjustedAmountInAboveMax",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minAmountOut",
              "type": "uint256"
            }
          ],
          "name": "HookAdjustedAmountOutBelowMin",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "limit",
              "type": "uint256"
            }
          ],
          "name": "HookAdjustedSwapLimit",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "poolHooksContract",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "poolFactory",
              "type": "address"
            }
          ],
          "name": "HookRegistrationFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InputLengthMismatch",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidAddLiquidityKind",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidRemoveLiquidityKind",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidToken",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidTokenConfiguration",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidTokenDecimals",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidTokenType",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            }
          ],
          "name": "InvalidUnderlyingToken",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "issuedShares",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minIssuedShares",
              "type": "uint256"
            }
          ],
          "name": "IssuedSharesBelowMin",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "MaxTokens",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "MinTokens",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "NotEnoughBufferShares",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "expectedUnderlyingAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "actualUnderlyingAmount",
              "type": "uint256"
            }
          ],
          "name": "NotEnoughUnderlying",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "expectedWrappedAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "actualWrappedAmount",
              "type": "uint256"
            }
          ],
          "name": "NotEnoughWrapped",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "NotStaticCall",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "NotVaultDelegateCall",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "OutOfBounds",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "PauseBufferPeriodDurationTooLarge",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "PercentageAboveMax",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolAlreadyInitialized",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolAlreadyRegistered",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolInRecoveryMode",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolNotInRecoveryMode",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolNotInitialized",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolNotPaused",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolNotRegistered",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolPauseWindowExpired",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolPaused",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "totalSupply",
              "type": "uint256"
            }
          ],
          "name": "PoolTotalSupplyTooLow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ProtocolFeesExceedTotalCollected",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "QueriesDisabled",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "QueriesDisabledPermanently",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "QuoteResultSpoofed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ReentrancyGuardReentrantCall",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "bytes",
              "name": "result",
              "type": "bytes"
            }
          ],
          "name": "Result",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "RouterNotTrusted",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "SafeCastOverflowedUintToInt",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "SenderIsNotVault",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "SwapFeePercentageTooHigh",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "SwapFeePercentageTooLow",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "limit",
              "type": "uint256"
            }
          ],
          "name": "SwapLimit",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "TokenAlreadyRegistered",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "TokenNotRegistered",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "expectedToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "actualToken",
              "type": "address"
            }
          ],
          "name": "TokensMismatch",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "TokensNotSorted",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "TradeAmountTooSmall",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "VaultBuffersArePaused",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "VaultIsNotUnlocked",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "VaultNotPaused",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "VaultPauseWindowDurationTooLarge",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "VaultPauseWindowExpired",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "VaultPaused",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            }
          ],
          "name": "WrapAmountTooSmall",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "WrongProtocolFeeControllerDeployment",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "underlyingToken",
              "type": "address"
            }
          ],
          "name": "WrongUnderlyingToken",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "WrongVaultAdminDeployment",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "WrongVaultExtensionDeployment",
          "type": "error"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "aggregateSwapFeePercentage",
              "type": "uint256"
            }
          ],
          "name": "AggregateSwapFeePercentageChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "aggregateYieldFeePercentage",
              "type": "uint256"
            }
          ],
          "name": "AggregateYieldFeePercentageChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IAuthorizer",
              "name": "newAuthorizer",
              "type": "address"
            }
          ],
          "name": "AuthorizerChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "burnedShares",
              "type": "uint256"
            }
          ],
          "name": "BufferSharesBurned",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "issuedShares",
              "type": "uint256"
            }
          ],
          "name": "BufferSharesMinted",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "liquidityProvider",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "enum AddLiquidityKind",
              "name": "kind",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "totalSupply",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "amountsAddedRaw",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "swapFeeAmountsRaw",
              "type": "uint256[]"
            }
          ],
          "name": "LiquidityAdded",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountUnderlying",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountWrapped",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "bufferBalances",
              "type": "bytes32"
            }
          ],
          "name": "LiquidityAddedToBuffer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "liquidityProvider",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "enum RemoveLiquidityKind",
              "name": "kind",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "totalSupply",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "amountsRemovedRaw",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "swapFeeAmountsRaw",
              "type": "uint256[]"
            }
          ],
          "name": "LiquidityRemoved",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountUnderlying",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountWrapped",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "bufferBalances",
              "type": "bytes32"
            }
          ],
          "name": "LiquidityRemovedFromBuffer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolInitialized",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "paused",
              "type": "bool"
            }
          ],
          "name": "PoolPausedStateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "recoveryMode",
              "type": "bool"
            }
          ],
          "name": "PoolRecoveryModeStateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "factory",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "enum TokenType",
                  "name": "tokenType",
                  "type": "uint8"
                },
                {
                  "internalType": "contract IRateProvider",
                  "name": "rateProvider",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "paysYieldFees",
                  "type": "bool"
                }
              ],
              "indexed": false,
              "internalType": "struct TokenConfig[]",
              "name": "tokenConfig",
              "type": "tuple[]"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "swapFeePercentage",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint32",
              "name": "pauseWindowEndTime",
              "type": "uint32"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "pauseManager",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "swapFeeManager",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "poolCreator",
                  "type": "address"
                }
              ],
              "indexed": false,
              "internalType": "struct PoolRoleAccounts",
              "name": "roleAccounts",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "enableHookAdjustedAmounts",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallBeforeInitialize",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallAfterInitialize",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallComputeDynamicSwapFee",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallBeforeSwap",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallAfterSwap",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallBeforeAddLiquidity",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallAfterAddLiquidity",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallBeforeRemoveLiquidity",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallAfterRemoveLiquidity",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "hooksContract",
                  "type": "address"
                }
              ],
              "indexed": false,
              "internalType": "struct HooksConfig",
              "name": "hooksConfig",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "disableUnbalancedLiquidity",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "enableAddLiquidityCustom",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "enableRemoveLiquidityCustom",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "enableDonation",
                  "type": "bool"
                }
              ],
              "indexed": false,
              "internalType": "struct LiquidityManagement",
              "name": "liquidityManagement",
              "type": "tuple"
            }
          ],
          "name": "PoolRegistered",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IProtocolFeeController",
              "name": "newProtocolFeeController",
              "type": "address"
            }
          ],
          "name": "ProtocolFeeControllerChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "swapFeePercentage",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "swapFeeAmount",
              "type": "uint256"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "swapFeePercentage",
              "type": "uint256"
            }
          ],
          "name": "SwapFeePercentageChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "burnedShares",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "withdrawnUnderlying",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "bufferBalances",
              "type": "bytes32"
            }
          ],
          "name": "Unwrap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "eventKey",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes",
              "name": "eventData",
              "type": "bytes"
            }
          ],
          "name": "VaultAuxiliary",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bool",
              "name": "paused",
              "type": "bool"
            }
          ],
          "name": "VaultBuffersPausedStateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bool",
              "name": "paused",
              "type": "bool"
            }
          ],
          "name": "VaultPausedStateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [],
          "name": "VaultQueriesDisabled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [],
          "name": "VaultQueriesEnabled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "depositedUnderlying",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "mintedShares",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "bufferBalances",
              "type": "bytes32"
            }
          ],
          "name": "Wrap",
          "type": "event"
        },
        {
          "stateMutability": "payable",
          "type": "fallback"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "enum SwapKind",
                  "name": "kind",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "amountGivenScaled18",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256[]",
                  "name": "balancesScaled18",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256",
                  "name": "indexIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "indexOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "router",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "userData",
                  "type": "bytes"
                }
              ],
              "internalType": "struct PoolSwapParams",
              "name": "swapParams",
              "type": "tuple"
            }
          ],
          "name": "computeDynamicSwapFeePercentage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "dynamicSwapFeePercentage",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "eventKey",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "eventData",
              "type": "bytes"
            }
          ],
          "name": "emitAuxiliaryEvent",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getAddLiquidityCalledFlag",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "getAggregateSwapFeeAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "getAggregateYieldFeeAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getAuthorizer",
          "outputs": [
            {
              "internalType": "contract IAuthorizer",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getBptRate",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "rate",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getCurrentLiveBalances",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "balancesLiveScaled18",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            }
          ],
          "name": "getERC4626BufferAsset",
          "outputs": [
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getHooksConfig",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "enableHookAdjustedAmounts",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallBeforeInitialize",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallAfterInitialize",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallComputeDynamicSwapFee",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallBeforeSwap",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallAfterSwap",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallBeforeAddLiquidity",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallAfterAddLiquidity",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallBeforeRemoveLiquidity",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "shouldCallAfterRemoveLiquidity",
                  "type": "bool"
                },
                {
                  "internalType": "address",
                  "name": "hooksContract",
                  "type": "address"
                }
              ],
              "internalType": "struct HooksConfig",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getNonzeroDeltaCount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getPoolConfig",
          "outputs": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bool",
                      "name": "disableUnbalancedLiquidity",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "enableAddLiquidityCustom",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "enableRemoveLiquidityCustom",
                      "type": "bool"
                    },
                    {
                      "internalType": "bool",
                      "name": "enableDonation",
                      "type": "bool"
                    }
                  ],
                  "internalType": "struct LiquidityManagement",
                  "name": "liquidityManagement",
                  "type": "tuple"
                },
                {
                  "internalType": "uint256",
                  "name": "staticSwapFeePercentage",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "aggregateSwapFeePercentage",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "aggregateYieldFeePercentage",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "tokenDecimalDiffs",
                  "type": "uint40"
                },
                {
                  "internalType": "uint32",
                  "name": "pauseWindowEndTime",
                  "type": "uint32"
                },
                {
                  "internalType": "bool",
                  "name": "isPoolRegistered",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "isPoolInitialized",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "isPoolPaused",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "isPoolInRecoveryMode",
                  "type": "bool"
                }
              ],
              "internalType": "struct PoolConfig",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getPoolData",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "PoolConfigBits",
                  "name": "poolConfigBits",
                  "type": "bytes32"
                },
                {
                  "internalType": "contract IERC20[]",
                  "name": "tokens",
                  "type": "address[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum TokenType",
                      "name": "tokenType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "contract IRateProvider",
                      "name": "rateProvider",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "paysYieldFees",
                      "type": "bool"
                    }
                  ],
                  "internalType": "struct TokenInfo[]",
                  "name": "tokenInfo",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "balancesRaw",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "balancesLiveScaled18",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "tokenRates",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "decimalScalingFactors",
                  "type": "uint256[]"
                }
              ],
              "internalType": "struct PoolData",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getPoolPausedState",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            },
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getPoolRoleAccounts",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "pauseManager",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "swapFeeManager",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "poolCreator",
                  "type": "address"
                }
              ],
              "internalType": "struct PoolRoleAccounts",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getPoolTokenInfo",
          "outputs": [
            {
              "internalType": "contract IERC20[]",
              "name": "tokens",
              "type": "address[]"
            },
            {
              "components": [
                {
                  "internalType": "enum TokenType",
                  "name": "tokenType",
                  "type": "uint8"
                },
                {
                  "internalType": "contract IRateProvider",
                  "name": "rateProvider",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "paysYieldFees",
                  "type": "bool"
                }
              ],
              "internalType": "struct TokenInfo[]",
              "name": "tokenInfo",
              "type": "tuple[]"
            },
            {
              "internalType": "uint256[]",
              "name": "balancesRaw",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "lastBalancesLiveScaled18",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getPoolTokenRates",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "decimalScalingFactors",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "tokenRates",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getPoolTokens",
          "outputs": [
            {
              "internalType": "contract IERC20[]",
              "name": "tokens",
              "type": "address[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getProtocolFeeController",
          "outputs": [
            {
              "internalType": "contract IProtocolFeeController",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "getReservesOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "getStaticSwapFeePercentage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "getTokenDelta",
          "outputs": [
            {
              "internalType": "int256",
              "name": "",
              "type": "int256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getVaultAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "contract IERC20[]",
              "name": "tokens",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "exactAmountsIn",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256",
              "name": "minBptAmountOut",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "userData",
              "type": "bytes"
            }
          ],
          "name": "initialize",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "bptAmountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC4626",
              "name": "wrappedToken",
              "type": "address"
            }
          ],
          "name": "isERC4626BufferInitialized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "isPoolInRecoveryMode",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "isPoolInitialized",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "isPoolPaused",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "isPoolRegistered",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "isQueryDisabled",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "isQueryDisabledPermanently",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "isUnlocked",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "result",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "quoteAndRevert",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "reentrancyGuardEntered",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "enum TokenType",
                  "name": "tokenType",
                  "type": "uint8"
                },
                {
                  "internalType": "contract IRateProvider",
                  "name": "rateProvider",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "paysYieldFees",
                  "type": "bool"
                }
              ],
              "internalType": "struct TokenConfig[]",
              "name": "tokenConfig",
              "type": "tuple[]"
            },
            {
              "internalType": "uint256",
              "name": "swapFeePercentage",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "pauseWindowEndTime",
              "type": "uint32"
            },
            {
              "internalType": "bool",
              "name": "protocolFeeExempt",
              "type": "bool"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "pauseManager",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "swapFeeManager",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "poolCreator",
                  "type": "address"
                }
              ],
              "internalType": "struct PoolRoleAccounts",
              "name": "roleAccounts",
              "type": "tuple"
            },
            {
              "internalType": "address",
              "name": "poolHooksContract",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "disableUnbalancedLiquidity",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "enableAddLiquidityCustom",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "enableRemoveLiquidityCustom",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "enableDonation",
                  "type": "bool"
                }
              ],
              "internalType": "struct LiquidityManagement",
              "name": "liquidityManagement",
              "type": "tuple"
            }
          ],
          "name": "registerPool",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "exactBptAmountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256[]",
              "name": "minAmountsOut",
              "type": "uint256[]"
            }
          ],
          "name": "removeLiquidityRecovery",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amountsOutRaw",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "vault",
          "outputs": [
            {
              "internalType": "contract IVault",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "abiSource": "SonicScan verified implementation ABI",
      "abiSourceUrl": "https://github.com/beethovenxfi/balancer-deployments/blob/master/addresses/sonic.json",
      "implementationAddress": "0x0e8b07657d719b86e06bf0806d6729e3d528c9a9",
      "explorerUrl": "https://sonicscan.org/address/0xbA1333333333a1BA1108E8412f11850A5C319bA9",
      "sourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/beets_v3_sonic_base_trades.sql"
    },
    {
      "id": "equalizer-v1-factory",
      "engineId": "equalizer-v1",
      "project": "Equalizer",
      "version": "V1",
      "family": "Equalizer",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "PairFactory",
      "address": "0xDDD9845Ba0D8f38d3045f804f67A1a8B9A528FcC",
      "verified": true,
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "version",
              "type": "uint8"
            }
          ],
          "name": "Initialized",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "stable",
              "type": "bool"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "MAX_FEE",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "acceptFeeManager",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "acceptPauser",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "stable",
              "type": "bool"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeManager",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "feesOverrideDynamic",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "feesOverrideStatic",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "feesTakers",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "_stable",
              "type": "bool"
            }
          ],
          "name": "getFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getInitializable",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            }
          ],
          "name": "getRealFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "isPair",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "isPaused",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairCodeHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pauser",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingFeeManager",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingPauser",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_stable",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_volatile",
              "type": "uint256"
            }
          ],
          "name": "setFeeDefaults",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeManager",
              "type": "address"
            }
          ],
          "name": "setFeeManager",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_feeManager",
              "type": "address"
            }
          ],
          "name": "setFeesOverrideDynamic",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_fee",
              "type": "uint256"
            }
          ],
          "name": "setFeesOverrideStatic",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_p",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_t",
              "type": "address"
            }
          ],
          "name": "setFeesTakers",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "_state",
              "type": "bool"
            }
          ],
          "name": "setPause",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pauser",
              "type": "address"
            }
          ],
          "name": "setPauser",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "stableFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "volatileFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified implementation ABI",
      "abiSourceUrl": "https://docs.equalizer.exchange/equal-sonic/contracts/",
      "implementationAddress": "0xcdc292046ea39e0ab0bcf7ad100c4506846bf6a0",
      "explorerUrl": "https://sonicscan.org/address/0xDDD9845Ba0D8f38d3045f804f67A1a8B9A528FcC",
      "sourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/equalizer_sonic_base_trades.sql"
    },
    {
      "id": "equalizer-v1-pool",
      "engineId": "equalizer-v1",
      "project": "Equalizer",
      "version": "V1",
      "family": "Equalizer",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "Pair",
      "address": "0x73eb509875c594dc82a14afcd91c7ae1424429b6",
      "verified": true,
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Claim",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Fees",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "version",
              "type": "uint8"
            }
          ],
          "name": "Initialized",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "reserve0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "reserve1",
              "type": "uint256"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "blockTimestampLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "claimFees",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "claimed0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "claimed1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "claimable0",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "claimable1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "name": "current",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "currentCumulativePrices",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "reserve0Cumulative",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserve1Cumulative",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "blockTimestamp",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "fees",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "_reserve0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_reserve1",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_blockTimestampLast",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "index0",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "index1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lastObservation",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserve0Cumulative",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserve1Cumulative",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Pair.Observation",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "metadata",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "dec0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "dec1",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "r0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "r1",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "st",
              "type": "bool"
            },
            {
              "internalType": "address",
              "name": "t0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "t1",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "observationLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "observations",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserve0Cumulative",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserve1Cumulative",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            }
          ],
          "name": "prices",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "granularity",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "reserve0",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "reserve0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "reserve1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "reserve1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "window",
              "type": "uint256"
            }
          ],
          "name": "sample",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "stable",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "supplyIndex0",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "supplyIndex1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tokens",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://docs.equalizer.exchange/equal-sonic/contracts/",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x73eb509875c594dc82a14afcd91c7ae1424429b6",
      "sourceUrl": "https://github.com/duneanalytics/spellbook/blob/9508101c34b635abdcb1423f02a71cbcabd3c8b3/dbt_subprojects/dex/models/trades/sonic/platforms/equalizer_sonic_base_trades.sql"
    },
    {
      "id": "metropolis-dlmm-factory",
      "engineId": "metropolis-dlmm",
      "project": "Metropolis",
      "version": "DLMM",
      "family": "Metropolis",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "LBFactory",
      "address": "0x39D966c1BaFe7D3F1F53dA4845805E15f7D6EE43",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "feeRecipient",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "initialOwner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "flashLoanFee",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "AccessControlBadConfirmation",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "neededRole",
              "type": "bytes32"
            }
          ],
          "name": "AccessControlUnauthorizedAccount",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "key",
              "type": "bytes32"
            }
          ],
          "name": "EnumerableMapNonexistentKey",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBFactory__AddressZero",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "binStep",
              "type": "uint256"
            }
          ],
          "name": "LBFactory__BinStepHasNoPreset",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "binStep",
              "type": "uint256"
            }
          ],
          "name": "LBFactory__BinStepTooLow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBFactory__CannotGrantDefaultAdminRole",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "fees",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxFees",
              "type": "uint256"
            }
          ],
          "name": "LBFactory__FlashLoanFeeAboveMax",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "LBFactory__IdenticalAddresses",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBFactory__ImplementationNotSet",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBFactory__InvalidHooksParameters",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenX",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "tokenY",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_binStep",
              "type": "uint256"
            }
          ],
          "name": "LBFactory__LBPairAlreadyExists",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenX",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "tokenY",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "binStep",
              "type": "uint256"
            }
          ],
          "name": "LBFactory__LBPairDoesNotExist",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBFactory__LBPairIgnoredIsAlreadyInTheSameState",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenX",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "tokenY",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "binStep",
              "type": "uint256"
            }
          ],
          "name": "LBFactory__LBPairNotCreated",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "LBPairImplementation",
              "type": "address"
            }
          ],
          "name": "LBFactory__LBPairSafetyCheckFailed",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "binStep",
              "type": "uint256"
            }
          ],
          "name": "LBFactory__PresetIsLockedForUsers",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBFactory__PresetOpenStateIsAlreadyInTheSameState",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "quoteAsset",
              "type": "address"
            }
          ],
          "name": "LBFactory__QuoteAssetAlreadyWhitelisted",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "quoteAsset",
              "type": "address"
            }
          ],
          "name": "LBFactory__QuoteAssetNotWhitelisted",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "feeRecipient",
              "type": "address"
            }
          ],
          "name": "LBFactory__SameFeeRecipient",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "flashLoanFee",
              "type": "uint256"
            }
          ],
          "name": "LBFactory__SameFlashLoanFee",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "hooksImplementation",
              "type": "address"
            }
          ],
          "name": "LBFactory__SameHooksImplementation",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "hooksParameters",
              "type": "bytes32"
            }
          ],
          "name": "LBFactory__SameHooksParameters",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "LBPairImplementation",
              "type": "address"
            }
          ],
          "name": "LBFactory__SameImplementation",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "OwnableInvalidOwner",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "OwnableUnauthorizedAccount",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "PairParametersHelper__InvalidParameter",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "SafeCast__Exceeds16Bits",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "x",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "y",
              "type": "int256"
            }
          ],
          "name": "Uint128x128Math__PowUnderflow",
          "type": "error"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "oldRecipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newRecipient",
              "type": "address"
            }
          ],
          "name": "FeeRecipientSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "oldFlashLoanFee",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "newFlashLoanFee",
              "type": "uint256"
            }
          ],
          "name": "FlashLoanFeeSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "tokenX",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "tokenY",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "binStep",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "contract ILBPair",
              "name": "LBPair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "pid",
              "type": "uint256"
            }
          ],
          "name": "LBPairCreated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract ILBPair",
              "name": "LBPair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "ignored",
              "type": "bool"
            }
          ],
          "name": "LBPairIgnoredStateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "oldLBPairImplementation",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "LBPairImplementation",
              "type": "address"
            }
          ],
          "name": "LBPairImplementationSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferStarted",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "binStep",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "bool",
              "name": "isOpen",
              "type": "bool"
            }
          ],
          "name": "PresetOpenStateChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "binStep",
              "type": "uint256"
            }
          ],
          "name": "PresetRemoved",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "binStep",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "baseFactor",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "filterPeriod",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "decayPeriod",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "reductionFactor",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "variableFeeControl",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "protocolShare",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "maxVolatilityAccumulator",
              "type": "uint256"
            }
          ],
          "name": "PresetSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "quoteAsset",
              "type": "address"
            }
          ],
          "name": "QuoteAssetAdded",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20",
              "name": "quoteAsset",
              "type": "address"
            }
          ],
          "name": "QuoteAssetRemoved",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "previousAdminRole",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "newAdminRole",
              "type": "bytes32"
            }
          ],
          "name": "RoleAdminChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "RoleGranted",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "RoleRevoked",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DEFAULT_ADMIN_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "LB_HOOKS_MANAGER_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "acceptOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "quoteAsset",
              "type": "address"
            }
          ],
          "name": "addQuoteAsset",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenX",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "tokenY",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "activeId",
              "type": "uint24"
            },
            {
              "internalType": "uint16",
              "name": "binStep",
              "type": "uint16"
            }
          ],
          "name": "createLBPair",
          "outputs": [
            {
              "internalType": "contract ILBPair",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract ILBPair",
              "name": "pair",
              "type": "address"
            }
          ],
          "name": "forceDecay",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getAllBinSteps",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "binStepWithPreset",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenX",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "tokenY",
              "type": "address"
            }
          ],
          "name": "getAllLBPairs",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "binStep",
                  "type": "uint16"
                },
                {
                  "internalType": "contract ILBPair",
                  "name": "LBPair",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "createdByOwner",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "ignoredForRouting",
                  "type": "bool"
                }
              ],
              "internalType": "struct ILBFactory.LBPairInformation[]",
              "name": "lbPairsAvailable",
              "type": "tuple[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getFeeRecipient",
          "outputs": [
            {
              "internalType": "address",
              "name": "feeRecipient",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getFlashLoanFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "flashLoanFee",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256"
            }
          ],
          "name": "getLBPairAtIndex",
          "outputs": [
            {
              "internalType": "contract ILBPair",
              "name": "lbPair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getLBPairImplementation",
          "outputs": [
            {
              "internalType": "address",
              "name": "lbPairImplementation",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "binStep",
              "type": "uint256"
            }
          ],
          "name": "getLBPairInformation",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "binStep",
                  "type": "uint16"
                },
                {
                  "internalType": "contract ILBPair",
                  "name": "LBPair",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "createdByOwner",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "ignoredForRouting",
                  "type": "bool"
                }
              ],
              "internalType": "struct ILBFactory.LBPairInformation",
              "name": "lbPairInformation",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getMaxFlashLoanFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "maxFee",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getMinBinStep",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "minBinStep",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getNumberOfLBPairs",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "lbPairNumber",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getNumberOfQuoteAssets",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "numberOfQuoteAssets",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getOpenBinSteps",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "openBinStep",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "binStep",
              "type": "uint256"
            }
          ],
          "name": "getPreset",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "baseFactor",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "filterPeriod",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "decayPeriod",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reductionFactor",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "variableFeeControl",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "protocolShare",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxVolatilityAccumulator",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "isOpen",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256"
            }
          ],
          "name": "getQuoteAssetAtIndex",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "asset",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "name": "getRoleAdmin",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "grantRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "hasRole",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "isQuoteAsset",
          "outputs": [
            {
              "internalType": "bool",
              "name": "isQuote",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingOwner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenX",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "tokenY",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "binStep",
              "type": "uint16"
            }
          ],
          "name": "removeLBHooksOnPair",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "binStep",
              "type": "uint16"
            }
          ],
          "name": "removePreset",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "quoteAsset",
              "type": "address"
            }
          ],
          "name": "removeQuoteAsset",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "callerConfirmation",
              "type": "address"
            }
          ],
          "name": "renounceRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "revokeRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "feeRecipient",
              "type": "address"
            }
          ],
          "name": "setFeeRecipient",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenX",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "tokenY",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "binStep",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "baseFactor",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "filterPeriod",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "decayPeriod",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "reductionFactor",
              "type": "uint16"
            },
            {
              "internalType": "uint24",
              "name": "variableFeeControl",
              "type": "uint24"
            },
            {
              "internalType": "uint16",
              "name": "protocolShare",
              "type": "uint16"
            },
            {
              "internalType": "uint24",
              "name": "maxVolatilityAccumulator",
              "type": "uint24"
            }
          ],
          "name": "setFeesParametersOnPair",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "flashLoanFee",
              "type": "uint256"
            }
          ],
          "name": "setFlashLoanFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenX",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "tokenY",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "binStep",
              "type": "uint16"
            },
            {
              "internalType": "bytes32",
              "name": "hooksParameters",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "onHooksSetData",
              "type": "bytes"
            }
          ],
          "name": "setLBHooksParametersOnPair",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenX",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "tokenY",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "binStep",
              "type": "uint16"
            },
            {
              "internalType": "bool",
              "name": "ignored",
              "type": "bool"
            }
          ],
          "name": "setLBPairIgnored",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newLBPairImplementation",
              "type": "address"
            }
          ],
          "name": "setLBPairImplementation",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "binStep",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "baseFactor",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "filterPeriod",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "decayPeriod",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "reductionFactor",
              "type": "uint16"
            },
            {
              "internalType": "uint24",
              "name": "variableFeeControl",
              "type": "uint24"
            },
            {
              "internalType": "uint16",
              "name": "protocolShare",
              "type": "uint16"
            },
            {
              "internalType": "uint24",
              "name": "maxVolatilityAccumulator",
              "type": "uint24"
            },
            {
              "internalType": "bool",
              "name": "isOpen",
              "type": "bool"
            }
          ],
          "name": "setPreset",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "binStep",
              "type": "uint16"
            },
            {
              "internalType": "bool",
              "name": "isOpen",
              "type": "bool"
            }
          ],
          "name": "setPresetOpenState",
          "outputs": [],
          "stateMutability": "nonpayable",
          "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": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/traderJoeV2.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x39D966c1BaFe7D3F1F53dA4845805E15f7D6EE43",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/traderJoeV2.js"
    },
    {
      "id": "metropolis-dlmm-pool",
      "engineId": "metropolis-dlmm",
      "project": "Metropolis",
      "version": "DLMM",
      "family": "Metropolis",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "LBPair",
      "address": "0x8D47C3a6201267ce38638DEEc6d70566712fFa19",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "contract ILBFactory",
              "name": "factory_",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            }
          ],
          "name": "AddressEmptyCode",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "AddressInsufficientBalance",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "id",
              "type": "uint24"
            }
          ],
          "name": "BinHelper__CompositionFactorFlawed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "BinHelper__LiquidityOverflow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "BinHelper__MaxLiquidityPerBinExceeded",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "FailedInnerCall",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "FeeHelper__FeeTooLarge",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "Hooks__CallFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidInitialization",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__AddressZero",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__EmptyMarketConfigs",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__FlashLoanCallbackFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__FlashLoanInsufficientAmount",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__InsufficientAmountIn",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__InsufficientAmountOut",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__InvalidHooks",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__InvalidInput",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__InvalidStaticFeeParameters",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__MaxTotalFeeExceeded",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__OnlyFactory",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__OnlyProtocolFeeRecipient",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__OutOfLiquidity",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__TokenNotSupported",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "id",
              "type": "uint24"
            }
          ],
          "name": "LBPair__ZeroAmount",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "id",
              "type": "uint24"
            }
          ],
          "name": "LBPair__ZeroAmountsOut",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBPair__ZeroBorrowAmount",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "id",
              "type": "uint24"
            }
          ],
          "name": "LBPair__ZeroShares",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBToken__AddressThisOrZero",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "LBToken__BurnExceedsBalance",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LBToken__InvalidLength",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "LBToken__SelfApproval",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "LBToken__SpenderNotApproved",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "LBToken__TransferExceedsBalance",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "LiquidityConfigurations__InvalidConfig",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "NotInitializing",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "OracleHelper__InvalidOracleId",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "OracleHelper__LookUpTimestampTooOld",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "OracleHelper__NewLengthTooSmall",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "PackedUint128Math__AddOverflow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "PackedUint128Math__MultiplierTooLarge",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "PackedUint128Math__SubUnderflow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "PairParametersHelper__InvalidParameter",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ReentrancyGuardReentrantCall",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "SafeCast__Exceeds128Bits",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "SafeCast__Exceeds24Bits",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "SafeCast__Exceeds40Bits",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            }
          ],
          "name": "SafeERC20FailedOperation",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "Uint128x128Math__LogUnderflow",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "x",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "y",
              "type": "int256"
            }
          ],
          "name": "Uint128x128Math__PowUnderflow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "Uint256x256Math__MulDivOverflow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "Uint256x256Math__MulShiftOverflow",
          "type": "error"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "ApprovalForAll",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "feeRecipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "protocolFees",
              "type": "bytes32"
            }
          ],
          "name": "CollectedProtocolFees",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "id",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "totalFees",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "protocolFees",
              "type": "bytes32"
            }
          ],
          "name": "CompositionFees",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "bytes32[]",
              "name": "amounts",
              "type": "bytes32[]"
            }
          ],
          "name": "DepositedToBins",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract ILBFlashLoanCallback",
              "name": "receiver",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "activeId",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "amounts",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "totalFees",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "protocolFees",
              "type": "bytes32"
            }
          ],
          "name": "FlashLoan",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "idReference",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "volatilityReference",
              "type": "uint24"
            }
          ],
          "name": "ForcedDecay",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "hooksParameters",
              "type": "bytes32"
            }
          ],
          "name": "HooksParametersSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint64",
              "name": "version",
              "type": "uint64"
            }
          ],
          "name": "Initialized",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "oracleLength",
              "type": "uint16"
            }
          ],
          "name": "OracleLengthIncreased",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "baseFactor",
              "type": "uint16"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "filterPeriod",
              "type": "uint16"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "decayPeriod",
              "type": "uint16"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "reductionFactor",
              "type": "uint16"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "variableFeeControl",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "protocolShare",
              "type": "uint16"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "maxVolatilityAccumulator",
              "type": "uint24"
            }
          ],
          "name": "StaticFeeParametersSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "id",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "amountsIn",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "amountsOut",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "volatilityAccumulator",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "totalFees",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "protocolFees",
              "type": "bytes32"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "name": "TransferBatch",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "indexed": false,
              "internalType": "bytes32[]",
              "name": "amounts",
              "type": "bytes32[]"
            }
          ],
          "name": "WithdrawnFromBins",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "approveForAll",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "accounts",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            }
          ],
          "name": "balanceOfBatch",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "batchBalances",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "name": "batchTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "ids",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amountsToBurn",
              "type": "uint256[]"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "bytes32[]",
              "name": "amounts",
              "type": "bytes32[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "collectProtocolFees",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "collectedProtocolFees",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "contract ILBFlashLoanCallback",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "amounts",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "flashLoan",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "forceDecay",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getActiveId",
          "outputs": [
            {
              "internalType": "uint24",
              "name": "activeId",
              "type": "uint24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "id",
              "type": "uint24"
            }
          ],
          "name": "getBin",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "binReserveX",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "binReserveY",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getBinStep",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "",
              "type": "uint16"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getFactory",
          "outputs": [
            {
              "internalType": "contract ILBFactory",
              "name": "factory",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "price",
              "type": "uint256"
            }
          ],
          "name": "getIdFromPrice",
          "outputs": [
            {
              "internalType": "uint24",
              "name": "id",
              "type": "uint24"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getLBHooksParameters",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "swapForY",
              "type": "bool"
            },
            {
              "internalType": "uint24",
              "name": "id",
              "type": "uint24"
            }
          ],
          "name": "getNextNonEmptyBin",
          "outputs": [
            {
              "internalType": "uint24",
              "name": "nextId",
              "type": "uint24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getOracleParameters",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "sampleLifetime",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "size",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "activeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint40",
              "name": "lastUpdated",
              "type": "uint40"
            },
            {
              "internalType": "uint40",
              "name": "firstTimestamp",
              "type": "uint40"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint40",
              "name": "lookupTimestamp",
              "type": "uint40"
            }
          ],
          "name": "getOracleSampleAt",
          "outputs": [
            {
              "internalType": "uint64",
              "name": "cumulativeId",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "cumulativeVolatility",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "cumulativeBinCrossed",
              "type": "uint64"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "id",
              "type": "uint24"
            }
          ],
          "name": "getPriceFromId",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "price",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getProtocolFees",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "protocolFeeX",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "protocolFeeY",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "reserveX",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "reserveY",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getStaticFeeParameters",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "baseFactor",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "filterPeriod",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "decayPeriod",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "reductionFactor",
              "type": "uint16"
            },
            {
              "internalType": "uint24",
              "name": "variableFeeControl",
              "type": "uint24"
            },
            {
              "internalType": "uint16",
              "name": "protocolShare",
              "type": "uint16"
            },
            {
              "internalType": "uint24",
              "name": "maxVolatilityAccumulator",
              "type": "uint24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint128",
              "name": "amountOut",
              "type": "uint128"
            },
            {
              "internalType": "bool",
              "name": "swapForY",
              "type": "bool"
            }
          ],
          "name": "getSwapIn",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amountIn",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amountOutLeft",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "fee",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint128",
              "name": "amountIn",
              "type": "uint128"
            },
            {
              "internalType": "bool",
              "name": "swapForY",
              "type": "bool"
            }
          ],
          "name": "getSwapOut",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amountInLeft",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amountOut",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "fee",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getTokenX",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenX",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getTokenY",
          "outputs": [
            {
              "internalType": "contract IERC20",
              "name": "tokenY",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getVariableFeeParameters",
          "outputs": [
            {
              "internalType": "uint24",
              "name": "volatilityAccumulator",
              "type": "uint24"
            },
            {
              "internalType": "uint24",
              "name": "volatilityReference",
              "type": "uint24"
            },
            {
              "internalType": "uint24",
              "name": "idReference",
              "type": "uint24"
            },
            {
              "internalType": "uint40",
              "name": "timeOfLastUpdate",
              "type": "uint40"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "implementation",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "newLength",
              "type": "uint16"
            }
          ],
          "name": "increaseOracleLength",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "baseFactor",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "filterPeriod",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "decayPeriod",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "reductionFactor",
              "type": "uint16"
            },
            {
              "internalType": "uint24",
              "name": "variableFeeControl",
              "type": "uint24"
            },
            {
              "internalType": "uint16",
              "name": "protocolShare",
              "type": "uint16"
            },
            {
              "internalType": "uint24",
              "name": "maxVolatilityAccumulator",
              "type": "uint24"
            },
            {
              "internalType": "uint24",
              "name": "activeId",
              "type": "uint24"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "isApprovedForAll",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes32[]",
              "name": "liquidityConfigs",
              "type": "bytes32[]"
            },
            {
              "internalType": "address",
              "name": "refundTo",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "amountsReceived",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "amountsLeft",
              "type": "bytes32"
            },
            {
              "internalType": "uint256[]",
              "name": "liquidityMinted",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "hooksParameters",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "onHooksSetData",
              "type": "bytes"
            }
          ],
          "name": "setHooksParameters",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "baseFactor",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "filterPeriod",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "decayPeriod",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "reductionFactor",
              "type": "uint16"
            },
            {
              "internalType": "uint24",
              "name": "variableFeeControl",
              "type": "uint24"
            },
            {
              "internalType": "uint16",
              "name": "protocolShare",
              "type": "uint16"
            },
            {
              "internalType": "uint24",
              "name": "maxVolatilityAccumulator",
              "type": "uint24"
            }
          ],
          "name": "setStaticFeeParameters",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "swapForY",
              "type": "bool"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "amountsOut",
              "type": "bytes32"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/traderJoeV2.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x8D47C3a6201267ce38638DEEc6d70566712fFa19",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/traderJoeV2.js"
    },
    {
      "id": "metropolis-amm-factory",
      "engineId": "metropolis-amm",
      "project": "Metropolis",
      "version": "AMM",
      "family": "Metropolis",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "Factory",
      "address": "0x1570300e9cFEC66c9Fb0C8bc14366C86EB170Ad0",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "FEE_DENOMINATOR",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "INIT_CODE_PAIR_HASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "OWNER_FEE_SHARE_MAX",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "ownerFeeShare",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newOwnerFeeShare",
              "type": "uint256"
            }
          ],
          "name": "setOwnerFeeShare",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/metropolis-amm/index.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x1570300e9cFEC66c9Fb0C8bc14366C86EB170Ad0",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/metropolis-amm/index.ts"
    },
    {
      "id": "metropolis-amm-pool",
      "engineId": "metropolis-amm",
      "project": "Metropolis",
      "version": "AMM",
      "family": "Metropolis",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "Pair",
      "address": "0x4310Dc66e46C0Ba318f8A6680cCA244eC1f68823",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "prevFeeAmount",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "feeAmount",
              "type": "uint256"
            }
          ],
          "name": "FeeAmountUpdated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "FEE_DENOMINATOR",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MAX_FEE_AMOUNT",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MIN_FEE_AMOUNT",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PRECISION_FACTOR",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "domainSeparator",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeAmount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newFeeAmount",
              "type": "uint256"
            }
          ],
          "name": "setFeeAmount",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/metropolis-amm/index.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x4310Dc66e46C0Ba318f8A6680cCA244eC1f68823",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/metropolis-amm/index.ts"
    },
    {
      "id": "swapx-v2-factory",
      "engineId": "swapx-v2",
      "project": "SwapX",
      "version": "V2",
      "family": "SwapX",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "PairFactoryUpgradeable",
      "address": "0x05c1be79d3aC21Cc4B727eeD58C9B2fF757F5663",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "version",
              "type": "uint8"
            }
          ],
          "name": "Initialized",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "stable",
              "type": "bool"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "MAX_FEE",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MAX_TREASURY_FEE",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "acceptFeeManager",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "stable",
              "type": "bool"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "dibs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeManager",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "_stable",
              "type": "bool"
            }
          ],
          "name": "getFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getInitializable",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "isPair",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "isPaused",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairCodeHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairs",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "",
              "type": "address[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingFeeManager",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_dibs",
              "type": "address"
            }
          ],
          "name": "setDibs",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "_stable",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "_fee",
              "type": "uint256"
            }
          ],
          "name": "setFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeManager",
              "type": "address"
            }
          ],
          "name": "setFeeManager",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "_state",
              "type": "bool"
            }
          ],
          "name": "setPause",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feehandler",
              "type": "address"
            }
          ],
          "name": "setStakingFeeAddress",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_newFee",
              "type": "uint256"
            }
          ],
          "name": "setStakingFees",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_tresFee",
              "type": "uint256"
            }
          ],
          "name": "setTreasuryFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "stableFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "stakingFeeHandler",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "stakingNFTFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "volatileFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified implementation ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": "0xd887a7ae254322892abd7ff16f0e0f7816502251",
      "explorerUrl": "https://sonicscan.org/address/0x05c1be79d3aC21Cc4B727eeD58C9B2fF757F5663",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "swapx-v2-pool",
      "engineId": "swapx-v2",
      "project": "SwapX",
      "version": "V2",
      "family": "SwapX",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "Pair",
      "address": "0x24f5cd888057A721F1ACD7CBA1Afa7A8384c3e12",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Claim",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Fees",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "reserve0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "reserve1",
              "type": "uint256"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "blockTimestampLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "claimFees",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "claimed0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "claimed1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "claimStakingFees",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "claimable0",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "claimable1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "name": "current",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "currentCumulativePrices",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "reserve0Cumulative",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserve1Cumulative",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "blockTimestamp",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "fees",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "_reserve0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_reserve1",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_blockTimestampLast",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "index0",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "index1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "isStable",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lastObservation",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserve0Cumulative",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserve1Cumulative",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Pair.Observation",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "metadata",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "dec0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "dec1",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "r0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "r1",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "st",
              "type": "bool"
            },
            {
              "internalType": "address",
              "name": "t0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "t1",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "observationLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "observations",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserve0Cumulative",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserve1Cumulative",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            }
          ],
          "name": "prices",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "granularity",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "reserve0",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "reserve0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "reserve1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "reserve1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "window",
              "type": "uint256"
            }
          ],
          "name": "sample",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "stable",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "supplyIndex0",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "supplyIndex1",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tokens",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x24f5cd888057A721F1ACD7CBA1Afa7A8384c3e12",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "swapx-algebra-factory",
      "engineId": "swapx-algebra",
      "project": "SwapX",
      "version": "Algebra",
      "family": "SwapX",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "AlgebraFactory",
      "address": "0x8121a3F8c4176E9765deEa0B95FA2BDfD3016794",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_poolDeployer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "newDefaultCommunityFee",
              "type": "uint16"
            }
          ],
          "name": "DefaultCommunityFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "newDefaultFee",
              "type": "uint16"
            }
          ],
          "name": "DefaultFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "defaultPluginFactoryAddress",
              "type": "address"
            }
          ],
          "name": "DefaultPluginFactory",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "int24",
              "name": "newDefaultTickspacing",
              "type": "int24"
            }
          ],
          "name": "DefaultTickspacing",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferStarted",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "Pool",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ],
          "name": "RenounceOwnershipFinish",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "finishTimestamp",
              "type": "uint256"
            }
          ],
          "name": "RenounceOwnershipStart",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ],
          "name": "RenounceOwnershipStop",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "previousAdminRole",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "newAdminRole",
              "type": "bytes32"
            }
          ],
          "name": "RoleAdminChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "RoleGranted",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "RoleRevoked",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "newVaultFactory",
              "type": "address"
            }
          ],
          "name": "VaultFactory",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DEFAULT_ADMIN_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "POOLS_ADMINISTRATOR_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "POOL_INIT_CODE_HASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "acceptOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            }
          ],
          "name": "computePoolAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultCommunityFee",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "",
              "type": "uint16"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "defaultConfigurationForPool",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "communityFee",
              "type": "uint16"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "internalType": "uint16",
              "name": "fee",
              "type": "uint16"
            },
            {
              "internalType": "address",
              "name": "communityVault",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultFee",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "",
              "type": "uint16"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultPluginFactory",
          "outputs": [
            {
              "internalType": "contract IAlgebraPluginFactory",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultTickspacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "name": "getRoleAdmin",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256"
            }
          ],
          "name": "getRoleMember",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "name": "getRoleMemberCount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "grantRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "hasRole",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "hasRoleOrOwner",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingOwner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "poolByPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "poolDeployer",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnershipStartTimestamp",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "renounceRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "revokeRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "newDefaultCommunityFee",
              "type": "uint16"
            }
          ],
          "name": "setDefaultCommunityFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "newDefaultFee",
              "type": "uint16"
            }
          ],
          "name": "setDefaultFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newDefaultPluginFactory",
              "type": "address"
            }
          ],
          "name": "setDefaultPluginFactory",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "newDefaultTickspacing",
              "type": "int24"
            }
          ],
          "name": "setDefaultTickspacing",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newVaultFactory",
              "type": "address"
            }
          ],
          "name": "setVaultFactory",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "startRenounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "stopRenounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "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": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "vaultFactory",
          "outputs": [
            {
              "internalType": "contract IAlgebraVaultFactory",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x8121a3F8c4176E9765deEa0B95FA2BDfD3016794",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "swapx-algebra-pool",
      "engineId": "swapx-algebra",
      "project": "SwapX",
      "version": "Algebra",
      "family": "SwapX",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "AlgebraPool",
      "address": "0x5C4B7d607aAF7B5CDE9F09b5F03Cf3b5c923AEEa",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "name": "alreadyInitialized",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "arithmeticError",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "bottomTickLowerThanMIN",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "dynamicFeeActive",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "dynamicFeeDisabled",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "flashInsufficientPaid0",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "flashInsufficientPaid1",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "insufficientInputAmount",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "invalidAmountRequired",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "expectedSelector",
              "type": "bytes4"
            }
          ],
          "name": "invalidHookResponse",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "invalidLimitSqrtPrice",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "invalidNewCommunityFee",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "invalidNewTickSpacing",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "liquidityAdd",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "liquidityOverflow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "liquiditySub",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "locked",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "notAllowed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "notInitialized",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "pluginIsNotConnected",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "priceOutOfRange",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "tickInvalidLinks",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "tickIsNotInitialized",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "tickIsNotSpaced",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "tickOutOfRange",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "topTickAboveMAX",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "topTickLowerOrEqBottomTick",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "transferFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "zeroAmountRequired",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "zeroLiquidityActual",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "zeroLiquidityDesired",
          "type": "error"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "liquidityAmount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "Collect",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "communityFeeNew",
              "type": "uint16"
            }
          ],
          "name": "CommunityFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "newCommunityVault",
              "type": "address"
            }
          ],
          "name": "CommunityVault",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "fee",
              "type": "uint16"
            }
          ],
          "name": "Fee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid1",
              "type": "uint256"
            }
          ],
          "name": "Flash",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "price",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Initialize",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "liquidityAmount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "newPluginAddress",
              "type": "address"
            }
          ],
          "name": "Plugin",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "newPluginConfig",
              "type": "uint8"
            }
          ],
          "name": "PluginConfig",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "price",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "int24",
              "name": "newTickSpacing",
              "type": "int24"
            }
          ],
          "name": "TickSpacing",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collect",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "communityFeeLastTimestamp",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "communityVault",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "fee",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "currentFee",
              "type": "uint16"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "flash",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getCommunityFeePending",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "globalState",
          "outputs": [
            {
              "internalType": "uint160",
              "name": "price",
              "type": "uint160"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint16",
              "name": "lastFee",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "pluginConfig",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "communityFee",
              "type": "uint16"
            },
            {
              "internalType": "bool",
              "name": "unlocked",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint160",
              "name": "initialPrice",
              "type": "uint160"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "isUnlocked",
          "outputs": [
            {
              "internalType": "bool",
              "name": "unlocked",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidity",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "maxLiquidityPerTick",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "leftoversRecipient",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "liquidityDesired",
              "type": "uint128"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "liquidityActual",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "nextTickGlobal",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "plugin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "name": "positions",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "innerFeeGrowth0Token",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "innerFeeGrowth1Token",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "fees0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "fees1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "prevTickGlobal",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "safelyGetStateOfAMM",
          "outputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPrice",
              "type": "uint160"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint16",
              "name": "lastFee",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "pluginConfig",
              "type": "uint8"
            },
            {
              "internalType": "uint128",
              "name": "activeLiquidity",
              "type": "uint128"
            },
            {
              "internalType": "int24",
              "name": "nextTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "previousTick",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "newCommunityFee",
              "type": "uint16"
            }
          ],
          "name": "setCommunityFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newCommunityVault",
              "type": "address"
            }
          ],
          "name": "setCommunityVault",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "newFee",
              "type": "uint16"
            }
          ],
          "name": "setFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newPluginAddress",
              "type": "address"
            }
          ],
          "name": "setPlugin",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "newConfig",
              "type": "uint8"
            }
          ],
          "name": "setPluginConfig",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "newTickSpacing",
              "type": "int24"
            }
          ],
          "name": "setTickSpacing",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroToOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountRequired",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "limitSqrtPrice",
              "type": "uint160"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "leftoversRecipient",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroToOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountToSell",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "limitSqrtPrice",
              "type": "uint160"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swapWithPaymentInAdvance",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int16",
              "name": "",
              "type": "int16"
            }
          ],
          "name": "tickTable",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tickTreeRoot",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int16",
              "name": "",
              "type": "int16"
            }
          ],
          "name": "tickTreeSecondLayer",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "name": "ticks",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidityTotal",
              "type": "uint256"
            },
            {
              "internalType": "int128",
              "name": "liquidityDelta",
              "type": "int128"
            },
            {
              "internalType": "int24",
              "name": "prevTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "nextTick",
              "type": "int24"
            },
            {
              "internalType": "uint256",
              "name": "outerFeeGrowth0Token",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "outerFeeGrowth1Token",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalFeeGrowth0Token",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalFeeGrowth1Token",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x5C4B7d607aAF7B5CDE9F09b5F03Cf3b5c923AEEa",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "spookyswap-v2-factory",
      "engineId": "spookyswap-v2",
      "project": "SpookySwap",
      "version": "V2",
      "family": "SpookySwap",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "UniswapV2Factory",
      "address": "0xEE4bC42157cf65291Ba2FE839AE127e3Cc76f741",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "INIT_CODE_PAIR_HASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairCodeHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xEE4bC42157cf65291Ba2FE839AE127e3Cc76f741",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "spookyswap-v2-pool",
      "engineId": "spookyswap-v2",
      "project": "SpookySwap",
      "version": "V2",
      "family": "SpookySwap",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "UniswapV2Pair",
      "address": "0x16C51ca123959fB0FD63817FA3bE9b2A3C2C263A",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x16C51ca123959fB0FD63817FA3bE9b2A3C2C263A",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "spookyswap-v3-factory",
      "engineId": "spookyswap-v3",
      "project": "SpookySwap",
      "version": "V3",
      "family": "SpookySwap",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "UniswapV3Factory",
      "address": "0x3D91B700252e0E3eE7805d12e048a988Ab69C8ad",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "FeeAmountEnabled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "oldOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            }
          ],
          "name": "createPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "enableFeeAmount",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "feeAmountTickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "getPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "parameters",
          "outputs": [
            {
              "internalType": "address",
              "name": "factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_owner",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x3D91B700252e0E3eE7805d12e048a988Ab69C8ad",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "spookyswap-v3-pool",
      "engineId": "spookyswap-v3",
      "project": "SpookySwap",
      "version": "V3",
      "family": "SpookySwap",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "UniswapV3Pool",
      "address": "0x480a36338fDbA6d2e06d1d6f48f9196932fbE30e",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "Collect",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "CollectProtocol",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid1",
              "type": "uint256"
            }
          ],
          "name": "Flash",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "observationCardinalityNextOld",
              "type": "uint16"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "observationCardinalityNextNew",
              "type": "uint16"
            }
          ],
          "name": "IncreaseObservationCardinalityNext",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Initialize",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "feeProtocol0Old",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "feeProtocol1Old",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "feeProtocol0New",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "feeProtocol1New",
              "type": "uint8"
            }
          ],
          "name": "SetFeeProtocol",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collect",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collectProtocol",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "fee",
          "outputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeGrowthGlobal0X128",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeGrowthGlobal1X128",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "flash",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "observationCardinalityNext",
              "type": "uint16"
            }
          ],
          "name": "increaseObservationCardinalityNext",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidity",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "maxLiquidityPerTick",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "observations",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "blockTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "int56",
              "name": "tickCumulative",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityCumulativeX128",
              "type": "uint160"
            },
            {
              "internalType": "bool",
              "name": "initialized",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint32[]",
              "name": "secondsAgos",
              "type": "uint32[]"
            }
          ],
          "name": "observe",
          "outputs": [
            {
              "internalType": "int56[]",
              "name": "tickCumulatives",
              "type": "int56[]"
            },
            {
              "internalType": "uint160[]",
              "name": "secondsPerLiquidityCumulativeX128s",
              "type": "uint160[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "name": "positions",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthInside0LastX128",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthInside1LastX128",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "tokensOwed0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "tokensOwed1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "protocolFees",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "token0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "token1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "feeProtocol0",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "feeProtocol1",
              "type": "uint8"
            }
          ],
          "name": "setFeeProtocol",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "slot0",
          "outputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint16",
              "name": "observationIndex",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "observationCardinality",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "observationCardinalityNext",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "feeProtocol",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "unlocked",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            }
          ],
          "name": "snapshotCumulativesInside",
          "outputs": [
            {
              "internalType": "int56",
              "name": "tickCumulativeInside",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityInsideX128",
              "type": "uint160"
            },
            {
              "internalType": "uint32",
              "name": "secondsInside",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int16",
              "name": "",
              "type": "int16"
            }
          ],
          "name": "tickBitmap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "name": "ticks",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "liquidityGross",
              "type": "uint128"
            },
            {
              "internalType": "int128",
              "name": "liquidityNet",
              "type": "int128"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthOutside0X128",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthOutside1X128",
              "type": "uint256"
            },
            {
              "internalType": "int56",
              "name": "tickCumulativeOutside",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityOutsideX128",
              "type": "uint160"
            },
            {
              "internalType": "uint32",
              "name": "secondsOutside",
              "type": "uint32"
            },
            {
              "internalType": "bool",
              "name": "initialized",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x480a36338fDbA6d2e06d1d6f48f9196932fbE30e",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "thick-factory",
      "engineId": "thick",
      "project": "Thick",
      "version": "V3",
      "family": "Thick / 2THICK",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "UniswapV3Factory",
      "address": "0xE6dA85feb3B4E0d6AEd95c41a125fba859bB9d24",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "FeeAmountEnabled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "oldOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolCreated",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "POOL_INIT_CODE_HASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            }
          ],
          "name": "createPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "enableFeeAmount",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "feeAmountTickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeProtocol",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "getPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "parameters",
          "outputs": [
            {
              "internalType": "address",
              "name": "factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "fee",
              "type": "uint8"
            }
          ],
          "name": "setFeeProtocol",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_owner",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xE6dA85feb3B4E0d6AEd95c41a125fba859bB9d24",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "thick-pool",
      "engineId": "thick",
      "project": "Thick",
      "version": "V3",
      "family": "Thick / 2THICK",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "Thick Pool",
      "address": "0x009FC58D3DE8d4c7570C15bf6953aE91286DAB89",
      "verified": false,
      "abi": [
        {
          "type": "event",
          "anonymous": false,
          "name": "Swap",
          "inputs": [
            {
              "type": "address",
              "name": "sender",
              "indexed": true
            },
            {
              "type": "address",
              "name": "recipient",
              "indexed": true
            },
            {
              "type": "int256",
              "name": "amount0"
            },
            {
              "type": "int256",
              "name": "amount1"
            },
            {
              "type": "uint160",
              "name": "sqrtPriceX96"
            },
            {
              "type": "uint128",
              "name": "liquidity"
            },
            {
              "type": "int24",
              "name": "tick"
            }
          ]
        }
      ],
      "abiSource": "Exact event-only ABI from the cited protocol or adapter family",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x009FC58D3DE8d4c7570C15bf6953aE91286DAB89",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "2thick-factory",
      "engineId": "2thick",
      "project": "2THICK",
      "version": "CL",
      "family": "Thick / 2THICK",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "UniswapV3Factory",
      "address": "0x7Ca1dCCFB4f49564b8f13E18a67747fd428F1C40",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "oldOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolCreated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "bool",
              "name": "state",
              "type": "bool"
            }
          ],
          "name": "tickSpacingEnabled",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "POOL_INIT_CODE_HASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "createPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "ts",
              "type": "int24"
            },
            {
              "internalType": "bool",
              "name": "state",
              "type": "bool"
            }
          ],
          "name": "enableTickSpacing",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "name": "enabledTickSpacing",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeProtocol",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "name": "getPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "parameters",
          "outputs": [
            {
              "internalType": "address",
              "name": "factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "fee",
              "type": "uint8"
            }
          ],
          "name": "setFeeProtocol",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_owner",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x7Ca1dCCFB4f49564b8f13E18a67747fd428F1C40",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "2thick-pool",
      "engineId": "2thick",
      "project": "2THICK",
      "version": "CL",
      "family": "Thick / 2THICK",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "UniswapV3Pool",
      "address": "0xc85E209AC15c3f7F697a9Fb203A73Ff871CC4182",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "Collect",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "CollectProtocol",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid1",
              "type": "uint256"
            }
          ],
          "name": "Flash",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "observationCardinalityNextOld",
              "type": "uint16"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "observationCardinalityNextNew",
              "type": "uint16"
            }
          ],
          "name": "IncreaseObservationCardinalityNext",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Initialize",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "feeProtocolOld",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "feeProtocolNew",
              "type": "uint8"
            }
          ],
          "name": "SetFeeProtocol",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "feeOld",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "feeNew",
              "type": "uint24"
            }
          ],
          "name": "SetSwapFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collect",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collectProtocol",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "fee",
          "outputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeGrowthGlobal0X128",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeGrowthGlobal1X128",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "flash",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "observationCardinalityNext",
              "type": "uint16"
            }
          ],
          "name": "increaseObservationCardinalityNext",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidity",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "maxLiquidityPerTick",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "observations",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "blockTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "int56",
              "name": "tickCumulative",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityCumulativeX128",
              "type": "uint160"
            },
            {
              "internalType": "bool",
              "name": "initialized",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint32[]",
              "name": "secondsAgos",
              "type": "uint32[]"
            }
          ],
          "name": "observe",
          "outputs": [
            {
              "internalType": "int56[]",
              "name": "tickCumulatives",
              "type": "int56[]"
            },
            {
              "internalType": "uint160[]",
              "name": "secondsPerLiquidityCumulativeX128s",
              "type": "uint160[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "name": "positions",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthInside0LastX128",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthInside1LastX128",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "tokensOwed0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "tokensOwed1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "protocolFees",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "token0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "token1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "feeProtocolNew",
              "type": "uint8"
            }
          ],
          "name": "setFeeProtocol",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "feeNew",
              "type": "uint24"
            }
          ],
          "name": "setSwapFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "slot0",
          "outputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint16",
              "name": "observationIndex",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "observationCardinality",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "observationCardinalityNext",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "feeProtocol",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "unlocked",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            }
          ],
          "name": "snapshotCumulativesInside",
          "outputs": [
            {
              "internalType": "int56",
              "name": "tickCumulativeInside",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityInsideX128",
              "type": "uint160"
            },
            {
              "internalType": "uint32",
              "name": "secondsInside",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int16",
              "name": "",
              "type": "int16"
            }
          ],
          "name": "tickBitmap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "name": "ticks",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "liquidityGross",
              "type": "uint128"
            },
            {
              "internalType": "int128",
              "name": "liquidityNet",
              "type": "int128"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthOutside0X128",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthOutside1X128",
              "type": "uint256"
            },
            {
              "internalType": "int56",
              "name": "tickCumulativeOutside",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityOutsideX128",
              "type": "uint160"
            },
            {
              "internalType": "uint32",
              "name": "secondsOutside",
              "type": "uint32"
            },
            {
              "internalType": "bool",
              "name": "initialized",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xc85E209AC15c3f7F697a9Fb203A73Ff871CC4182",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "shadow-legacy-factory",
      "engineId": "shadow-legacy",
      "project": "Shadow Exchange",
      "version": "Legacy V2",
      "family": "Shadow Exchange Legacy",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "PairFactory",
      "address": "0x2dA25E7446A70D7be65fd4c053948BEcAA6374c8",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_voter",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_treasury",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_accessHub",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_feeRecipientFactory",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "FEE_TOO_HIGH",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "IA",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "INVALID_FEE_SPLIT",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "NOT_AUTHORIZED",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "PE",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ZA",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ZERO_FEE",
          "type": "error"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_caller",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bool",
              "name": "_status",
              "type": "bool"
            }
          ],
          "name": "FeeSplitWhenNoGauge",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_caller",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newTreasury",
              "type": "address"
            }
          ],
          "name": "NewTreasury",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "fee",
              "type": "uint256"
            }
          ],
          "name": "SetFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "feeRecipient",
              "type": "address"
            }
          ],
          "name": "SetFeeRecipient",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "_feeSplit",
              "type": "uint256"
            }
          ],
          "name": "SetFeeSplit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "fee",
              "type": "uint256"
            }
          ],
          "name": "SetPairFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "_feeSplit",
              "type": "uint256"
            }
          ],
          "name": "SetPairFeeSplit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bool",
              "name": "_status",
              "type": "bool"
            }
          ],
          "name": "SkimStatus",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "MAX_FEE",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "accessHub",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "stable",
              "type": "bool"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "fee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeRecipientFactory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeSplit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeSplitWhenNoGauge",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "stable",
              "type": "bool"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "name": "isPair",
          "outputs": [
            {
              "internalType": "bool",
              "name": "isPair",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairCodeHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            }
          ],
          "name": "pairFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "feeForPair",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_fee",
              "type": "uint256"
            }
          ],
          "name": "setFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_feeRecipient",
              "type": "address"
            }
          ],
          "name": "setFeeRecipient",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_feeSplit",
              "type": "uint256"
            }
          ],
          "name": "setFeeSplit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "status",
              "type": "bool"
            }
          ],
          "name": "setFeeSplitWhenNoGauge",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_fee",
              "type": "uint256"
            }
          ],
          "name": "setPairFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_feeSplit",
              "type": "uint256"
            }
          ],
          "name": "setPairFeeSplit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "_status",
              "type": "bool"
            }
          ],
          "name": "setSkimEnabled",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_treasury",
              "type": "address"
            }
          ],
          "name": "setTreasury",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "name": "skimEnabled",
          "outputs": [
            {
              "internalType": "bool",
              "name": "skimEnabled",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "treasury",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "voter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/shadow-legacy.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x2dA25E7446A70D7be65fd4c053948BEcAA6374c8",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/shadow-legacy.ts"
    },
    {
      "id": "shadow-legacy-pool",
      "engineId": "shadow-legacy",
      "project": "Shadow Exchange",
      "version": "Legacy V2",
      "family": "Shadow Exchange Legacy",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "Pair",
      "address": "0x738C23F7373bf474C48C58782310e5eB437B361C",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "allowance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "needed",
              "type": "uint256"
            }
          ],
          "name": "ERC20InsufficientAllowance",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "balance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "needed",
              "type": "uint256"
            }
          ],
          "name": "ERC20InsufficientBalance",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "approver",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidApprover",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidReceiver",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidSender",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "ERC20InvalidSpender",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "IIA",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "IL",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ILB",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ILM",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "IOA",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "IT",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "K",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "NOT_AUTHORIZED",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "OVERFLOW",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ReentrancyGuardReentrantCall",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "SD",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "STF",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "UNSTABLE_RATIO",
          "type": "error"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "name": "current",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "currentCumulativePrices",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "reserve0Cumulative",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserve1Cumulative",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "blockTimestamp",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "fee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeRecipient",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeSplit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "_stable",
              "type": "bool"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lastObservation",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserve0Cumulative",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserve1Cumulative",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Pair.Observation",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "metadata",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "_decimals0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_decimals1",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_reserve0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_reserve1",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "_stable",
              "type": "bool"
            },
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "mintFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "observationLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "observations",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserve0Cumulative",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserve1Cumulative",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            }
          ],
          "name": "prices",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "granularity",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "reserve0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "reserve1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "points",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "window",
              "type": "uint256"
            }
          ],
          "name": "sample",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_fee",
              "type": "uint256"
            }
          ],
          "name": "setFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeRecipient",
              "type": "address"
            }
          ],
          "name": "setFeeRecipient",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_feeSplit",
              "type": "uint256"
            }
          ],
          "name": "setFeeSplit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "stable",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/shadow-legacy.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x738C23F7373bf474C48C58782310e5eB437B361C",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/shadow-legacy.ts"
    },
    {
      "id": "solidly-v3-factory",
      "engineId": "solidly-v3",
      "project": "Solidly",
      "version": "V3",
      "family": "Solidly",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "SolidlyV3Factory",
      "address": "0x777fAca731b17E8847eBF175c94DbE9d81A8f630",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "FeeAmountEnabled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "oldFeeCollector",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newFeeCollector",
              "type": "address"
            }
          ],
          "name": "FeeCollectorChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "newStatus",
              "type": "uint256"
            }
          ],
          "name": "FeeSetterStatusToggled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "oldOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            }
          ],
          "name": "createPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "enableFeeAmount",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "feeAmountTickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeCollector",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getFeeSetters",
          "outputs": [
            {
              "internalType": "address[]",
              "name": "",
              "type": "address[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "name": "getPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "isFeeSetter",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "parameters",
          "outputs": [
            {
              "internalType": "address",
              "name": "factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeCollector",
              "type": "address"
            }
          ],
          "name": "setFeeCollector",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_owner",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            }
          ],
          "name": "toggleFeeSetterStatus",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x777fAca731b17E8847eBF175c94DbE9d81A8f630",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js"
    },
    {
      "id": "solidly-v3-pool",
      "engineId": "solidly-v3",
      "project": "Solidly",
      "version": "V3",
      "family": "Solidly",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "SolidlyV3Pool",
      "address": "0xca7b107eeca3367b2add79157b92180b3d7d53fc",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "Collect",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "CollectProtocol",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid1",
              "type": "uint256"
            }
          ],
          "name": "Flash",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Initialize",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "feeOld",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "feeNew",
              "type": "uint24"
            }
          ],
          "name": "SetFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "amount0Min",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Min",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amountToBurn",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount0ToCollect",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1ToCollect",
              "type": "uint128"
            }
          ],
          "name": "burnAndCollect",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0FromBurn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1FromBurn",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "amount0Collected",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Collected",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amountToBurn",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "amount0FromBurnMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1FromBurnMin",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "amount0ToCollect",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1ToCollect",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "burnAndCollect",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0FromBurn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1FromBurn",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "amount0Collected",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Collected",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collect",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collectProtocol",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "flash",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidity",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "maxLiquidityPerTick",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "amount0Min",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Min",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "amount0Min",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Min",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "poolFees",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "token0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "token1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "name": "positions",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "tokensOwed0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "tokensOwed1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "name": "quoteSwap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96After",
              "type": "uint160"
            },
            {
              "internalType": "int24",
              "name": "tickAfter",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "liquidityAfter",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            }
          ],
          "name": "setFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "slot0",
          "outputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "bool",
              "name": "unlocked",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            },
            {
              "internalType": "uint256",
              "name": "amountLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            },
            {
              "internalType": "uint256",
              "name": "amountLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "trackingCode",
              "type": "uint256"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            },
            {
              "internalType": "uint256",
              "name": "trackingCode",
              "type": "uint256"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            },
            {
              "internalType": "uint256",
              "name": "amountLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            },
            {
              "internalType": "uint256",
              "name": "amountLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "trackingCode",
              "type": "uint256"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "trackingCode",
              "type": "uint256"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int16",
              "name": "",
              "type": "int16"
            }
          ],
          "name": "tickBitmap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "name": "ticks",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "liquidityGross",
              "type": "uint128"
            },
            {
              "internalType": "int128",
              "name": "liquidityNet",
              "type": "int128"
            },
            {
              "internalType": "bool",
              "name": "initialized",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xca7b107eeca3367b2add79157b92180b3d7d53fc",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js"
    },
    {
      "id": "zkswap-v2-factory",
      "engineId": "zkswap-v2",
      "project": "zkSwap",
      "version": "V2",
      "family": "zkSwap",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "ZFFactory",
      "address": "0xCe98a0E578b639AA90EE96eD5ba8E5a4022de529",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "feeTo",
              "type": "address"
            }
          ],
          "name": "FeeToSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "feeToSetter",
              "type": "address"
            }
          ],
          "name": "FeeToSetterSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "allPairsLength",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "protocolFeeOverride",
              "type": "uint16"
            }
          ],
          "name": "ProtocolFeeOverrideSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "newProtocolFee",
              "type": "uint16"
            }
          ],
          "name": "ProtocolFeeSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "swapFeeOverride",
              "type": "uint16"
            }
          ],
          "name": "SwapFeeOverrideSet",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "newSwapFee",
              "type": "uint16"
            }
          ],
          "name": "SwapFeeSet",
          "type": "event"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "INIT_CODE_PAIR_HASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "protocolFee",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "",
              "type": "uint16"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "uint16",
              "name": "_newFee",
              "type": "uint16"
            }
          ],
          "name": "setProtocolFee",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "_protocolFeeOverride",
              "type": "uint16"
            }
          ],
          "name": "setProtocolFeeOverride",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "uint16",
              "name": "_newFee",
              "type": "uint16"
            }
          ],
          "name": "setSwapFee",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "_swapFeeOverride",
              "type": "uint16"
            }
          ],
          "name": "setSwapFeeOverride",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "swapFee",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "",
              "type": "uint16"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xCe98a0E578b639AA90EE96eD5ba8E5a4022de529",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "zkswap-v2-pool",
      "engineId": "zkswap-v2",
      "project": "zkSwap",
      "version": "V2",
      "family": "zkSwap",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "zkSwap Pool",
      "address": "0xd85b9Ca9B52AB79136f930452cDd8f51D9f7AD3e",
      "verified": false,
      "abi": [
        {
          "type": "event",
          "anonymous": false,
          "name": "Swap",
          "inputs": [
            {
              "type": "address",
              "name": "sender",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "amount0In"
            },
            {
              "type": "uint256",
              "name": "amount1In"
            },
            {
              "type": "uint256",
              "name": "amount0Out"
            },
            {
              "type": "uint256",
              "name": "amount1Out"
            },
            {
              "type": "address",
              "name": "to",
              "indexed": true
            }
          ]
        }
      ],
      "abiSource": "Exact event-only ABI from the cited protocol or adapter family",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xd85b9Ca9B52AB79136f930452cDd8f51D9f7AD3e",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "zkswap-v3-factory",
      "engineId": "zkswap-v3",
      "project": "zkSwap",
      "version": "V3",
      "family": "zkSwap",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "ZFV3Factory",
      "address": "0x6D977fCC945261B80D128A5a91cbF9a9148032A4",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_poolDeployer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "FeeAmountEnabled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "whitelistRequested",
              "type": "bool"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "enabled",
              "type": "bool"
            }
          ],
          "name": "FeeAmountExtraInfoUpdated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "oldOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolCreated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "lmPoolDeployer",
              "type": "address"
            }
          ],
          "name": "SetLmPoolDeployer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "verified",
              "type": "bool"
            }
          ],
          "name": "WhiteListAdded",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collectProtocol",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            }
          ],
          "name": "createPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "enableFeeAmount",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "feeAmountTickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "feeAmountTickSpacingExtraInfo",
          "outputs": [
            {
              "internalType": "bool",
              "name": "whitelistRequested",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "enabled",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "getPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lmPoolDeployer",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "poolDeployer",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "bool",
              "name": "whitelistRequested",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "enabled",
              "type": "bool"
            }
          ],
          "name": "setFeeAmountExtraInfo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "feeProtocol0",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "feeProtocol1",
              "type": "uint32"
            }
          ],
          "name": "setFeeProtocol",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "lmPool",
              "type": "address"
            }
          ],
          "name": "setLmPool",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_lmPoolDeployer",
              "type": "address"
            }
          ],
          "name": "setLmPoolDeployer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_owner",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "verified",
              "type": "bool"
            }
          ],
          "name": "setWhiteListAddress",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x6D977fCC945261B80D128A5a91cbF9a9148032A4",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js"
    },
    {
      "id": "zkswap-v3-pool",
      "engineId": "zkswap-v3",
      "project": "zkSwap",
      "version": "V3",
      "family": "zkSwap",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "ZFV3Pool",
      "address": "0x64bfEc80267C7E96970eb3FD8630b0274A2229fe",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "Collect",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "CollectProtocol",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid1",
              "type": "uint256"
            }
          ],
          "name": "Flash",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "observationCardinalityNextOld",
              "type": "uint16"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "observationCardinalityNextNew",
              "type": "uint16"
            }
          ],
          "name": "IncreaseObservationCardinalityNext",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Initialize",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint32",
              "name": "feeProtocol0Old",
              "type": "uint32"
            },
            {
              "indexed": false,
              "internalType": "uint32",
              "name": "feeProtocol1Old",
              "type": "uint32"
            },
            {
              "indexed": false,
              "internalType": "uint32",
              "name": "feeProtocol0New",
              "type": "uint32"
            },
            {
              "indexed": false,
              "internalType": "uint32",
              "name": "feeProtocol1New",
              "type": "uint32"
            }
          ],
          "name": "SetFeeProtocol",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "addr",
              "type": "address"
            }
          ],
          "name": "SetLmPoolEvent",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "protocolFeesToken0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "protocolFeesToken1",
              "type": "uint128"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collect",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collectProtocol",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "fee",
          "outputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeGrowthGlobal0X128",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeGrowthGlobal1X128",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "flash",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "observationCardinalityNext",
              "type": "uint16"
            }
          ],
          "name": "increaseObservationCardinalityNext",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidity",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lmPool",
          "outputs": [
            {
              "internalType": "contract IZFV3LmPool",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "maxLiquidityPerTick",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "observations",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "blockTimestamp",
              "type": "uint32"
            },
            {
              "internalType": "int56",
              "name": "tickCumulative",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityCumulativeX128",
              "type": "uint160"
            },
            {
              "internalType": "bool",
              "name": "initialized",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint32[]",
              "name": "secondsAgos",
              "type": "uint32[]"
            }
          ],
          "name": "observe",
          "outputs": [
            {
              "internalType": "int56[]",
              "name": "tickCumulatives",
              "type": "int56[]"
            },
            {
              "internalType": "uint160[]",
              "name": "secondsPerLiquidityCumulativeX128s",
              "type": "uint160[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "name": "positions",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthInside0LastX128",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthInside1LastX128",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "tokensOwed0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "tokensOwed1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "protocolFees",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "token0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "token1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint32",
              "name": "feeProtocol0",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "feeProtocol1",
              "type": "uint32"
            }
          ],
          "name": "setFeeProtocol",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_lmPool",
              "type": "address"
            }
          ],
          "name": "setLmPool",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "slot0",
          "outputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPriceX96",
              "type": "uint160"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint16",
              "name": "observationIndex",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "observationCardinality",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "observationCardinalityNext",
              "type": "uint16"
            },
            {
              "internalType": "uint32",
              "name": "feeProtocol",
              "type": "uint32"
            },
            {
              "internalType": "bool",
              "name": "unlocked",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            }
          ],
          "name": "snapshotCumulativesInside",
          "outputs": [
            {
              "internalType": "int56",
              "name": "tickCumulativeInside",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityInsideX128",
              "type": "uint160"
            },
            {
              "internalType": "uint32",
              "name": "secondsInside",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroForOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountSpecified",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int16",
              "name": "",
              "type": "int16"
            }
          ],
          "name": "tickBitmap",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "name": "ticks",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "liquidityGross",
              "type": "uint128"
            },
            {
              "internalType": "int128",
              "name": "liquidityNet",
              "type": "int128"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthOutside0X128",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeGrowthOutside1X128",
              "type": "uint256"
            },
            {
              "internalType": "int56",
              "name": "tickCumulativeOutside",
              "type": "int56"
            },
            {
              "internalType": "uint160",
              "name": "secondsPerLiquidityOutsideX128",
              "type": "uint160"
            },
            {
              "internalType": "uint32",
              "name": "secondsOutside",
              "type": "uint32"
            },
            {
              "internalType": "bool",
              "name": "initialized",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x64bfEc80267C7E96970eb3FD8630b0274A2229fe",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js"
    },
    {
      "id": "curve-stableswap-ng-factory",
      "engineId": "curve-stableswap-ng",
      "project": "Curve",
      "version": "StableSwap NG",
      "family": "Curve",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "CurveStableSwapFactory",
      "address": "0x7C2085419BE6a04f4ad88ea91bC9F5C6E6C463D8",
      "verified": true,
      "abi": [
        {
          "name": "BasePoolAdded",
          "inputs": [
            {
              "name": "base_pool",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "PlainPoolDeployed",
          "inputs": [
            {
              "name": "pool",
              "type": "address",
              "indexed": false
            },
            {
              "name": "coins",
              "type": "address[]",
              "indexed": false
            },
            {
              "name": "A",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "deployer",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "MetaPoolDeployed",
          "inputs": [
            {
              "name": "pool",
              "type": "address",
              "indexed": false
            },
            {
              "name": "coin",
              "type": "address",
              "indexed": false
            },
            {
              "name": "base_pool",
              "type": "address",
              "indexed": false
            },
            {
              "name": "A",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "deployer",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "LiquidityGaugeDeployed",
          "inputs": [
            {
              "name": "pool",
              "type": "address",
              "indexed": false
            },
            {
              "name": "gauge",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "stateMutability": "nonpayable",
          "type": "constructor",
          "inputs": [
            {
              "name": "_fee_receiver",
              "type": "address"
            },
            {
              "name": "_owner",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_owner",
          "inputs": [
            {
              "name": "_owner",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "find_pool_for_coins",
          "inputs": [
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "find_pool_for_coins",
          "inputs": [
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            },
            {
              "name": "i",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_base_pool",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_n_coins",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_meta_n_coins",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            },
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_coins",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address[]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_underlying_coins",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address[]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_decimals",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_underlying_decimals",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_metapool_rates",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_balances",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_underlying_balances",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_A",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_fees",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            },
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_admin_balances",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_coin_indices",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            },
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "int128"
            },
            {
              "name": "",
              "type": "int128"
            },
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_gauge",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_implementation_address",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "is_meta",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_pool_asset_types",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint8[]"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "deploy_plain_pool",
          "inputs": [
            {
              "name": "_name",
              "type": "string"
            },
            {
              "name": "_symbol",
              "type": "string"
            },
            {
              "name": "_coins",
              "type": "address[]"
            },
            {
              "name": "_A",
              "type": "uint256"
            },
            {
              "name": "_fee",
              "type": "uint256"
            },
            {
              "name": "_offpeg_fee_multiplier",
              "type": "uint256"
            },
            {
              "name": "_ma_exp_time",
              "type": "uint256"
            },
            {
              "name": "_implementation_idx",
              "type": "uint256"
            },
            {
              "name": "_asset_types",
              "type": "uint8[]"
            },
            {
              "name": "_method_ids",
              "type": "bytes4[]"
            },
            {
              "name": "_oracles",
              "type": "address[]"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "deploy_metapool",
          "inputs": [
            {
              "name": "_base_pool",
              "type": "address"
            },
            {
              "name": "_name",
              "type": "string"
            },
            {
              "name": "_symbol",
              "type": "string"
            },
            {
              "name": "_coin",
              "type": "address"
            },
            {
              "name": "_A",
              "type": "uint256"
            },
            {
              "name": "_fee",
              "type": "uint256"
            },
            {
              "name": "_offpeg_fee_multiplier",
              "type": "uint256"
            },
            {
              "name": "_ma_exp_time",
              "type": "uint256"
            },
            {
              "name": "_implementation_idx",
              "type": "uint256"
            },
            {
              "name": "_asset_type",
              "type": "uint8"
            },
            {
              "name": "_method_id",
              "type": "bytes4"
            },
            {
              "name": "_oracle",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "deploy_gauge",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "add_base_pool",
          "inputs": [
            {
              "name": "_base_pool",
              "type": "address"
            },
            {
              "name": "_base_lp_token",
              "type": "address"
            },
            {
              "name": "_asset_types",
              "type": "uint8[]"
            },
            {
              "name": "_n_coins",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_pool_implementations",
          "inputs": [
            {
              "name": "_implementation_index",
              "type": "uint256"
            },
            {
              "name": "_implementation",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_metapool_implementations",
          "inputs": [
            {
              "name": "_implementation_index",
              "type": "uint256"
            },
            {
              "name": "_implementation",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_math_implementation",
          "inputs": [
            {
              "name": "_math_implementation",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_gauge_implementation",
          "inputs": [
            {
              "name": "_gauge_implementation",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_views_implementation",
          "inputs": [
            {
              "name": "_views_implementation",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "commit_transfer_ownership",
          "inputs": [
            {
              "name": "_addr",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "accept_transfer_ownership",
          "inputs": [],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_fee_receiver",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            },
            {
              "name": "_fee_receiver",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "add_asset_type",
          "inputs": [
            {
              "name": "_id",
              "type": "uint8"
            },
            {
              "name": "_name",
              "type": "string"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "version",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "admin",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "future_admin",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "asset_types",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint8"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "pool_list",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "pool_count",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "base_pool_list",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "base_pool_count",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "base_pool_data",
          "inputs": [
            {
              "name": "arg0",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "components": [
                {
                  "name": "lp_token",
                  "type": "address"
                },
                {
                  "name": "coins",
                  "type": "address[]"
                },
                {
                  "name": "decimals",
                  "type": "uint256"
                },
                {
                  "name": "n_coins",
                  "type": "uint256"
                },
                {
                  "name": "asset_types",
                  "type": "uint8[]"
                }
              ]
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "base_pool_assets",
          "inputs": [
            {
              "name": "arg0",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "pool_implementations",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "metapool_implementations",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "math_implementation",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "gauge_implementation",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "views_implementation",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee_receiver",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x7C2085419BE6a04f4ad88ea91bC9F5C6E6C463D8",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json"
    },
    {
      "id": "curve-stableswap-ng-pool",
      "engineId": "curve-stableswap-ng",
      "project": "Curve",
      "version": "StableSwap NG",
      "family": "Curve",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "CurveStableSwap",
      "address": "0x5361c430b7DCB09CfD28c8F35714a2ef3a7D3B66",
      "verified": true,
      "abi": [
        {
          "name": "Transfer",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "indexed": true
            },
            {
              "name": "receiver",
              "type": "address",
              "indexed": true
            },
            {
              "name": "value",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "Approval",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true
            },
            {
              "name": "spender",
              "type": "address",
              "indexed": true
            },
            {
              "name": "value",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "TokenExchange",
          "inputs": [
            {
              "name": "buyer",
              "type": "address",
              "indexed": true
            },
            {
              "name": "sold_id",
              "type": "int128",
              "indexed": false
            },
            {
              "name": "tokens_sold",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "bought_id",
              "type": "int128",
              "indexed": false
            },
            {
              "name": "tokens_bought",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "TokenExchangeUnderlying",
          "inputs": [
            {
              "name": "buyer",
              "type": "address",
              "indexed": true
            },
            {
              "name": "sold_id",
              "type": "int128",
              "indexed": false
            },
            {
              "name": "tokens_sold",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "bought_id",
              "type": "int128",
              "indexed": false
            },
            {
              "name": "tokens_bought",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "AddLiquidity",
          "inputs": [
            {
              "name": "provider",
              "type": "address",
              "indexed": true
            },
            {
              "name": "token_amounts",
              "type": "uint256[]",
              "indexed": false
            },
            {
              "name": "fees",
              "type": "uint256[]",
              "indexed": false
            },
            {
              "name": "invariant",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "token_supply",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "RemoveLiquidity",
          "inputs": [
            {
              "name": "provider",
              "type": "address",
              "indexed": true
            },
            {
              "name": "token_amounts",
              "type": "uint256[]",
              "indexed": false
            },
            {
              "name": "fees",
              "type": "uint256[]",
              "indexed": false
            },
            {
              "name": "token_supply",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "RemoveLiquidityOne",
          "inputs": [
            {
              "name": "provider",
              "type": "address",
              "indexed": true
            },
            {
              "name": "token_id",
              "type": "int128",
              "indexed": false
            },
            {
              "name": "token_amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "coin_amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "token_supply",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "RemoveLiquidityImbalance",
          "inputs": [
            {
              "name": "provider",
              "type": "address",
              "indexed": true
            },
            {
              "name": "token_amounts",
              "type": "uint256[]",
              "indexed": false
            },
            {
              "name": "fees",
              "type": "uint256[]",
              "indexed": false
            },
            {
              "name": "invariant",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "token_supply",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "RampA",
          "inputs": [
            {
              "name": "old_A",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "new_A",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "initial_time",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "future_time",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "StopRampA",
          "inputs": [
            {
              "name": "A",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "t",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "ApplyNewFee",
          "inputs": [
            {
              "name": "fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "offpeg_fee_multiplier",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "SetNewMATime",
          "inputs": [
            {
              "name": "ma_exp_time",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "D_ma_time",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "stateMutability": "nonpayable",
          "type": "constructor",
          "inputs": [
            {
              "name": "_name",
              "type": "string"
            },
            {
              "name": "_symbol",
              "type": "string"
            },
            {
              "name": "_A",
              "type": "uint256"
            },
            {
              "name": "_fee",
              "type": "uint256"
            },
            {
              "name": "_offpeg_fee_multiplier",
              "type": "uint256"
            },
            {
              "name": "_ma_exp_time",
              "type": "uint256"
            },
            {
              "name": "_coins",
              "type": "address[]"
            },
            {
              "name": "_rate_multipliers",
              "type": "uint256[]"
            },
            {
              "name": "_asset_types",
              "type": "uint8[]"
            },
            {
              "name": "_method_ids",
              "type": "bytes4[]"
            },
            {
              "name": "_oracles",
              "type": "address[]"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange",
          "inputs": [
            {
              "name": "i",
              "type": "int128"
            },
            {
              "name": "j",
              "type": "int128"
            },
            {
              "name": "_dx",
              "type": "uint256"
            },
            {
              "name": "_min_dy",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange",
          "inputs": [
            {
              "name": "i",
              "type": "int128"
            },
            {
              "name": "j",
              "type": "int128"
            },
            {
              "name": "_dx",
              "type": "uint256"
            },
            {
              "name": "_min_dy",
              "type": "uint256"
            },
            {
              "name": "_receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange_received",
          "inputs": [
            {
              "name": "i",
              "type": "int128"
            },
            {
              "name": "j",
              "type": "int128"
            },
            {
              "name": "_dx",
              "type": "uint256"
            },
            {
              "name": "_min_dy",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange_received",
          "inputs": [
            {
              "name": "i",
              "type": "int128"
            },
            {
              "name": "j",
              "type": "int128"
            },
            {
              "name": "_dx",
              "type": "uint256"
            },
            {
              "name": "_min_dy",
              "type": "uint256"
            },
            {
              "name": "_receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "add_liquidity",
          "inputs": [
            {
              "name": "_amounts",
              "type": "uint256[]"
            },
            {
              "name": "_min_mint_amount",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "add_liquidity",
          "inputs": [
            {
              "name": "_amounts",
              "type": "uint256[]"
            },
            {
              "name": "_min_mint_amount",
              "type": "uint256"
            },
            {
              "name": "_receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity_one_coin",
          "inputs": [
            {
              "name": "_burn_amount",
              "type": "uint256"
            },
            {
              "name": "i",
              "type": "int128"
            },
            {
              "name": "_min_received",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity_one_coin",
          "inputs": [
            {
              "name": "_burn_amount",
              "type": "uint256"
            },
            {
              "name": "i",
              "type": "int128"
            },
            {
              "name": "_min_received",
              "type": "uint256"
            },
            {
              "name": "_receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity_imbalance",
          "inputs": [
            {
              "name": "_amounts",
              "type": "uint256[]"
            },
            {
              "name": "_max_burn_amount",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity_imbalance",
          "inputs": [
            {
              "name": "_amounts",
              "type": "uint256[]"
            },
            {
              "name": "_max_burn_amount",
              "type": "uint256"
            },
            {
              "name": "_receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity",
          "inputs": [
            {
              "name": "_burn_amount",
              "type": "uint256"
            },
            {
              "name": "_min_amounts",
              "type": "uint256[]"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity",
          "inputs": [
            {
              "name": "_burn_amount",
              "type": "uint256"
            },
            {
              "name": "_min_amounts",
              "type": "uint256[]"
            },
            {
              "name": "_receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity",
          "inputs": [
            {
              "name": "_burn_amount",
              "type": "uint256"
            },
            {
              "name": "_min_amounts",
              "type": "uint256[]"
            },
            {
              "name": "_receiver",
              "type": "address"
            },
            {
              "name": "_claim_admin_fees",
              "type": "bool"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "withdraw_admin_fees",
          "inputs": [],
          "outputs": []
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "last_price",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "ema_price",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_p",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "price_oracle",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "D_oracle",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transfer",
          "inputs": [
            {
              "name": "_to",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transferFrom",
          "inputs": [
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "approve",
          "inputs": [
            {
              "name": "_spender",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "permit",
          "inputs": [
            {
              "name": "_owner",
              "type": "address"
            },
            {
              "name": "_spender",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            },
            {
              "name": "_deadline",
              "type": "uint256"
            },
            {
              "name": "_v",
              "type": "uint8"
            },
            {
              "name": "_r",
              "type": "bytes32"
            },
            {
              "name": "_s",
              "type": "bytes32"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "DOMAIN_SEPARATOR",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_dx",
          "inputs": [
            {
              "name": "i",
              "type": "int128"
            },
            {
              "name": "j",
              "type": "int128"
            },
            {
              "name": "dy",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_dy",
          "inputs": [
            {
              "name": "i",
              "type": "int128"
            },
            {
              "name": "j",
              "type": "int128"
            },
            {
              "name": "dx",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "calc_withdraw_one_coin",
          "inputs": [
            {
              "name": "_burn_amount",
              "type": "uint256"
            },
            {
              "name": "i",
              "type": "int128"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "totalSupply",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_virtual_price",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "calc_token_amount",
          "inputs": [
            {
              "name": "_amounts",
              "type": "uint256[]"
            },
            {
              "name": "_is_deposit",
              "type": "bool"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "A",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "A_precise",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "balances",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_balances",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "stored_rates",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256[]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "dynamic_fee",
          "inputs": [
            {
              "name": "i",
              "type": "int128"
            },
            {
              "name": "j",
              "type": "int128"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "ramp_A",
          "inputs": [
            {
              "name": "_future_A",
              "type": "uint256"
            },
            {
              "name": "_future_time",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "stop_ramp_A",
          "inputs": [],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_new_fee",
          "inputs": [
            {
              "name": "_new_fee",
              "type": "uint256"
            },
            {
              "name": "_new_offpeg_fee_multiplier",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_ma_exp_time",
          "inputs": [
            {
              "name": "_ma_exp_time",
              "type": "uint256"
            },
            {
              "name": "_D_ma_time",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "version",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "N_COINS",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "coins",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "offpeg_fee_multiplier",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "admin_fee",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "initial_A",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "future_A",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "initial_A_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "future_A_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "admin_balances",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "ma_exp_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "D_ma_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "ma_last_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "name",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "symbol",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "decimals",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "balanceOf",
          "inputs": [
            {
              "name": "arg0",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "allowance",
          "inputs": [
            {
              "name": "arg0",
              "type": "address"
            },
            {
              "name": "arg1",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "nonces",
          "inputs": [
            {
              "name": "arg0",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "salt",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bytes32"
            }
          ]
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x5361c430b7DCB09CfD28c8F35714a2ef3a7D3B66",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json"
    },
    {
      "id": "curve-twocrypto-ng-factory",
      "engineId": "curve-twocrypto-ng",
      "project": "Curve",
      "version": "TwoCrypto NG",
      "family": "Curve",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "CurveTwocryptoSwapFactory",
      "address": "0x1A83348F9cCFD3Fe1A8C0adBa580Ac4e267Fe495",
      "verified": true,
      "abi": [
        {
          "name": "TwocryptoPoolDeployed",
          "inputs": [
            {
              "name": "pool",
              "type": "address",
              "indexed": false
            },
            {
              "name": "name",
              "type": "string",
              "indexed": false
            },
            {
              "name": "symbol",
              "type": "string",
              "indexed": false
            },
            {
              "name": "coins",
              "type": "address[2]",
              "indexed": false
            },
            {
              "name": "math",
              "type": "address",
              "indexed": false
            },
            {
              "name": "salt",
              "type": "bytes32",
              "indexed": false
            },
            {
              "name": "precisions",
              "type": "uint256[2]",
              "indexed": false
            },
            {
              "name": "packed_A_gamma",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_fee_params",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_rebalancing_params",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_prices",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "deployer",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "LiquidityGaugeDeployed",
          "inputs": [
            {
              "name": "pool",
              "type": "address",
              "indexed": false
            },
            {
              "name": "gauge",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "UpdateFeeReceiver",
          "inputs": [
            {
              "name": "_old_fee_receiver",
              "type": "address",
              "indexed": false
            },
            {
              "name": "_new_fee_receiver",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "UpdatePoolImplementation",
          "inputs": [
            {
              "name": "_implemention_id",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "_old_pool_implementation",
              "type": "address",
              "indexed": false
            },
            {
              "name": "_new_pool_implementation",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "UpdateGaugeImplementation",
          "inputs": [
            {
              "name": "_old_gauge_implementation",
              "type": "address",
              "indexed": false
            },
            {
              "name": "_new_gauge_implementation",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "UpdateMathImplementation",
          "inputs": [
            {
              "name": "_old_math_implementation",
              "type": "address",
              "indexed": false
            },
            {
              "name": "_new_math_implementation",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "UpdateViewsImplementation",
          "inputs": [
            {
              "name": "_old_views_implementation",
              "type": "address",
              "indexed": false
            },
            {
              "name": "_new_views_implementation",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "TransferOwnership",
          "inputs": [
            {
              "name": "_old_owner",
              "type": "address",
              "indexed": false
            },
            {
              "name": "_new_owner",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "stateMutability": "nonpayable",
          "type": "constructor",
          "inputs": [
            {
              "name": "_fee_receiver",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_owner",
          "inputs": [
            {
              "name": "_owner",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "deploy_pool",
          "inputs": [
            {
              "name": "_name",
              "type": "string"
            },
            {
              "name": "_symbol",
              "type": "string"
            },
            {
              "name": "_coins",
              "type": "address[2]"
            },
            {
              "name": "implementation_id",
              "type": "uint256"
            },
            {
              "name": "A",
              "type": "uint256"
            },
            {
              "name": "gamma",
              "type": "uint256"
            },
            {
              "name": "mid_fee",
              "type": "uint256"
            },
            {
              "name": "out_fee",
              "type": "uint256"
            },
            {
              "name": "fee_gamma",
              "type": "uint256"
            },
            {
              "name": "allowed_extra_profit",
              "type": "uint256"
            },
            {
              "name": "adjustment_step",
              "type": "uint256"
            },
            {
              "name": "ma_exp_time",
              "type": "uint256"
            },
            {
              "name": "initial_price",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "deploy_gauge",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_fee_receiver",
          "inputs": [
            {
              "name": "_fee_receiver",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_pool_implementation",
          "inputs": [
            {
              "name": "_pool_implementation",
              "type": "address"
            },
            {
              "name": "_implementation_index",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_gauge_implementation",
          "inputs": [
            {
              "name": "_gauge_implementation",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_views_implementation",
          "inputs": [
            {
              "name": "_views_implementation",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_math_implementation",
          "inputs": [
            {
              "name": "_math_implementation",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "commit_transfer_ownership",
          "inputs": [
            {
              "name": "_addr",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "accept_transfer_ownership",
          "inputs": [],
          "outputs": []
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "find_pool_for_coins",
          "inputs": [
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "find_pool_for_coins",
          "inputs": [
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            },
            {
              "name": "i",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "pool_count",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_coins",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address[2]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_decimals",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[2]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_balances",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[2]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_coin_indices",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            },
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            },
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_gauge",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_market_counts",
          "inputs": [
            {
              "name": "coin_a",
              "type": "address"
            },
            {
              "name": "coin_b",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "version",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "admin",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "future_admin",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee_receiver",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "pool_implementations",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "gauge_implementation",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "views_implementation",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "math_implementation",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "pool_list",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x1A83348F9cCFD3Fe1A8C0adBa580Ac4e267Fe495",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json"
    },
    {
      "id": "curve-twocrypto-ng-pool",
      "engineId": "curve-twocrypto-ng",
      "project": "Curve",
      "version": "TwoCrypto NG",
      "family": "Curve",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "CurveTwocryptoSwap",
      "address": "0x337F67d8F51f96b287ceb2a262f568Cac0C526A7",
      "verified": true,
      "abi": [
        {
          "name": "Transfer",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "indexed": true
            },
            {
              "name": "receiver",
              "type": "address",
              "indexed": true
            },
            {
              "name": "value",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "Approval",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true
            },
            {
              "name": "spender",
              "type": "address",
              "indexed": true
            },
            {
              "name": "value",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "TokenExchange",
          "inputs": [
            {
              "name": "buyer",
              "type": "address",
              "indexed": true
            },
            {
              "name": "sold_id",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "tokens_sold",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "bought_id",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "tokens_bought",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_price_scale",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "AddLiquidity",
          "inputs": [
            {
              "name": "provider",
              "type": "address",
              "indexed": true
            },
            {
              "name": "token_amounts",
              "type": "uint256[2]",
              "indexed": false
            },
            {
              "name": "fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "token_supply",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_price_scale",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "RemoveLiquidity",
          "inputs": [
            {
              "name": "provider",
              "type": "address",
              "indexed": true
            },
            {
              "name": "token_amounts",
              "type": "uint256[2]",
              "indexed": false
            },
            {
              "name": "token_supply",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "RemoveLiquidityOne",
          "inputs": [
            {
              "name": "provider",
              "type": "address",
              "indexed": true
            },
            {
              "name": "token_amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "coin_index",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "coin_amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "approx_fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_price_scale",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "NewParameters",
          "inputs": [
            {
              "name": "mid_fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "out_fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "fee_gamma",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "allowed_extra_profit",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "adjustment_step",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "ma_time",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "RampAgamma",
          "inputs": [
            {
              "name": "initial_A",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "future_A",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "initial_gamma",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "future_gamma",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "initial_time",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "future_time",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "StopRampA",
          "inputs": [
            {
              "name": "current_A",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "current_gamma",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "time",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "ClaimAdminFee",
          "inputs": [
            {
              "name": "admin",
              "type": "address",
              "indexed": true
            },
            {
              "name": "tokens",
              "type": "uint256[2]",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "stateMutability": "nonpayable",
          "type": "constructor",
          "inputs": [
            {
              "name": "_name",
              "type": "string"
            },
            {
              "name": "_symbol",
              "type": "string"
            },
            {
              "name": "_coins",
              "type": "address[2]"
            },
            {
              "name": "_math",
              "type": "address"
            },
            {
              "name": "_salt",
              "type": "bytes32"
            },
            {
              "name": "packed_precisions",
              "type": "uint256"
            },
            {
              "name": "packed_gamma_A",
              "type": "uint256"
            },
            {
              "name": "packed_fee_params",
              "type": "uint256"
            },
            {
              "name": "packed_rebalancing_params",
              "type": "uint256"
            },
            {
              "name": "initial_price",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dx",
              "type": "uint256"
            },
            {
              "name": "min_dy",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dx",
              "type": "uint256"
            },
            {
              "name": "min_dy",
              "type": "uint256"
            },
            {
              "name": "receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange_received",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dx",
              "type": "uint256"
            },
            {
              "name": "min_dy",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange_received",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dx",
              "type": "uint256"
            },
            {
              "name": "min_dy",
              "type": "uint256"
            },
            {
              "name": "receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "add_liquidity",
          "inputs": [
            {
              "name": "amounts",
              "type": "uint256[2]"
            },
            {
              "name": "min_mint_amount",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "add_liquidity",
          "inputs": [
            {
              "name": "amounts",
              "type": "uint256[2]"
            },
            {
              "name": "min_mint_amount",
              "type": "uint256"
            },
            {
              "name": "receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity",
          "inputs": [
            {
              "name": "_amount",
              "type": "uint256"
            },
            {
              "name": "min_amounts",
              "type": "uint256[2]"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[2]"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity",
          "inputs": [
            {
              "name": "_amount",
              "type": "uint256"
            },
            {
              "name": "min_amounts",
              "type": "uint256[2]"
            },
            {
              "name": "receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[2]"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity_one_coin",
          "inputs": [
            {
              "name": "token_amount",
              "type": "uint256"
            },
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "min_amount",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity_one_coin",
          "inputs": [
            {
              "name": "token_amount",
              "type": "uint256"
            },
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "min_amount",
              "type": "uint256"
            },
            {
              "name": "receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transferFrom",
          "inputs": [
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transfer",
          "inputs": [
            {
              "name": "_to",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "approve",
          "inputs": [
            {
              "name": "_spender",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "permit",
          "inputs": [
            {
              "name": "_owner",
              "type": "address"
            },
            {
              "name": "_spender",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            },
            {
              "name": "_deadline",
              "type": "uint256"
            },
            {
              "name": "_v",
              "type": "uint8"
            },
            {
              "name": "_r",
              "type": "bytes32"
            },
            {
              "name": "_s",
              "type": "bytes32"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee_receiver",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "admin",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "calc_token_amount",
          "inputs": [
            {
              "name": "amounts",
              "type": "uint256[2]"
            },
            {
              "name": "deposit",
              "type": "bool"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_dy",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dx",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_dx",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dy",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "lp_price",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_virtual_price",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "price_oracle",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "price_scale",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "calc_withdraw_one_coin",
          "inputs": [
            {
              "name": "token_amount",
              "type": "uint256"
            },
            {
              "name": "i",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "calc_token_fee",
          "inputs": [
            {
              "name": "amounts",
              "type": "uint256[2]"
            },
            {
              "name": "xp",
              "type": "uint256[2]"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "A",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "gamma",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "mid_fee",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "out_fee",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee_gamma",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "allowed_extra_profit",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "adjustment_step",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "ma_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "precisions",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256[2]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee_calc",
          "inputs": [
            {
              "name": "xp",
              "type": "uint256[2]"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "DOMAIN_SEPARATOR",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "ramp_A_gamma",
          "inputs": [
            {
              "name": "future_A",
              "type": "uint256"
            },
            {
              "name": "future_gamma",
              "type": "uint256"
            },
            {
              "name": "future_time",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "stop_ramp_A_gamma",
          "inputs": [],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "apply_new_parameters",
          "inputs": [
            {
              "name": "_new_mid_fee",
              "type": "uint256"
            },
            {
              "name": "_new_out_fee",
              "type": "uint256"
            },
            {
              "name": "_new_fee_gamma",
              "type": "uint256"
            },
            {
              "name": "_new_allowed_extra_profit",
              "type": "uint256"
            },
            {
              "name": "_new_adjustment_step",
              "type": "uint256"
            },
            {
              "name": "_new_ma_time",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "version",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "MATH",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "coins",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "factory",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "last_prices",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "last_timestamp",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "initial_A_gamma",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "initial_A_gamma_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "future_A_gamma",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "future_A_gamma_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "balances",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "D",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "xcp_profit",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "xcp_profit_a",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "virtual_price",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "packed_rebalancing_params",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "packed_fee_params",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "ADMIN_FEE",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "name",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "symbol",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "decimals",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "balanceOf",
          "inputs": [
            {
              "name": "arg0",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "allowance",
          "inputs": [
            {
              "name": "arg0",
              "type": "address"
            },
            {
              "name": "arg1",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "totalSupply",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "nonces",
          "inputs": [
            {
              "name": "arg0",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "salt",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bytes32"
            }
          ]
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x337F67d8F51f96b287ceb2a262f568Cac0C526A7",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json"
    },
    {
      "id": "curve-tricrypto-ng-factory",
      "engineId": "curve-tricrypto-ng",
      "project": "Curve",
      "version": "TriCrypto NG",
      "family": "Curve",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "CurveTricryptoSwapFactory",
      "address": "0x635742dCC8313DCf8c904206037d962c042EAfBd",
      "verified": true,
      "abi": [
        {
          "name": "TricryptoPoolDeployed",
          "inputs": [
            {
              "name": "pool",
              "type": "address",
              "indexed": false
            },
            {
              "name": "name",
              "type": "string",
              "indexed": false
            },
            {
              "name": "symbol",
              "type": "string",
              "indexed": false
            },
            {
              "name": "weth",
              "type": "address",
              "indexed": false
            },
            {
              "name": "coins",
              "type": "address[3]",
              "indexed": false
            },
            {
              "name": "math",
              "type": "address",
              "indexed": false
            },
            {
              "name": "salt",
              "type": "bytes32",
              "indexed": false
            },
            {
              "name": "packed_precisions",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_A_gamma",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_fee_params",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_rebalancing_params",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_prices",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "deployer",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "UpdateFeeReceiver",
          "inputs": [
            {
              "name": "_old_fee_receiver",
              "type": "address",
              "indexed": false
            },
            {
              "name": "_new_fee_receiver",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "UpdatePoolImplementation",
          "inputs": [
            {
              "name": "_implemention_id",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "_old_pool_implementation",
              "type": "address",
              "indexed": false
            },
            {
              "name": "_new_pool_implementation",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "UpdateMathImplementation",
          "inputs": [
            {
              "name": "_old_math_implementation",
              "type": "address",
              "indexed": false
            },
            {
              "name": "_new_math_implementation",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "UpdateViewsImplementation",
          "inputs": [
            {
              "name": "_old_views_implementation",
              "type": "address",
              "indexed": false
            },
            {
              "name": "_new_views_implementation",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "TransferOwnership",
          "inputs": [
            {
              "name": "_old_owner",
              "type": "address",
              "indexed": false
            },
            {
              "name": "_new_owner",
              "type": "address",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "stateMutability": "nonpayable",
          "type": "constructor",
          "inputs": [
            {
              "name": "_fee_receiver",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_owner",
          "inputs": [
            {
              "name": "_owner",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "deploy_pool",
          "inputs": [
            {
              "name": "_name",
              "type": "string"
            },
            {
              "name": "_symbol",
              "type": "string"
            },
            {
              "name": "_coins",
              "type": "address[3]"
            },
            {
              "name": "_weth",
              "type": "address"
            },
            {
              "name": "implementation_id",
              "type": "uint256"
            },
            {
              "name": "A",
              "type": "uint256"
            },
            {
              "name": "gamma",
              "type": "uint256"
            },
            {
              "name": "mid_fee",
              "type": "uint256"
            },
            {
              "name": "out_fee",
              "type": "uint256"
            },
            {
              "name": "fee_gamma",
              "type": "uint256"
            },
            {
              "name": "allowed_extra_profit",
              "type": "uint256"
            },
            {
              "name": "adjustment_step",
              "type": "uint256"
            },
            {
              "name": "ma_exp_time",
              "type": "uint256"
            },
            {
              "name": "initial_prices",
              "type": "uint256[2]"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_fee_receiver",
          "inputs": [
            {
              "name": "_fee_receiver",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_pool_implementation",
          "inputs": [
            {
              "name": "_pool_implementation",
              "type": "address"
            },
            {
              "name": "_implementation_index",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_views_implementation",
          "inputs": [
            {
              "name": "_views_implementation",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "set_math_implementation",
          "inputs": [
            {
              "name": "_math_implementation",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "commit_transfer_ownership",
          "inputs": [
            {
              "name": "_addr",
              "type": "address"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "accept_transfer_ownership",
          "inputs": [],
          "outputs": []
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_implementation_address",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "find_pool_for_coins",
          "inputs": [
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "find_pool_for_coins",
          "inputs": [
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            },
            {
              "name": "i",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_coins",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address[3]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_decimals",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[3]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_balances",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[3]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_coin_indices",
          "inputs": [
            {
              "name": "_pool",
              "type": "address"
            },
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            },
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_market_counts",
          "inputs": [
            {
              "name": "coin_a",
              "type": "address"
            },
            {
              "name": "coin_b",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "version",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "admin",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "future_admin",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee_receiver",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "pool_implementations",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "views_implementation",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "math_implementation",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "pool_count",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "pool_list",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x635742dCC8313DCf8c904206037d962c042EAfBd",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json"
    },
    {
      "id": "curve-tricrypto-ng-pool",
      "engineId": "curve-tricrypto-ng",
      "project": "Curve",
      "version": "TriCrypto NG",
      "family": "Curve",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "CurveTricryptoSwap",
      "address": "0xA829aBcA88582D1Cb2829261083e4d8AdBCFd84a",
      "verified": true,
      "abi": [
        {
          "name": "Transfer",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "indexed": true
            },
            {
              "name": "receiver",
              "type": "address",
              "indexed": true
            },
            {
              "name": "value",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "Approval",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true
            },
            {
              "name": "spender",
              "type": "address",
              "indexed": true
            },
            {
              "name": "value",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "TokenExchange",
          "inputs": [
            {
              "name": "buyer",
              "type": "address",
              "indexed": true
            },
            {
              "name": "sold_id",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "tokens_sold",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "bought_id",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "tokens_bought",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_price_scale",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "AddLiquidity",
          "inputs": [
            {
              "name": "provider",
              "type": "address",
              "indexed": true
            },
            {
              "name": "token_amounts",
              "type": "uint256[3]",
              "indexed": false
            },
            {
              "name": "fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "token_supply",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_price_scale",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "RemoveLiquidity",
          "inputs": [
            {
              "name": "provider",
              "type": "address",
              "indexed": true
            },
            {
              "name": "token_amounts",
              "type": "uint256[3]",
              "indexed": false
            },
            {
              "name": "token_supply",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "RemoveLiquidityOne",
          "inputs": [
            {
              "name": "provider",
              "type": "address",
              "indexed": true
            },
            {
              "name": "token_amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "coin_index",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "coin_amount",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "approx_fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "packed_price_scale",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "NewParameters",
          "inputs": [
            {
              "name": "mid_fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "out_fee",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "fee_gamma",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "allowed_extra_profit",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "adjustment_step",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "ma_time",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "xcp_ma_time",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "RampAgamma",
          "inputs": [
            {
              "name": "initial_A",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "future_A",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "initial_gamma",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "future_gamma",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "initial_time",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "future_time",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "StopRampA",
          "inputs": [
            {
              "name": "current_A",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "current_gamma",
              "type": "uint256",
              "indexed": false
            },
            {
              "name": "time",
              "type": "uint256",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "name": "ClaimAdminFee",
          "inputs": [
            {
              "name": "admin",
              "type": "address",
              "indexed": true
            },
            {
              "name": "tokens",
              "type": "uint256[3]",
              "indexed": false
            }
          ],
          "anonymous": false,
          "type": "event"
        },
        {
          "stateMutability": "nonpayable",
          "type": "constructor",
          "inputs": [
            {
              "name": "_name",
              "type": "string"
            },
            {
              "name": "_symbol",
              "type": "string"
            },
            {
              "name": "_coins",
              "type": "address[3]"
            },
            {
              "name": "_math",
              "type": "address"
            },
            {
              "name": "_weth",
              "type": "address"
            },
            {
              "name": "_salt",
              "type": "bytes32"
            },
            {
              "name": "__packed_precisions",
              "type": "uint256"
            },
            {
              "name": "packed_A_gamma",
              "type": "uint256"
            },
            {
              "name": "packed_fee_params",
              "type": "uint256"
            },
            {
              "name": "packed_rebalancing_params",
              "type": "uint256"
            },
            {
              "name": "packed_prices",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dx",
              "type": "uint256"
            },
            {
              "name": "min_dy",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dx",
              "type": "uint256"
            },
            {
              "name": "min_dy",
              "type": "uint256"
            },
            {
              "name": "receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange_received",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dx",
              "type": "uint256"
            },
            {
              "name": "min_dy",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "exchange_received",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dx",
              "type": "uint256"
            },
            {
              "name": "min_dy",
              "type": "uint256"
            },
            {
              "name": "receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "add_liquidity",
          "inputs": [
            {
              "name": "amounts",
              "type": "uint256[3]"
            },
            {
              "name": "min_mint_amount",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "add_liquidity",
          "inputs": [
            {
              "name": "amounts",
              "type": "uint256[3]"
            },
            {
              "name": "min_mint_amount",
              "type": "uint256"
            },
            {
              "name": "receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity",
          "inputs": [
            {
              "name": "_amount",
              "type": "uint256"
            },
            {
              "name": "min_amounts",
              "type": "uint256[3]"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[3]"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity",
          "inputs": [
            {
              "name": "_amount",
              "type": "uint256"
            },
            {
              "name": "min_amounts",
              "type": "uint256[3]"
            },
            {
              "name": "receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256[3]"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity_one_coin",
          "inputs": [
            {
              "name": "token_amount",
              "type": "uint256"
            },
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "min_amount",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "remove_liquidity_one_coin",
          "inputs": [
            {
              "name": "token_amount",
              "type": "uint256"
            },
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "min_amount",
              "type": "uint256"
            },
            {
              "name": "receiver",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transferFrom",
          "inputs": [
            {
              "name": "_from",
              "type": "address"
            },
            {
              "name": "_to",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transfer",
          "inputs": [
            {
              "name": "_to",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "approve",
          "inputs": [
            {
              "name": "_spender",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "permit",
          "inputs": [
            {
              "name": "_owner",
              "type": "address"
            },
            {
              "name": "_spender",
              "type": "address"
            },
            {
              "name": "_value",
              "type": "uint256"
            },
            {
              "name": "_deadline",
              "type": "uint256"
            },
            {
              "name": "_v",
              "type": "uint8"
            },
            {
              "name": "_r",
              "type": "bytes32"
            },
            {
              "name": "_s",
              "type": "bytes32"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee_receiver",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "admin",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "calc_token_amount",
          "inputs": [
            {
              "name": "amounts",
              "type": "uint256[3]"
            },
            {
              "name": "deposit",
              "type": "bool"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_dy",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dx",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_dx",
          "inputs": [
            {
              "name": "i",
              "type": "uint256"
            },
            {
              "name": "j",
              "type": "uint256"
            },
            {
              "name": "dy",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "lp_price",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "get_virtual_price",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "price_oracle",
          "inputs": [
            {
              "name": "k",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "xcp_oracle",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "last_prices",
          "inputs": [
            {
              "name": "k",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "price_scale",
          "inputs": [
            {
              "name": "k",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "calc_withdraw_one_coin",
          "inputs": [
            {
              "name": "token_amount",
              "type": "uint256"
            },
            {
              "name": "i",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "calc_token_fee",
          "inputs": [
            {
              "name": "amounts",
              "type": "uint256[3]"
            },
            {
              "name": "xp",
              "type": "uint256[3]"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "A",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "gamma",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "mid_fee",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "out_fee",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee_gamma",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "allowed_extra_profit",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "adjustment_step",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "ma_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "precisions",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256[3]"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "fee_calc",
          "inputs": [
            {
              "name": "xp",
              "type": "uint256[3]"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "DOMAIN_SEPARATOR",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "ramp_A_gamma",
          "inputs": [
            {
              "name": "future_A",
              "type": "uint256"
            },
            {
              "name": "future_gamma",
              "type": "uint256"
            },
            {
              "name": "future_time",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "stop_ramp_A_gamma",
          "inputs": [],
          "outputs": []
        },
        {
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "apply_new_parameters",
          "inputs": [
            {
              "name": "_new_mid_fee",
              "type": "uint256"
            },
            {
              "name": "_new_out_fee",
              "type": "uint256"
            },
            {
              "name": "_new_fee_gamma",
              "type": "uint256"
            },
            {
              "name": "_new_allowed_extra_profit",
              "type": "uint256"
            },
            {
              "name": "_new_adjustment_step",
              "type": "uint256"
            },
            {
              "name": "_new_ma_time",
              "type": "uint256"
            },
            {
              "name": "_new_xcp_ma_time",
              "type": "uint256"
            }
          ],
          "outputs": []
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "version",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "MATH",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "coins",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "factory",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "last_timestamp",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "last_xcp",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "xcp_ma_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "initial_A_gamma",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "initial_A_gamma_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "future_A_gamma",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "future_A_gamma_time",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "balances",
          "inputs": [
            {
              "name": "arg0",
              "type": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "D",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "xcp_profit",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "xcp_profit_a",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "virtual_price",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "packed_rebalancing_params",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "packed_fee_params",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "ADMIN_FEE",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "name",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "symbol",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "decimals",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "balanceOf",
          "inputs": [
            {
              "name": "arg0",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "allowance",
          "inputs": [
            {
              "name": "arg0",
              "type": "address"
            },
            {
              "name": "arg1",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "totalSupply",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "nonces",
          "inputs": [
            {
              "name": "arg0",
              "type": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "stateMutability": "view",
          "type": "function",
          "name": "salt",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bytes32"
            }
          ]
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xA829aBcA88582D1Cb2829261083e4d8AdBCFd84a",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/curve/contracts.json"
    },
    {
      "id": "sushiswap-v2-factory",
      "engineId": "sushiswap-v2",
      "project": "SushiSwap",
      "version": "V2",
      "family": "SushiSwap",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "UniswapV2Factory",
      "address": "0xb45e53277a7e0f1d35f2a77160e91e25507f1763",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "migrator",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairCodeHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_migrator",
              "type": "address"
            }
          ],
          "name": "setMigrator",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xb45e53277a7e0f1d35f2a77160e91e25507f1763",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "sushiswap-v2-pool",
      "engineId": "sushiswap-v2",
      "project": "SushiSwap",
      "version": "V2",
      "family": "SushiSwap",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "UniswapV2Pair",
      "address": "0x204A88452154FBA74775cce0E515B7a4257e3f02",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x204A88452154FBA74775cce0E515B7a4257e3f02",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "9mm-v2-factory",
      "engineId": "9mm-v2",
      "project": "9mm",
      "version": "V2",
      "family": "9mm",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "NineMMFactory",
      "address": "0x0f7B3FcBa276A65dd6E41E400055dcb75BA66750",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "INIT_CODE_PAIR_HASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x0f7B3FcBa276A65dd6E41E400055dcb75BA66750",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "9mm-v2-pool",
      "engineId": "9mm-v2",
      "project": "9mm",
      "version": "V2",
      "family": "9mm",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "9mm Pool",
      "address": "0x4A4924C8AfA845a0177bB1044Bd0d1A56e397137",
      "verified": false,
      "abi": [
        {
          "type": "event",
          "anonymous": false,
          "name": "Swap",
          "inputs": [
            {
              "type": "address",
              "name": "sender",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "amount0In"
            },
            {
              "type": "uint256",
              "name": "amount1In"
            },
            {
              "type": "uint256",
              "name": "amount0Out"
            },
            {
              "type": "uint256",
              "name": "amount1Out"
            },
            {
              "type": "address",
              "name": "to",
              "indexed": true
            }
          ]
        }
      ],
      "abiSource": "Exact event-only ABI from the cited protocol or adapter family",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x4A4924C8AfA845a0177bB1044Bd0d1A56e397137",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "9mm-v3-factory",
      "engineId": "9mm-v3",
      "project": "9mm",
      "version": "V3",
      "family": "9mm",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "NineMMV3Factory",
      "address": "0x924aee3929C8A45aC9c41e9e9Cdf3eA761ca75e5",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_poolDeployer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "FeeAmountEnabled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "whitelistRequested",
              "type": "bool"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "enabled",
              "type": "bool"
            }
          ],
          "name": "FeeAmountExtraInfoUpdated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "oldOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolCreated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "lmPoolDeployer",
              "type": "address"
            }
          ],
          "name": "SetLmPoolDeployer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "verified",
              "type": "bool"
            }
          ],
          "name": "WhiteListAdded",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collectProtocol",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            }
          ],
          "name": "createPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "enableFeeAmount",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "feeAmountTickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "feeAmountTickSpacingExtraInfo",
          "outputs": [
            {
              "internalType": "bool",
              "name": "whitelistRequested",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "enabled",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "getPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lmPoolDeployer",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "poolDeployer",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "bool",
              "name": "whitelistRequested",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "enabled",
              "type": "bool"
            }
          ],
          "name": "setFeeAmountExtraInfo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "feeProtocol0",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "feeProtocol1",
              "type": "uint32"
            }
          ],
          "name": "setFeeProtocol",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "lmPool",
              "type": "address"
            }
          ],
          "name": "setLmPool",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_lmPoolDeployer",
              "type": "address"
            }
          ],
          "name": "setLmPoolDeployer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_owner",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "verified",
              "type": "bool"
            }
          ],
          "name": "setWhiteListAddress",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x924aee3929C8A45aC9c41e9e9Cdf3eA761ca75e5",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "9mm-v3-pool",
      "engineId": "9mm-v3",
      "project": "9mm",
      "version": "V3",
      "family": "9mm",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "9mm Pool",
      "address": "0x51EF3D3365B2c14f4C1a8aD308d5aAc0FE67bC1D",
      "verified": false,
      "abi": [
        {
          "type": "event",
          "anonymous": false,
          "name": "Swap",
          "inputs": [
            {
              "type": "address",
              "name": "sender",
              "indexed": true
            },
            {
              "type": "address",
              "name": "recipient",
              "indexed": true
            },
            {
              "type": "int256",
              "name": "amount0"
            },
            {
              "type": "int256",
              "name": "amount1"
            },
            {
              "type": "uint160",
              "name": "sqrtPriceX96"
            },
            {
              "type": "uint128",
              "name": "liquidity"
            },
            {
              "type": "int24",
              "name": "tick"
            }
          ]
        }
      ],
      "abiSource": "Exact event-only ABI from the cited protocol or adapter family",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x51EF3D3365B2c14f4C1a8aD308d5aAc0FE67bC1D",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "omni-v2-factory",
      "engineId": "omni-v2",
      "project": "Omni Exchange",
      "version": "V2",
      "family": "Omni Exchange",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "OmniFactory",
      "address": "0x7d9D51267f7e9e6b46a48E0A75c0086F46777087",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "INIT_CODE_PAIR_HASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x7d9D51267f7e9e6b46a48E0A75c0086F46777087",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js"
    },
    {
      "id": "omni-v2-pool",
      "engineId": "omni-v2",
      "project": "Omni Exchange",
      "version": "V2",
      "family": "Omni Exchange",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "Omni Exchange Pool",
      "address": "0x690Ca7F2B87Aaee83ba8ad6e3cCc9a388C7566A1",
      "verified": false,
      "abi": [
        {
          "type": "event",
          "anonymous": false,
          "name": "Swap",
          "inputs": [
            {
              "type": "address",
              "name": "sender",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "amount0In"
            },
            {
              "type": "uint256",
              "name": "amount1In"
            },
            {
              "type": "uint256",
              "name": "amount0Out"
            },
            {
              "type": "uint256",
              "name": "amount1Out"
            },
            {
              "type": "address",
              "name": "to",
              "indexed": true
            }
          ]
        }
      ],
      "abiSource": "Exact event-only ABI from the cited protocol or adapter family",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x690Ca7F2B87Aaee83ba8ad6e3cCc9a388C7566A1",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js"
    },
    {
      "id": "omni-v3-factory",
      "engineId": "omni-v3",
      "project": "Omni Exchange",
      "version": "V3",
      "family": "Omni Exchange",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "OmniV3Factory",
      "address": "0xd6Ab0566e7E60B67c50AC73ddFf4e3DdcB829EC2",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_poolDeployer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "FeeAmountEnabled",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "whitelistRequested",
              "type": "bool"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "enabled",
              "type": "bool"
            }
          ],
          "name": "FeeAmountExtraInfoUpdated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "oldOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolCreated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "lmPoolDeployer",
              "type": "address"
            }
          ],
          "name": "SetLmPoolDeployer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "verified",
              "type": "bool"
            }
          ],
          "name": "WhiteListAdded",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collectProtocol",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            }
          ],
          "name": "createPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            }
          ],
          "name": "enableFeeAmount",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "feeAmountTickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "feeAmountTickSpacingExtraInfo",
          "outputs": [
            {
              "internalType": "bool",
              "name": "whitelistRequested",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "enabled",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ],
          "name": "getPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lmPoolDeployer",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "poolDeployer",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "bool",
              "name": "whitelistRequested",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "enabled",
              "type": "bool"
            }
          ],
          "name": "setFeeAmountExtraInfo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "feeProtocol0",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "feeProtocol1",
              "type": "uint32"
            }
          ],
          "name": "setFeeProtocol",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "lmPool",
              "type": "address"
            }
          ],
          "name": "setLmPool",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_lmPoolDeployer",
              "type": "address"
            }
          ],
          "name": "setLmPoolDeployer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_owner",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "verified",
              "type": "bool"
            }
          ],
          "name": "setWhiteListAddress",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xd6Ab0566e7E60B67c50AC73ddFf4e3DdcB829EC2",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "omni-v3-pool",
      "engineId": "omni-v3",
      "project": "Omni Exchange",
      "version": "V3",
      "family": "Omni Exchange",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "Omni Exchange Pool",
      "address": "0xAA9faf817a19A4f923281cBbA29604096fa29Eb8",
      "verified": false,
      "abi": [
        {
          "type": "event",
          "anonymous": false,
          "name": "Swap",
          "inputs": [
            {
              "type": "address",
              "name": "sender",
              "indexed": true
            },
            {
              "type": "address",
              "name": "recipient",
              "indexed": true
            },
            {
              "type": "int256",
              "name": "amount0"
            },
            {
              "type": "int256",
              "name": "amount1"
            },
            {
              "type": "uint160",
              "name": "sqrtPriceX96"
            },
            {
              "type": "uint128",
              "name": "liquidity"
            },
            {
              "type": "int24",
              "name": "tick"
            },
            {
              "type": "uint128",
              "name": "protocolFeesToken0"
            },
            {
              "type": "uint128",
              "name": "protocolFeesToken1"
            }
          ]
        }
      ],
      "abiSource": "Exact event-only ABI from the cited protocol or adapter family",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xAA9faf817a19A4f923281cBbA29604096fa29Eb8",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV3.ts"
    },
    {
      "id": "sonic-market-amm-factory",
      "engineId": "sonic-market-amm",
      "project": "Sonic Market",
      "version": "AMM",
      "family": "Sonic Market",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "UniswapV2Factory",
      "address": "0x01D6747dD2d65dDD90FAEC2C84727c2706ee28E2",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x01D6747dD2d65dDD90FAEC2C84727c2706ee28E2",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js"
    },
    {
      "id": "sonic-market-amm-pool",
      "engineId": "sonic-market-amm",
      "project": "Sonic Market",
      "version": "AMM",
      "family": "Sonic Market",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "UniswapV2Pair",
      "address": "0x99791A3FbEBBdc178a48DbFBB76F7fb07FBfa5ca",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x99791A3FbEBBdc178a48DbFBB76F7fb07FBfa5ca",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js"
    },
    {
      "id": "sonic-market-orderbook-pool",
      "engineId": "sonic-market-orderbook",
      "project": "Sonic Market",
      "version": "OrderBook",
      "family": "Sonic Market",
      "targetType": "manager",
      "roleLabel": "BookManager",
      "contractName": "BookManager",
      "address": "0xD4aD5Ed9E1436904624b6dB8B1BE31f36317C636",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner_",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "defaultProvider_",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "baseURI_",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "contractURI_",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "name_",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol_",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "BookNotOpened",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "CurrencyNotSettled",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ECDSAInvalidSignature",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "length",
              "type": "uint256"
            }
          ],
          "name": "ECDSAInvalidSignatureLength",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "ECDSAInvalidSignatureS",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "ERC20TransferFailed",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "ERC721IncorrectOwner",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "ERC721InsufficientApproval",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "approver",
              "type": "address"
            }
          ],
          "name": "ERC721InvalidApprover",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "name": "ERC721InvalidOperator",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "ERC721InvalidOwner",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            }
          ],
          "name": "ERC721InvalidReceiver",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "ERC721InvalidSender",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "ERC721NonexistentToken",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "EmptyError",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "FailedHookCall",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "hooks",
              "type": "address"
            }
          ],
          "name": "HookAddressNotValid",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidFeePolicy",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidHookResponse",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "provider",
              "type": "address"
            }
          ],
          "name": "InvalidProvider",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidShortString",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidSignature",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidTick",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "InvalidUnitSize",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "locker",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "hook",
              "type": "address"
            }
          ],
          "name": "LockedBy",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "NativeTransferFailed",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "OwnableInvalidOwner",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "OwnableUnauthorizedAccount",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "PermitExpired",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "int256",
              "name": "value",
              "type": "int256"
            }
          ],
          "name": "SafeCastOverflowedIntToUint",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "SafeCastOverflowedUintToInt",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "str",
              "type": "string"
            }
          ],
          "name": "StringTooLong",
          "type": "error"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "approved",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "ApprovalForAll",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "OrderId",
              "name": "orderId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint64",
              "name": "unit",
              "type": "uint64"
            }
          ],
          "name": "Cancel",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "OrderId",
              "name": "orderId",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint64",
              "name": "unit",
              "type": "uint64"
            }
          ],
          "name": "Claim",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "provider",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "Currency",
              "name": "currency",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "Collect",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "provider",
              "type": "address"
            }
          ],
          "name": "Delist",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [],
          "name": "EIP712DomainChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "BookId",
              "name": "bookId",
              "type": "uint192"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "Tick",
              "name": "tick",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "orderIndex",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint64",
              "name": "unit",
              "type": "uint64"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "provider",
              "type": "address"
            }
          ],
          "name": "Make",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "BookId",
              "name": "id",
              "type": "uint192"
            },
            {
              "indexed": true,
              "internalType": "Currency",
              "name": "base",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "Currency",
              "name": "quote",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint64",
              "name": "unitSize",
              "type": "uint64"
            },
            {
              "indexed": false,
              "internalType": "FeePolicy",
              "name": "makerPolicy",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "FeePolicy",
              "name": "takerPolicy",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "contract IHooks",
              "name": "hooks",
              "type": "address"
            }
          ],
          "name": "Open",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferStarted",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "newDefaultProvider",
              "type": "address"
            }
          ],
          "name": "SetDefaultProvider",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "BookId",
              "name": "bookId",
              "type": "uint192"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "user",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "Tick",
              "name": "tick",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint64",
              "name": "unit",
              "type": "uint64"
            }
          ],
          "name": "Take",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "provider",
              "type": "address"
            }
          ],
          "name": "Whitelist",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "acceptOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "baseURI",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "OrderId",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint64",
                  "name": "toUnit",
                  "type": "uint64"
                }
              ],
              "internalType": "struct IBookManager.CancelParams",
              "name": "params",
              "type": "tuple"
            },
            {
              "internalType": "bytes",
              "name": "hookData",
              "type": "bytes"
            }
          ],
          "name": "cancel",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "canceledAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "checkAuthorized",
          "outputs": [],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "OrderId",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "hookData",
              "type": "bytes"
            }
          ],
          "name": "claim",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "claimedAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "Currency",
              "name": "currency",
              "type": "address"
            }
          ],
          "name": "collect",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "contractURI",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultProvider",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "provider",
              "type": "address"
            }
          ],
          "name": "delist",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "eip712Domain",
          "outputs": [
            {
              "internalType": "bytes1",
              "name": "fields",
              "type": "bytes1"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "version",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "verifyingContract",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "salt",
              "type": "bytes32"
            },
            {
              "internalType": "uint256[]",
              "name": "extensions",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "Currency",
                  "name": "base",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "unitSize",
                  "type": "uint64"
                },
                {
                  "internalType": "Currency",
                  "name": "quote",
                  "type": "address"
                },
                {
                  "internalType": "FeePolicy",
                  "name": "makerPolicy",
                  "type": "uint24"
                },
                {
                  "internalType": "contract IHooks",
                  "name": "hooks",
                  "type": "address"
                },
                {
                  "internalType": "FeePolicy",
                  "name": "takerPolicy",
                  "type": "uint24"
                }
              ],
              "internalType": "struct IBookManager.BookKey",
              "name": "key",
              "type": "tuple"
            }
          ],
          "name": "encodeBookKey",
          "outputs": [
            {
              "internalType": "BookId",
              "name": "",
              "type": "uint192"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "getApproved",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "BookId",
              "name": "id",
              "type": "uint192"
            }
          ],
          "name": "getBookKey",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "Currency",
                  "name": "base",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "unitSize",
                  "type": "uint64"
                },
                {
                  "internalType": "Currency",
                  "name": "quote",
                  "type": "address"
                },
                {
                  "internalType": "FeePolicy",
                  "name": "makerPolicy",
                  "type": "uint24"
                },
                {
                  "internalType": "contract IHooks",
                  "name": "hooks",
                  "type": "address"
                },
                {
                  "internalType": "FeePolicy",
                  "name": "takerPolicy",
                  "type": "uint24"
                }
              ],
              "internalType": "struct IBookManager.BookKey",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "locker",
              "type": "address"
            },
            {
              "internalType": "Currency",
              "name": "currency",
              "type": "address"
            }
          ],
          "name": "getCurrencyDelta",
          "outputs": [
            {
              "internalType": "int256",
              "name": "",
              "type": "int256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "BookId",
              "name": "id",
              "type": "uint192"
            },
            {
              "internalType": "Tick",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "getDepth",
          "outputs": [
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "BookId",
              "name": "id",
              "type": "uint192"
            }
          ],
          "name": "getHighest",
          "outputs": [
            {
              "internalType": "Tick",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            }
          ],
          "name": "getLock",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getLockData",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "OrderId",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "getOrder",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "provider",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "open",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "claimable",
                  "type": "uint64"
                }
              ],
              "internalType": "struct IBookManager.OrderInfo",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "name": "isApprovedForAll",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "BookId",
              "name": "id",
              "type": "uint192"
            }
          ],
          "name": "isEmpty",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "BookId",
              "name": "id",
              "type": "uint192"
            }
          ],
          "name": "isOpened",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "provider",
              "type": "address"
            }
          ],
          "name": "isWhitelisted",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "slot",
              "type": "bytes32"
            }
          ],
          "name": "load",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "value",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "startSlot",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "nSlot",
              "type": "uint256"
            }
          ],
          "name": "load",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "value",
              "type": "bytes"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "locker",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "lock",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "result",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "Currency",
                      "name": "base",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "unitSize",
                      "type": "uint64"
                    },
                    {
                      "internalType": "Currency",
                      "name": "quote",
                      "type": "address"
                    },
                    {
                      "internalType": "FeePolicy",
                      "name": "makerPolicy",
                      "type": "uint24"
                    },
                    {
                      "internalType": "contract IHooks",
                      "name": "hooks",
                      "type": "address"
                    },
                    {
                      "internalType": "FeePolicy",
                      "name": "takerPolicy",
                      "type": "uint24"
                    }
                  ],
                  "internalType": "struct IBookManager.BookKey",
                  "name": "key",
                  "type": "tuple"
                },
                {
                  "internalType": "Tick",
                  "name": "tick",
                  "type": "int24"
                },
                {
                  "internalType": "uint64",
                  "name": "unit",
                  "type": "uint64"
                },
                {
                  "internalType": "address",
                  "name": "provider",
                  "type": "address"
                }
              ],
              "internalType": "struct IBookManager.MakeParams",
              "name": "params",
              "type": "tuple"
            },
            {
              "internalType": "bytes",
              "name": "hookData",
              "type": "bytes"
            }
          ],
          "name": "make",
          "outputs": [
            {
              "internalType": "OrderId",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "quoteAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "BookId",
              "name": "id",
              "type": "uint192"
            },
            {
              "internalType": "Tick",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "maxLessThan",
          "outputs": [
            {
              "internalType": "Tick",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "Currency",
                  "name": "base",
                  "type": "address"
                },
                {
                  "internalType": "uint64",
                  "name": "unitSize",
                  "type": "uint64"
                },
                {
                  "internalType": "Currency",
                  "name": "quote",
                  "type": "address"
                },
                {
                  "internalType": "FeePolicy",
                  "name": "makerPolicy",
                  "type": "uint24"
                },
                {
                  "internalType": "contract IHooks",
                  "name": "hooks",
                  "type": "address"
                },
                {
                  "internalType": "FeePolicy",
                  "name": "takerPolicy",
                  "type": "uint24"
                }
              ],
              "internalType": "struct IBookManager.BookKey",
              "name": "key",
              "type": "tuple"
            },
            {
              "internalType": "bytes",
              "name": "hookData",
              "type": "bytes"
            }
          ],
          "name": "open",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "ownerOf",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingOwner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "Currency",
              "name": "currency",
              "type": "address"
            }
          ],
          "name": "reservesOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "safeTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "safeTransferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "name": "setApprovalForAll",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newDefaultProvider",
              "type": "address"
            }
          ],
          "name": "setDefaultProvider",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "Currency",
              "name": "currency",
              "type": "address"
            }
          ],
          "name": "settle",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "paid",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "interfaceId",
              "type": "bytes4"
            }
          ],
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "Currency",
                      "name": "base",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "unitSize",
                      "type": "uint64"
                    },
                    {
                      "internalType": "Currency",
                      "name": "quote",
                      "type": "address"
                    },
                    {
                      "internalType": "FeePolicy",
                      "name": "makerPolicy",
                      "type": "uint24"
                    },
                    {
                      "internalType": "contract IHooks",
                      "name": "hooks",
                      "type": "address"
                    },
                    {
                      "internalType": "FeePolicy",
                      "name": "takerPolicy",
                      "type": "uint24"
                    }
                  ],
                  "internalType": "struct IBookManager.BookKey",
                  "name": "key",
                  "type": "tuple"
                },
                {
                  "internalType": "Tick",
                  "name": "tick",
                  "type": "int24"
                },
                {
                  "internalType": "uint64",
                  "name": "maxUnit",
                  "type": "uint64"
                }
              ],
              "internalType": "struct IBookManager.TakeParams",
              "name": "params",
              "type": "tuple"
            },
            {
              "internalType": "bytes",
              "name": "hookData",
              "type": "bytes"
            }
          ],
          "name": "take",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "quoteAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "baseAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "provider",
              "type": "address"
            },
            {
              "internalType": "Currency",
              "name": "currency",
              "type": "address"
            }
          ],
          "name": "tokenOwed",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "tokenURI",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "provider",
              "type": "address"
            }
          ],
          "name": "whitelist",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "Currency",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/sonic-market-orderbook/index.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xD4aD5Ed9E1436904624b6dB8B1BE31f36317C636",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/dexs/sonic-market-orderbook/index.ts"
    },
    {
      "id": "sonicxswap-factory",
      "engineId": "sonicxswap",
      "project": "SonicxSwap",
      "version": "V2",
      "family": "SonicxSwap",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "SonicxSwapFactory",
      "address": "0x0569F2A6B281b139bC164851cf86E4a792ca6e81",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "INIT_CODE_PAIR_HASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x0569F2A6B281b139bC164851cf86E4a792ca6e81",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "sonicxswap-pool",
      "engineId": "sonicxswap",
      "project": "SonicxSwap",
      "version": "V2",
      "family": "SonicxSwap",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "SonicxSwapPair",
      "address": "0x288724Cf6F26E2264f3cC7b7CeE768f678580638",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x288724Cf6F26E2264f3cC7b7CeE768f678580638",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "archly-v2-factory",
      "engineId": "archly-v2",
      "project": "Archly",
      "version": "V2",
      "family": "Archly",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "PairFactory",
      "address": "0x12508dd9108Abab2c5fD8fC6E4984E46a3CF7824",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "stable",
              "type": "bool"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "MAX_FEE",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "acceptAdmin",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "admin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "stable",
              "type": "bool"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "feeManagers",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "feesOverrides",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "_stable",
              "type": "bool"
            }
          ],
          "name": "getFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getInitializable",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            }
          ],
          "name": "getRealFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "isPair",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "isPaused",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "feeManager",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "_value",
              "type": "bool"
            }
          ],
          "name": "manageFeeManager",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairCodeHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_admin",
              "type": "address"
            }
          ],
          "name": "setAdmin",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "_stable",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "_fee",
              "type": "uint256"
            }
          ],
          "name": "setFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pair",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_fee",
              "type": "uint256"
            }
          ],
          "name": "setFeesOverrides",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bool",
              "name": "_state",
              "type": "bool"
            }
          ],
          "name": "setPause",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "stableFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "volatileFee",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x12508dd9108Abab2c5fD8fC6E4984E46a3CF7824",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "archly-v2-pool",
      "engineId": "archly-v2",
      "project": "Archly",
      "version": "V2",
      "family": "Archly",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "Archly Pool",
      "address": "0xa38AA60C1449f2AE1C23e014c4e250BB3d8421A5",
      "verified": false,
      "abi": [
        {
          "type": "event",
          "anonymous": false,
          "name": "Swap",
          "inputs": [
            {
              "type": "address",
              "name": "sender",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "amount0In"
            },
            {
              "type": "uint256",
              "name": "amount1In"
            },
            {
              "type": "uint256",
              "name": "amount0Out"
            },
            {
              "type": "uint256",
              "name": "amount1Out"
            },
            {
              "type": "address",
              "name": "to",
              "indexed": true
            }
          ]
        }
      ],
      "abiSource": "Exact event-only ABI from the cited protocol or adapter family",
      "abiSourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xa38AA60C1449f2AE1C23e014c4e250BB3d8421A5",
      "sourceUrl": "https://github.com/DefiLlama/dimension-adapters/blob/master/factory/uniV2.ts"
    },
    {
      "id": "atlantis-algebra-factory",
      "engineId": "atlantis-algebra",
      "project": "Atlantis",
      "version": "Algebra",
      "family": "Atlantis",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "AlgebraFactory",
      "address": "0x7C839669a12FAE0BFBE2F6a16516Dd2ADc2F1a1b",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_poolDeployer",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "deployer",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "CustomPool",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "newDefaultCommunityFee",
              "type": "uint16"
            }
          ],
          "name": "DefaultCommunityFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "newDefaultFee",
              "type": "uint16"
            }
          ],
          "name": "DefaultFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "defaultPluginFactoryAddress",
              "type": "address"
            }
          ],
          "name": "DefaultPluginFactory",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "int24",
              "name": "newDefaultTickspacing",
              "type": "int24"
            }
          ],
          "name": "DefaultTickspacing",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferStarted",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "Pool",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ],
          "name": "RenounceOwnershipFinish",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "finishTimestamp",
              "type": "uint256"
            }
          ],
          "name": "RenounceOwnershipStart",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ],
          "name": "RenounceOwnershipStop",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "previousAdminRole",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "newAdminRole",
              "type": "bytes32"
            }
          ],
          "name": "RoleAdminChanged",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "RoleGranted",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            }
          ],
          "name": "RoleRevoked",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "newVaultFactory",
              "type": "address"
            }
          ],
          "name": "VaultFactory",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "CUSTOM_POOL_DEPLOYER",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "DEFAULT_ADMIN_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "POOLS_ADMINISTRATOR_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "POOL_INIT_CODE_HASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "acceptOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "deployer",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            }
          ],
          "name": "computeCustomPoolAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "customPool",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            }
          ],
          "name": "computePoolAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "deployer",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "createCustomPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "customPool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "createPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "customPoolByPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultCommunityFee",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "",
              "type": "uint16"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultConfigurationForPool",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "communityFee",
              "type": "uint16"
            },
            {
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "internalType": "uint16",
              "name": "fee",
              "type": "uint16"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultFee",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "",
              "type": "uint16"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultPluginFactory",
          "outputs": [
            {
              "internalType": "contract IAlgebraPluginFactory",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "defaultTickspacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "name": "getRoleAdmin",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "index",
              "type": "uint256"
            }
          ],
          "name": "getRoleMember",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "name": "getRoleMemberCount",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "grantRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "hasRole",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "hasRoleOrOwner",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pendingOwner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "poolByPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "poolDeployer",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "renounceOwnershipStartTimestamp",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "renounceRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "revokeRole",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "newDefaultCommunityFee",
              "type": "uint16"
            }
          ],
          "name": "setDefaultCommunityFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "newDefaultFee",
              "type": "uint16"
            }
          ],
          "name": "setDefaultFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newDefaultPluginFactory",
              "type": "address"
            }
          ],
          "name": "setDefaultPluginFactory",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "newDefaultTickspacing",
              "type": "int24"
            }
          ],
          "name": "setDefaultTickspacing",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newVaultFactory",
              "type": "address"
            }
          ],
          "name": "setVaultFactory",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "startRenounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "stopRenounceOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "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": "newOwner",
              "type": "address"
            }
          ],
          "name": "transferOwnership",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "vaultFactory",
          "outputs": [
            {
              "internalType": "contract IAlgebraVaultFactory",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x7C839669a12FAE0BFBE2F6a16516Dd2ADc2F1a1b",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js"
    },
    {
      "id": "atlantis-algebra-pool",
      "engineId": "atlantis-algebra",
      "project": "Atlantis",
      "version": "Algebra",
      "family": "Atlantis",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "AlgebraPool",
      "address": "0xEE9002469CD644286849805116871dd9933Ed169",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "name": "alreadyInitialized",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "arithmeticError",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "bottomTickLowerThanMIN",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "dynamicFeeActive",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "dynamicFeeDisabled",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "flashInsufficientPaid0",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "flashInsufficientPaid1",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "incorrectPluginFee",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "insufficientInputAmount",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "invalidAmountRequired",
          "type": "error"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "expectedSelector",
              "type": "bytes4"
            }
          ],
          "name": "invalidHookResponse",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "invalidLimitSqrtPrice",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "invalidNewCommunityFee",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "invalidNewTickSpacing",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "liquidityAdd",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "liquidityOverflow",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "liquiditySub",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "locked",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "notAllowed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "notInitialized",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "pluginIsNotConnected",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "priceOutOfRange",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "tickInvalidLinks",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "tickIsNotInitialized",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "tickIsNotSpaced",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "tickOutOfRange",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "topTickAboveMAX",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "topTickLowerOrEqBottomTick",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "transferFailed",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "zeroAmountRequired",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "zeroLiquidityActual",
          "type": "error"
        },
        {
          "inputs": [],
          "name": "zeroLiquidityDesired",
          "type": "error"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "liquidityAmount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "pluginFee",
              "type": "uint24"
            }
          ],
          "name": "BurnFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "name": "Collect",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "communityFeeNew",
              "type": "uint16"
            }
          ],
          "name": "CommunityFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "newCommunityVault",
              "type": "address"
            }
          ],
          "name": "CommunityVault",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "ExcessTokens",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "fee",
              "type": "uint16"
            }
          ],
          "name": "Fee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "paid1",
              "type": "uint256"
            }
          ],
          "name": "Flash",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "price",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Initialize",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "indexed": true,
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "liquidityAmount",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "newPluginAddress",
              "type": "address"
            }
          ],
          "name": "Plugin",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint8",
              "name": "newPluginConfig",
              "type": "uint8"
            }
          ],
          "name": "PluginConfig",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Skim",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            },
            {
              "indexed": false,
              "internalType": "uint160",
              "name": "price",
              "type": "uint160"
            },
            {
              "indexed": false,
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "overrideFee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "uint24",
              "name": "pluginFee",
              "type": "uint24"
            }
          ],
          "name": "SwapFee",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "int24",
              "name": "newTickSpacing",
              "type": "int24"
            }
          ],
          "name": "TickSpacing",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount",
              "type": "uint128"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "amount0Requested",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1Requested",
              "type": "uint128"
            }
          ],
          "name": "collect",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "amount0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "amount1",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "communityVault",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "fee",
          "outputs": [
            {
              "internalType": "uint16",
              "name": "currentFee",
              "type": "uint16"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "flash",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getCommunityFeePending",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getPluginFeePending",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "globalState",
          "outputs": [
            {
              "internalType": "uint160",
              "name": "price",
              "type": "uint160"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint16",
              "name": "lastFee",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "pluginConfig",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "communityFee",
              "type": "uint16"
            },
            {
              "internalType": "bool",
              "name": "unlocked",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint160",
              "name": "initialPrice",
              "type": "uint160"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "isUnlocked",
          "outputs": [
            {
              "internalType": "bool",
              "name": "unlocked",
              "type": "bool"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "lastFeeTransferTimestamp",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "liquidity",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "maxLiquidityPerTick",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "leftoversRecipient",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "int24",
              "name": "bottomTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "topTick",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "liquidityDesired",
              "type": "uint128"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "liquidityActual",
              "type": "uint128"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "nextTickGlobal",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "plugin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "name": "positions",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "innerFeeGrowth0Token",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "innerFeeGrowth1Token",
              "type": "uint256"
            },
            {
              "internalType": "uint128",
              "name": "fees0",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "fees1",
              "type": "uint128"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "prevTickGlobal",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "safelyGetStateOfAMM",
          "outputs": [
            {
              "internalType": "uint160",
              "name": "sqrtPrice",
              "type": "uint160"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint16",
              "name": "lastFee",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "pluginConfig",
              "type": "uint8"
            },
            {
              "internalType": "uint128",
              "name": "activeLiquidity",
              "type": "uint128"
            },
            {
              "internalType": "int24",
              "name": "nextTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "previousTick",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "newCommunityFee",
              "type": "uint16"
            }
          ],
          "name": "setCommunityFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newCommunityVault",
              "type": "address"
            }
          ],
          "name": "setCommunityVault",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint16",
              "name": "newFee",
              "type": "uint16"
            }
          ],
          "name": "setFee",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newPluginAddress",
              "type": "address"
            }
          ],
          "name": "setPlugin",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "newConfig",
              "type": "uint8"
            }
          ],
          "name": "setPluginConfig",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "newTickSpacing",
              "type": "int24"
            }
          ],
          "name": "setTickSpacing",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroToOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountRequired",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "limitSqrtPrice",
              "type": "uint160"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "leftoversRecipient",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "zeroToOne",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "amountToSell",
              "type": "int256"
            },
            {
              "internalType": "uint160",
              "name": "limitSqrtPrice",
              "type": "uint160"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swapWithPaymentInAdvance",
          "outputs": [
            {
              "internalType": "int256",
              "name": "amount0",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "amount1",
              "type": "int256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int16",
              "name": "",
              "type": "int16"
            }
          ],
          "name": "tickTable",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tickTreeRoot",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int16",
              "name": "",
              "type": "int16"
            }
          ],
          "name": "tickTreeSecondLayer",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ],
          "name": "ticks",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidityTotal",
              "type": "uint256"
            },
            {
              "internalType": "int128",
              "name": "liquidityDelta",
              "type": "int128"
            },
            {
              "internalType": "int24",
              "name": "prevTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "nextTick",
              "type": "int24"
            },
            {
              "internalType": "uint256",
              "name": "outerFeeGrowth0Token",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "outerFeeGrowth1Token",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalFeeGrowth0Token",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalFeeGrowth1Token",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xEE9002469CD644286849805116871dd9933Ed169",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV3.js"
    },
    {
      "id": "mobiusdex-v2-factory",
      "engineId": "mobiusdex-v2",
      "project": "MobiusDex",
      "version": "V2",
      "family": "MobiusDex",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "MobiusDEXFactory",
      "address": "0x475f2dDfA1A5da19F4a3F282F1305f285E742C45",
      "verified": true,
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "INIT_CODE_PAIR_HASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeToSetter",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x475f2dDfA1A5da19F4a3F282F1305f285E742C45",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js"
    },
    {
      "id": "mobiusdex-v2-pool",
      "engineId": "mobiusdex-v2",
      "project": "MobiusDex",
      "version": "V2",
      "family": "MobiusDex",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "MobiusDEXPair",
      "address": "0x1dF6a05453243C10D9B7929B5269849e8b0C9267",
      "verified": true,
      "abi": [
        {
          "inputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "_token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token1",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": true,
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "payable": false,
          "stateMutability": "view",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "constant": false,
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "payable": false,
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "abiSource": "SonicScan verified contract ABI",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x1dF6a05453243C10D9B7929B5269849e8b0C9267",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js"
    },
    {
      "id": "memebox-v2-factory",
      "engineId": "memebox-v2",
      "project": "Memebox",
      "version": "V2",
      "family": "Memebox",
      "targetType": "factory",
      "roleLabel": "Factory",
      "contractName": "Memebox Factory",
      "address": "0x079463f811e6EB2E226908E79144CDDB59a7fB71",
      "verified": false,
      "abi": [
        {
          "type": "event",
          "anonymous": false,
          "name": "PairCreated",
          "inputs": [
            {
              "type": "address",
              "name": "token0",
              "indexed": true
            },
            {
              "type": "address",
              "name": "token1",
              "indexed": true
            },
            {
              "type": "address",
              "name": "pair"
            },
            {
              "type": "uint256",
              "name": "pairCount"
            }
          ]
        }
      ],
      "abiSource": "Exact event-only ABI from the cited protocol or adapter family",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0x079463f811e6EB2E226908E79144CDDB59a7fB71",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js"
    },
    {
      "id": "memebox-v2-pool",
      "engineId": "memebox-v2",
      "project": "Memebox",
      "version": "V2",
      "family": "Memebox",
      "targetType": "pool",
      "roleLabel": "Representative pool",
      "contractName": "Memebox Pool",
      "address": "0xC79FC7580bb3102CFa8363429dF2b7C5Ba26886e",
      "verified": false,
      "abi": [
        {
          "type": "event",
          "anonymous": false,
          "name": "Swap",
          "inputs": [
            {
              "type": "address",
              "name": "sender",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "amount0In"
            },
            {
              "type": "uint256",
              "name": "amount1In"
            },
            {
              "type": "uint256",
              "name": "amount0Out"
            },
            {
              "type": "uint256",
              "name": "amount1Out"
            },
            {
              "type": "address",
              "name": "to",
              "indexed": true
            }
          ]
        }
      ],
      "abiSource": "Exact event-only ABI from the cited protocol or adapter family",
      "abiSourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js",
      "implementationAddress": null,
      "explorerUrl": "https://sonicscan.org/address/0xC79FC7580bb3102CFa8363429dF2b7C5Ba26886e",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/registries/uniswapV2.js"
    },
    {
      "id": "woofi-pool",
      "engineId": "woofi",
      "project": "WOOFi",
      "version": "WooPP",
      "family": "WOOFi",
      "targetType": "manager",
      "roleLabel": "WooPP pool manager",
      "contractName": "TransparentUpgradeableProxy",
      "address": "0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4",
      "verified": false,
      "abi": [
        {
          "type": "event",
          "anonymous": false,
          "name": "WooSwap",
          "inputs": [
            {
              "type": "address",
              "name": "fromToken",
              "indexed": true
            },
            {
              "type": "address",
              "name": "toToken",
              "indexed": true
            },
            {
              "type": "uint256",
              "name": "fromAmount"
            },
            {
              "type": "uint256",
              "name": "toAmount"
            },
            {
              "type": "address",
              "name": "from"
            },
            {
              "type": "address",
              "name": "to",
              "indexed": true
            },
            {
              "type": "address",
              "name": "rebateTo"
            }
          ]
        }
      ],
      "abiSource": "Exact event-only ABI from the cited protocol or adapter family",
      "abiSourceUrl": "https://github.com/woonetwork/woofi_swap_smart_contracts/blob/main/contracts/interfaces/IWooPPV2.sol",
      "implementationAddress": "0xcfe82450b4cd92023a8e184ac75b2ebb24cedb10",
      "explorerUrl": "https://sonicscan.org/address/0x5520385bFcf07Ec87C4c53A7d8d65595Dff69FA4",
      "sourceUrl": "https://github.com/DefiLlama/DefiLlama-Adapters/blob/master/projects/woofi.js"
    }
  ]
}
