diff --git a/.env.example b/.env.example index c91f7e7ae73..6dc6cf23d5e 100644 --- a/.env.example +++ b/.env.example @@ -3,3 +3,5 @@ ALGOLIA_WRITE_API_KEY= ALGOLIA_INDEX_NAME=docs-test PUBLIC_ALGOLIA_SEARCH_APP_ID= PUBLIC_ALGOLIA_SEARCH_PUBLIC_API_KEY= +CCIP_GRAPHQL_ENDPOINT= +CCIP_GRAPHQL_API_KEY= diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c661cdf34c5..07909e2567a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -103,6 +103,16 @@ updates: - "@types/*" - "@rollup/plugin-yaml" + # GraphQL + graphql: + patterns: + - "graphql" + - "graphql-request" + - "@graphql-codegen*" + - "@graphql-typed-document-node*" + - "lru-cache" + - "p-limit" + # Documentation & API documentation: patterns: diff --git a/.github/scripts/data/baseline.json b/.github/scripts/data/baseline.json index b6d478963a2..a2b96019dac 100644 --- a/.github/scripts/data/baseline.json +++ b/.github/scripts/data/baseline.json @@ -1,5 +1,5 @@ { - "timestamp": "2025-11-23T21:03:30Z", + "timestamp": "2026-03-15T21:06:36Z", "knownIds": [ "aptos-apt-usd", "aptos-btc-usd", @@ -14,17 +14,25 @@ "arbitrum-1inch-usd-premium-prod-v03", "arbitrum-aapl-usd", "arbitrum-aapl-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-aapl-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-aapl-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-aapl-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-aaplx-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-aaplx-usd-streams-cexprice-mainnet-production", "arbitrum-aave-usd", "arbitrum-aave-usd-premium-prod", + "arbitrum-aave-usd-svr", "arbitrum-ab-usd", "arbitrum-abbv-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-abbv-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-abbv-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-abbv-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-abt-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-ace-usd-premium-prod-v03", "arbitrum-ada-usd", "arbitrum-ada-usd-premium-prod", "arbitrum-adbe-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-adi-usd-streams-cexprice-mainnet-production", "arbitrum-aero-usd-refprice-mainnet-production", "arbitrum-aevo-usd-premium-prod-v03", "arbitrum-ageth-eth-exchange-rate", @@ -32,15 +40,24 @@ "arbitrum-ai-usd-premium-prod-v03", "arbitrum-ai16z-usd-premium-prod-v03", "arbitrum-ai16z-usd-streams-dexprice-mainnet-production", + "arbitrum-aiq-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-aiq-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-aiq-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-aixbt-usd-refprice-mainnet-production", "arbitrum-algo-usd-refprice-ds-premium-global-003-prod", "arbitrum-alp-sol-streams-exchangerate-mainnet-production", "arbitrum-alp-usd-streams-exchangerate-mainnet-production", "arbitrum-alpaca-usd-refprice-mainnet-production", "arbitrum-alt-usd-refprice-ds-premium-global-003-prod", + "arbitrum-amd-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-amd-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-amd-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-amgn-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-amzn-usd", "arbitrum-amzn-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-amzn-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-amzn-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-amzn-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-amznx-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-amznx-usd-streams-cexprice-mainnet-production", "arbitrum-anime-usd-premium-prod-v03", @@ -58,6 +75,8 @@ "arbitrum-ar-usd-refprice-ds-premium-global-003-prod", "arbitrum-arb-usd", "arbitrum-arb-usd-premium-prod", + "arbitrum-arb-usd-shared-svr", + "arbitrum-arb-usd-svr", "arbitrum-arkm-usd-premium-prod-v03", "arbitrum-aster-usd-streams-cexprice-mainnet-production", "arbitrum-astr-usd", @@ -69,6 +88,7 @@ "arbitrum-aud-usd", "arbitrum-aud-usd-refprice-timestamped-mainnet-production", "arbitrum-aud-usd-rwa-prod-v04", + "arbitrum-ausd-usd-streams-dexprice-mainnet-production", "arbitrum-avax-usd", "arbitrum-avax-usd-premium-prod", "arbitrum-avgo-usd-streams-equityprice-timestamped-mainnet-production", @@ -78,6 +98,9 @@ "arbitrum-axp-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-axs-usd", "arbitrum-axs-usd-premium-prod", + "arbitrum-baba-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-baba-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-baba-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-bac-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-bal-usd", "arbitrum-bal-usd-refprice-mainnet-production", @@ -94,24 +117,37 @@ "arbitrum-blue-usd-refprice-mainnet-production", "arbitrum-blur-usd-premium-prod-v03", "arbitrum-bmnr-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-bmnr-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-bmnr-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-bmnr-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-bnb-usd", "arbitrum-bnb-usd-premium-prod", "arbitrum-bnsol-usd-refprice-mainnet-production", + "arbitrum-bob-usd-streams-cexprice-mainnet-production", "arbitrum-bome-usd-refprice-ds-premium-global-003-prod", "arbitrum-bone-usd", "arbitrum-bone-usd-refprice-mainnet-production", "arbitrum-bonk-usd-premium-prod", + "arbitrum-botz-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-botz-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-botz-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-brett-usd-premium-prod-v03", "arbitrum-brkb-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-brl-usd", "arbitrum-bsol-usd-refprice-mainnet-production", "arbitrum-bsv-usd-refprice-mainnet-production", + "arbitrum-btc-b-usd-streams-dexprice-mainnet-production", "arbitrum-btc-eth", "arbitrum-btc-usd", "arbitrum-btc-usd-marketcap", "arbitrum-btc-usd-premium-prod", + "arbitrum-btc-usd-shared-svr", + "arbitrum-btc-usd-svr", "arbitrum-btr-usd-streams-cexprice-mainnet-production", "arbitrum-btt-usd-refprice-mainnet-production", + "arbitrum-bynd-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-bynd-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-bynd-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-c98-usd-premium-prod-v03", "arbitrum-cad-usd", "arbitrum-cake-usd", @@ -121,6 +157,8 @@ "arbitrum-cbbtc-usd-refprice-mainnet-production", "arbitrum-cbeth-eth", "arbitrum-cbeth-eth-exchange", + "arbitrum-cbtc-por-datalink-proofofreserves-mainnet-production", + "arbitrum-cc-usd-streams-cexprice-mainnet-production", "arbitrum-celo-usd-refprice-mainnet-production", "arbitrum-cfx-usd-refprice-mainnet-production", "arbitrum-chf-usd", @@ -129,6 +167,9 @@ "arbitrum-cny-usd", "arbitrum-coin-usd", "arbitrum-coin-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-coin-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-coin-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-coin-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-coinx-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-coinx-usd-streams-cexprice-mainnet-production", "arbitrum-comp-usd", @@ -138,6 +179,9 @@ "arbitrum-core-usd-refprice-mainnet-production", "arbitrum-cost-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-crcl-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-crcl-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-crcl-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-crcl-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-crclx-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-crclx-usd-streams-cexprice-mainnet-production", "arbitrum-crm-usd-streams-equityprice-timestamped-mainnet-production", @@ -146,18 +190,30 @@ "arbitrum-crv-usd", "arbitrum-crv-usd-premium-prod", "arbitrum-crvusd-usd", + "arbitrum-crwv-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-crwv-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-crwv-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-csco-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-ctc-usd-refprice-mainnet-production", "arbitrum-cusdo-usd-streams-dexprice-mainnet-production", + "arbitrum-cusdo-usdo-streams-exchangerate-mainnet-production", "arbitrum-cvx-usd", "arbitrum-cvx-usd-refprice-mainnet-production", "arbitrum-cvx-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-cyber-usd-premium-prod-v03", "arbitrum-dai-usd", "arbitrum-dai-usd-premium-prod", + "arbitrum-dai-usd-shared-svr", + "arbitrum-dai-usd-svr", "arbitrum-dash-usd-refprice-mainnet-production", "arbitrum-deep-usd-refprice-mainnet-production", + "arbitrum-degen-usd-streams-cexprice-mainnet-production", + "arbitrum-dejaaa-usd-streams-smartdata-navlink-mainnet-production", + "arbitrum-dejtrsy-usd-streams-smartdata-navlink-mainnet-production", "arbitrum-deusd-usd", + "arbitrum-dia-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-dia-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-dia-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-dodo-usd", "arbitrum-dodo-usd-refprice-mainnet-production", "arbitrum-doge-usd", @@ -172,6 +228,7 @@ "arbitrum-dusk-usd-refprice-mainnet-production", "arbitrum-dydx-usd-refprice-ds-premium-global-003-prod", "arbitrum-dym-usd-refprice-mainnet-production", + "arbitrum-eden-usd-streams-cexprice-mainnet-production", "arbitrum-edu-usd-premium-prod-v03", "arbitrum-efa-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-egeth-eth-exchange-rate", @@ -185,14 +242,22 @@ "arbitrum-eth-usd", "arbitrum-eth-usd-marketcap", "arbitrum-eth-usd-premium-prod", + "arbitrum-eth-usd-shared-svr", + "arbitrum-eth-usd-svr", "arbitrum-ethfi-usd-premium-prod", "arbitrum-ethx-eth-exchange-rate", "arbitrum-eur-usd", "arbitrum-eur-usd-refprice-timestamped-mainnet-production", "arbitrum-eur-usd-rwa-prod-v04", "arbitrum-eurc-usd", + "arbitrum-eurc-usd-shared-svr", + "arbitrum-eurc-usd-streams-dexprice-mainnet-production", + "arbitrum-eurc-usd-svr", "arbitrum-eusx-usx-streams-exchangerate-mainnet-production", "arbitrum-ewj-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-ewj-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-ewj-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-ewj-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-ezeth-eth", "arbitrum-ezeth-eth-exchange-rate", "arbitrum-ezeth-eth-exrate-mainnet-production", @@ -200,6 +265,7 @@ "arbitrum-ezu-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-fartcoin-usd-premium-prod-v03", "arbitrum-fbtc-btc-exchange-rate", + "arbitrum-fbtc-btc-streams-exchangerate-mainnet-production", "arbitrum-fbtc-por", "arbitrum-fdusd-usd-refprice-mainnet-production", "arbitrum-fet-usd-refprice-ds-premium-global-003-prod", @@ -212,6 +278,8 @@ "arbitrum-fragsol-sol-exchange-rate", "arbitrum-frax-usd", "arbitrum-frax-usd-refprice-mainnet-production", + "arbitrum-frax-usd-shared-svr", + "arbitrum-frax-usd-svr", "arbitrum-frxeth-eth-high", "arbitrum-frxeth-eth-low", "arbitrum-frxusd-usd", @@ -225,6 +293,7 @@ "arbitrum-ge-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-gho-usd", "arbitrum-gho-usd-refprice-mainnet-production", + "arbitrum-gho-usd-svr", "arbitrum-giga-usd-refprice-mainnet-production", "arbitrum-gld-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-gm-btc-usd-wbtc-wbtc", @@ -240,6 +309,9 @@ "arbitrum-goat-usd-premium-prod-v03", "arbitrum-googl-usd", "arbitrum-googl-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-googl-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-googl-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-googl-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-googlx-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-googlx-usd-streams-cexprice-mainnet-production", "arbitrum-grass-usd", @@ -255,6 +327,9 @@ "arbitrum-hmstr-usd-premium-prod-v03", "arbitrum-hnt-usd-refprice-mainnet-production", "arbitrum-hood-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-hood-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-hood-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-hood-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-hoodx-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-hoodx-usd-streams-cexprice-mainnet-production", "arbitrum-hook-usd-premium-prod-v03", @@ -265,12 +340,18 @@ "arbitrum-huma-usd-refprice-mainnet-production", "arbitrum-hype-usd", "arbitrum-hype-usd-refprice-mainnet-production", + "arbitrum-iau-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-iau-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-iau-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-ibit-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-ibm-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-ibtc-por", "arbitrum-icp-usd-premium-prod", "arbitrum-id-usd-premium-prod-v03", "arbitrum-idr-usdt-datalink-cexprice-mainnet-production", + "arbitrum-iemg-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-iemg-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-iemg-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-ilv-usd-premium-prod", "arbitrum-imx-usd-refprice-ds-premium-global-003-prod", "arbitrum-ineth-eth-exchange-rate", @@ -279,6 +360,9 @@ "arbitrum-inj-usd-premium-prod", "arbitrum-insteth-eth-exchange-rate", "arbitrum-intc-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-intc-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-intc-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-intc-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-intu-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-io-usd-premium-prod-v03", "arbitrum-iota-usd-refprice-mainnet-production", @@ -287,6 +371,9 @@ "arbitrum-ip-usd-refprice-mainnet-production", "arbitrum-iq-usd-premium-prod-v03", "arbitrum-ivv-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-iwm-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-iwm-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-iwm-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-jasmy-usd-refprice-mainnet-production", "arbitrum-jitosol-usd-refprice-mainnet-production", "arbitrum-jlp-usd-refprice-mainnet-production", @@ -305,6 +392,7 @@ "arbitrum-kava-usd-refprice-mainnet-production", "arbitrum-kcs-usd-refprice-mainnet-production", "arbitrum-khype-usd-refprice-mainnet-production", + "arbitrum-kmhype-hype-streams-exchangerate-mainnet-production", "arbitrum-kmno-usd-refprice-mainnet-production", "arbitrum-knc-usd", "arbitrum-ko-usd-streams-equityprice-timestamped-mainnet-production", @@ -312,6 +400,9 @@ "arbitrum-ksm-usd-refprice-mainnet-production", "arbitrum-kta-usd-streams-dexprice-mainnet-production", "arbitrum-kudai-usd-refprice-mainnet-production", + "arbitrum-kweb-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-kweb-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-kweb-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-lbtc-btc", "arbitrum-lbtc-btc-streams-exrate-mainnet-production", "arbitrum-lbtc-usd-refprice-mainnet-production", @@ -322,7 +413,10 @@ "arbitrum-link-eth", "arbitrum-link-usd", "arbitrum-link-usd-premium-prod", + "arbitrum-link-usd-shared-svr", + "arbitrum-link-usd-svr", "arbitrum-lista-usd-premium-prod-v03", + "arbitrum-lit-usd-streams-cexprice-mainnet-production", "arbitrum-lly-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-low-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-lpt-usd-refprice-mainnet-production", @@ -333,11 +427,16 @@ "arbitrum-ltc-usd-premium-prod", "arbitrum-lusd-usd", "arbitrum-lusd-usd-refprice-mainnet-production", + "arbitrum-lusd-usd-shared-svr", + "arbitrum-lusd-usd-svr", "arbitrum-m-nav-arbitrum", "arbitrum-m-usd-streams-cexprice-mainnet-production", "arbitrum-ma-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-magic-usd", "arbitrum-magic-usd-refprice-mainnet-production", + "arbitrum-mags-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-mags-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-mags-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-mana-usd-premium-prod", "arbitrum-manta-usd-premium-prod-v03", "arbitrum-mask-usd-refprice-mainnet-production", @@ -350,8 +449,12 @@ "arbitrum-melania-usd-premium-prod-v03", "arbitrum-meme-usd-premium-prod", "arbitrum-merl-usd-premium-prod-v03", + "arbitrum-met-usd-streams-cexprice-mainnet-production", "arbitrum-meta-usd", "arbitrum-meta-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-meta-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-meta-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-meta-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-metax-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-metax-usd-streams-cexprice-mainnet-production", "arbitrum-metis-usd-refprice-mainnet-production", @@ -365,20 +468,38 @@ "arbitrum-mnt-usd", "arbitrum-mnt-usd-refprice-mainnet-production", "arbitrum-mog-usd-premium-prod-v03", + "arbitrum-mon-usd", + "arbitrum-mon-usd-streams-cexprice-mainnet-production", "arbitrum-moodeng-usd-premium-prod-v03", "arbitrum-morpho-usd-refprice-mainnet-production", "arbitrum-mplx-usd-streams-cexprice-mainnet-production", "arbitrum-mrk-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-mrk-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-mrk-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-mrk-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-ms-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-msft-usd", "arbitrum-msft-usd-refprice-timestamped-mainnet-production", + "arbitrum-msft-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-msft-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-msft-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-msftx-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-msol-usd-refprice-mainnet-production", "arbitrum-mstr-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-mstr-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-mstr-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-mstr-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-mstrx-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-mstrx-usd-streams-cexprice-mainnet-production", + "arbitrum-mu-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-mu-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-mu-usd-streams-regularhoursequityprice-mainnet-production", + "arbitrum-musd-usd-streams-dexprice-mainnet-production", "arbitrum-mvi-usd", "arbitrum-myx-usd-streams-cexprice-mainnet-production", + "arbitrum-nbis-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-nbis-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-nbis-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-near-usd", "arbitrum-near-usd-premium-prod", "arbitrum-neiroeth-usd-refprice-mainnet-production", @@ -388,10 +509,17 @@ "arbitrum-not-usd-refprice-ds-premium-global-003-prod", "arbitrum-nvda-usd", "arbitrum-nvda-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-nvda-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-nvda-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-nvda-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-nvdax-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-nvdax-usd-streams-cexprice-mainnet-production", + "arbitrum-nx8-nav-smartdata-netassetvalue-mainnet-production", "arbitrum-nzd-usd-refprice-timestamped-mainnet-production", "arbitrum-okb-usd-streams-cexprice-mainnet-production", + "arbitrum-oklo-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-oklo-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-oklo-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-om-usd-refprice-mainnet-production", "arbitrum-omg-usd-refprice-mainnet-production", "arbitrum-omni-usd-premium-prod-v03", @@ -400,6 +528,9 @@ "arbitrum-op-usd-premium-prod", "arbitrum-orca-usd-refprice-mainnet-production", "arbitrum-orcl-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-orcl-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-orcl-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-orcl-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-order-usd", "arbitrum-order-usd-premium-prod-v03", "arbitrum-ordi-usd", @@ -420,6 +551,10 @@ "arbitrum-php-usd", "arbitrum-pi-usd-refprice-mainnet-production", "arbitrum-pixel-usd-premium-prod-v03", + "arbitrum-pltr-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-pltr-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-pltr-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-pltr-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-plume-usd", "arbitrum-plume-usd-refprice-mainnet-production", "arbitrum-pm-usd-streams-equityprice-timestamped-mainnet-production", @@ -434,10 +569,14 @@ "arbitrum-pump-usd", "arbitrum-pump-usd-refprice-mainnet-production", "arbitrum-pyth-usd-premium-prod-v03", + "arbitrum-pyusd-usd", "arbitrum-pyusd-usd-refprice-mainnet-production", "arbitrum-qcom-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-qnt-usd-refprice-ds-premium-global-003-prod", "arbitrum-qqq-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-qqq-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-qqq-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-qqq-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-qqqx-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-qqqx-usd-streams-cexprice-mainnet-production", "arbitrum-qtum-usd-refprice-mainnet-production", @@ -449,9 +588,16 @@ "arbitrum-real-gdp-level", "arbitrum-real-gdp-percentage", "arbitrum-render-usd-refprice-ds-premium-global-003-prod", + "arbitrum-resolv-usd-streams-cexprice-mainnet-production", "arbitrum-reth-eth", "arbitrum-reth-eth-exchange-rate", "arbitrum-rez-usd-premium-prod-v03", + "arbitrum-rgti-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-rgti-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-rgti-usd-streams-regularhoursequityprice-mainnet-production", + "arbitrum-rklb-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-rklb-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-rklb-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-rlp-usd-exchange-rate", "arbitrum-rlp-usd-streams-exchangerate-mainnet-production", "arbitrum-ron-usd", @@ -471,12 +617,17 @@ "arbitrum-sand-usd-premium-prod", "arbitrum-saros-usd-refprice-mainnet-production", "arbitrum-sats-usd-premium-prod", + "arbitrum-savusd-avusd-exchange-rate", "arbitrum-sbet-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-schh-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-schh-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-schh-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-scr-usd-premium-prod-v03", "arbitrum-sdeusd-deusd-exrate-mainnet-production", "arbitrum-sei-usd", "arbitrum-sei-usd-premium-prod", "arbitrum-sek-usd", + "arbitrum-sent-usd-streams-cexprice-mainnet-production", "arbitrum-sfrax-frax exchange rate", "arbitrum-sfrxETH-frxETH", "arbitrum-sgd-usd", @@ -484,17 +635,29 @@ "arbitrum-shib-usd", "arbitrum-shib-usd-premium-prod", "arbitrum-skl-usd-refprice-mainnet-production", + "arbitrum-skr-usd-streams-cexprice-mainnet-production", "arbitrum-sky-usd-refprice-mainnet-production", + "arbitrum-slv-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-slv-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-slv-usd-streams-regularhoursequityprice-mainnet-production", + "arbitrum-sndk-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-sndk-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-sndk-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-snx-usd", "arbitrum-snx-usd-premium-prod", "arbitrum-sol-usd", "arbitrum-sol-usd-premium-prod", "arbitrum-solvbtc-btc", + "arbitrum-solvbtc-btc-exchange-rate", + "arbitrum-solvbtc-btc-streams-exchangerate-mainnet-production", "arbitrum-spell-usd", "arbitrum-spk-usd-refprice-mainnet-production", "arbitrum-spx-usd-refprice-mainnet-production", "arbitrum-spy-usd", "arbitrum-spy-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-spy-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-spy-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-spy-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-spyx-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-spyx-usd-streams-cexprice-mainnet-production", "arbitrum-stafi-staked-eth-reth-eth-exchange-rate", @@ -506,6 +669,8 @@ "arbitrum-stg-usd", "arbitrum-stg-usd-premium-prod-v03", "arbitrum-storj-usd-refprice-mainnet-production", + "arbitrum-strc-usd-streams-equityprice-mainnet-production", + "arbitrum-strcx-usd-datalink-totalreturnmultiplier-mainnet-production", "arbitrum-strk-usd-refprice-ds-premium-global-003-prod", "arbitrum-stx-usd", "arbitrum-stx-usd-premium-prod", @@ -522,6 +687,7 @@ "arbitrum-susdu-usdu-streams-exchangerate-mainnet-production", "arbitrum-sushi-usd", "arbitrum-sushi-usd-refprice-mainnet-production", + "arbitrum-sweth-eth", "arbitrum-sweth-eth exchange rate", "arbitrum-syn-usd-refprice-mainnet-production", "arbitrum-syrup-usd-refprice-mainnet-production", @@ -538,6 +704,10 @@ "arbitrum-theta-usd-refprice-mainnet-production", "arbitrum-tia-usd", "arbitrum-tia-usd-premium-prod", + "arbitrum-tkalshi-nav-smartdata-aum-netassetvalue-mainnet-production", + "arbitrum-tlt-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-tlt-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-tlt-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-tmus-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-tnsr-usd-refprice-mainnet-production", "arbitrum-token-usd-premium-prod-v03", @@ -545,16 +715,26 @@ "arbitrum-ton-usd-premium-prod", "arbitrum-toshi-usd-refprice-mainnet-production", "arbitrum-trb-usd-refprice-mainnet-production", + "arbitrum-trex-usd-streams-dexprice-mainnet-production", "arbitrum-tru-usd-refprice-mainnet-production", "arbitrum-trump-usd", "arbitrum-trump-usd-premium-prod-v03", "arbitrum-trx-usd-premium-prod", "arbitrum-try-usd", + "arbitrum-try-usd-streams-forexprice-timestamped-mainnet-production", "arbitrum-tsla-usd", "arbitrum-tsla-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-tsla-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-tsla-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-tsla-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-tslax-usd-datalink-backed-totalreturnmultiplier-timestamped-mainnet-production", "arbitrum-tslax-usd-streams-cexprice-mainnet-production", + "arbitrum-tsm-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-tsm-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-tsm-usd-streams-regularhoursequityprice-mainnet-production", + "arbitrum-tspacex-nav-smartdata-aum-netassetvalue-mainnet-production", "arbitrum-turbo-usd-premium-prod-v03", + "arbitrum-turtle-usd-streams-cexprice-mainnet-production", "arbitrum-tusd-usd", "arbitrum-twt-usd-refprice-mainnet-production", "arbitrum-txn-usd-streams-equityprice-timestamped-mainnet-production", @@ -563,6 +743,9 @@ "arbitrum-ulti-usd", "arbitrum-ultraeths-eth-exchange-rate", "arbitrum-unh-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-unh-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-unh-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-unh-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-uni-usd", "arbitrum-uni-usd-premium-prod", "arbitrum-unibtc-btc-exchange-rate", @@ -570,6 +753,8 @@ "arbitrum-unibtc-btc-streams-exchangerate-mainnet-production", "arbitrum-unieth-eth-exchange-rate", "arbitrum-unp-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-uscc-nav-smartdata-netassetvalue-mainnet-production", + "arbitrum-usd-ars-streams-forexprice-timestamped-mainnet-production", "arbitrum-usd-cad-refprice-timestamped-mainnet-production", "arbitrum-usd-cad-rwa-prod-v04", "arbitrum-usd-chf-refprice-timestamped-mainnet-production", @@ -585,22 +770,36 @@ "arbitrum-usdai-usd", "arbitrum-usdc-usd", "arbitrum-usdc-usd-premium-prod", + "arbitrum-usdc-usd-shared-svr", + "arbitrum-usdc-usd-svr", "arbitrum-usdd-usd", "arbitrum-usde-usd", "arbitrum-usde-usd-premium-prod", "arbitrum-usdf-usd-streams-dexprice-mainnet-production", "arbitrum-usdg-usd", + "arbitrum-usdg-usd-streams-cexprice-mainnet-production", + "arbitrum-usdm-usd-streams-dexprice-mainnet-production", "arbitrum-usds-usd", "arbitrum-usds-usd-refprice-mainnet-production", "arbitrum-usdt-usd", "arbitrum-usdt-usd-premium-prod", + "arbitrum-usdt-usd-shared-svr", + "arbitrum-usdt-usd-svr", + "arbitrum-usdt0-usd-streams-dexprice-mainnet-production", + "arbitrum-usdtb-usd-streams-dexprice-mainnet-production", + "arbitrum-usdu-nav-smartdata-netassetvalue-mainnet-production", + "arbitrum-uso-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-uso-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-uso-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-usol-usd-streams-cexprice-mainnet-production", "arbitrum-usr-usd", "arbitrum-usr-usd-exchange-rate", "arbitrum-usr-usd-refprice-mainnet-production", "arbitrum-usr-usd-streams-exchangerate-mainnet-production", + "arbitrum-ustb-nav-smartdata-netassetvalue-mainnet-production", "arbitrum-usual-usd-refprice-mainnet-production", "arbitrum-usx-usd-streams-dexprice-mainnet-production", + "arbitrum-usx-usd-streams-redemptionrate-mainnet-production", "arbitrum-v-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-vea-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-vet-usd-premium-prod", @@ -611,6 +810,9 @@ "arbitrum-vtv-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-vvv-usd-refprice-mainnet-production", "arbitrum-vxx-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-vxx-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-vxx-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-vxx-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-vyusd-usd-exchange-rate", "arbitrum-vz-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-wal-usd-refprice-mainnet-production", @@ -625,6 +827,7 @@ "arbitrum-wen-usd-refprice-mainnet-production", "arbitrum-weth-uniswap-usd-streams-dexprice-mainnet-production", "arbitrum-wfc-usd-streams-equityprice-timestamped-mainnet-production", + "arbitrum-whitewhale-usd-streams-cexprice-mainnet-production", "arbitrum-wif-usd", "arbitrum-wif-usd-premium-prod", "arbitrum-wld-usd-refprice-ds-premium-global-003-prod", @@ -638,6 +841,7 @@ "arbitrum-wsrusd-rusd-streams-exchangerate-mainnet-production", "arbitrum-wsteth-eth", "arbitrum-wsteth-steth exchangerate", + "arbitrum-wsteth-steth-streams-exchangerate-mainnet-production", "arbitrum-wsteth-usd-refprice-mainnet-production", "arbitrum-wstusr-stusr", "arbitrum-wstusr-stusr-exchange-rate", @@ -654,6 +858,9 @@ "arbitrum-xaut-usd-refprice-mainnet-production", "arbitrum-xdc-usd-refprice-mainnet-production", "arbitrum-xlm-usd-premium-prod", + "arbitrum-xlre-usd-streams-extendedhoursequityprice-mainnet-production", + "arbitrum-xlre-usd-streams-overnighthoursequityprice-mainnet-production", + "arbitrum-xlre-usd-streams-regularhoursequityprice-mainnet-production", "arbitrum-xmr-usd-refprice-mainnet-production", "arbitrum-xom-usd-streams-equityprice-timestamped-mainnet-production", "arbitrum-xpl-usd", @@ -677,6 +884,7 @@ "arbitrum-zar-usd", "arbitrum-zbtc-por", "arbitrum-zbtc-usd-refprice-mainnet-production", + "arbitrum-zec-usd", "arbitrum-zec-usd-refprice-ds-premium-global-003-prod", "arbitrum-zerebro-usd-premium-prod-v03", "arbitrum-zeta-usd-refprice-mainnet-production", @@ -720,6 +928,7 @@ "avalanche-fsbtc-reserves", "avalanche-fxs-usd", "avalanche-gho-usd", + "avalanche-glv-[avax-usdc]-usd", "avalanche-gmx-usd", "avalanche-ion-digital-total-reserve", "avalanche-joe-usd", @@ -750,6 +959,7 @@ "avalanche-solvbtc-btc", "avalanche-solvbtc.bbn-solvbtc-exchange-rate", "avalanche-spell-usd", + "avalanche-spsei-sei-exchange-rate", "avalanche-susde-usd", "avalanche-susde-usde-exchange-rate", "avalanche-sushi-usd", @@ -775,6 +985,7 @@ "avalanche-wstpol-pol-exchange-rate", "avalanche-xag-usd", "avalanche-xau-usd", + "avalanche-xcu-usd", "avalanche-xsolvbtc-nav", "avalanche-ybtc-btc-exchange-rate", "avalanche-ybtc.b-btc", @@ -788,6 +999,7 @@ "base-anon-usd", "base-apt-usd", "base-arkb-reserves", + "base-arsx-base-por", "base-aud-usd", "base-avail-usd", "base-avax-usd", @@ -796,6 +1008,7 @@ "base-bnb-usd", "base-brl-usd", "base-btc-usd", + "base-btc-usd-shared-svr", "base-btc-usd-svr", "base-cad-usd", "base-cbbtc-por", @@ -814,12 +1027,15 @@ "base-doge-usd", "base-dola-usd", "base-eth-usd", + "base-eth-usd-shared-svr", "base-eth-usd-svr", "base-eur-usd", "base-eurc-usd", + "base-eurc-usd-shared-svr", "base-eurc-usd-svr", "base-ezeth-eth", "base-ezeth-eth-exchange-rate", + "base-ezeth-eth-exchange-rate-svr", "base-gbp-usd", "base-gho-usd", "base-gho-usd-svr", @@ -860,8 +1076,10 @@ "base-real-gdp-percentage", "base-reth-eth", "base-reth-eth-exchange-rate", + "base-rlusd-usd", "base-rseth-eth", "base-rseth-eth-exchange-rate", + "base-rseth-eth-exchange-rate-svr", "base-rsr-usd", "base-rsweth-eth", "base-rsweth-eth-exchange-rate", @@ -891,20 +1109,25 @@ "base-try-usd", "base-ultraeths-eth-exchange-rate", "base-unibtc-btc-exchange-rate", + "base-usd+-usd", "base-usdai-usd", "base-usdc-usd", + "base-usdc-usd-shared-svr", "base-usdc-usd-svr", "base-usde-usd", "base-usdo-por", "base-usds-usd", "base-usdt-usd", + "base-usdt-usd-shared-svr", "base-usdt-usd-svr", + "base-usdz-usd", "base-usr-usd", "base-virtual-usd", "base-vvv-usd", "base-vyusd-usd-exchange-rate", "base-wbtc-usd", "base-weeth-eeth-exchange-rate", + "base-weeth-eeth-exchange-rate-svr", "base-weeth-eth", "base-well-usd", "base-wif-usd", @@ -913,7 +1136,9 @@ "base-wrseth-eth-exchange-rate", "base-wsteth-eth", "base-wsteth-steth exchangerate", + "base-wsteth-steth-exchange-rate-svr", "base-wstusr-stusr-exchange-rate", + "base-xag-usd", "base-xau-usd", "base-xrp-usd", "base-xsolvbtc-nav", @@ -929,8 +1154,10 @@ "bnb-chain-1inch-usd", "bnb-chain-aapl-usd", "bnb-chain-aave-usd", + "bnb-chain-aave-usd-shared-svr", "bnb-chain-ada-bnb", "bnb-chain-ada-usd", + "bnb-chain-ada-usd-shared-svr", "bnb-chain-alpaca-usd", "bnb-chain-amzn-usd", "bnb-chain-aster-usd", @@ -942,16 +1169,22 @@ "bnb-chain-band-usd", "bnb-chain-bch-bnb", "bnb-chain-bch-usd", + "bnb-chain-bch-usd-shared-svr", "bnb-chain-bnb-usd", + "bnb-chain-bnb-usd-shared-svr", + "bnb-chain-bnb-usd-svr", "bnb-chain-br-usd", "bnb-chain-brl-usd", "bnb-chain-bsw-usd", "bnb-chain-btc-bnb", "bnb-chain-btc-eth", "bnb-chain-btc-usd", + "bnb-chain-btc-usd-shared-svr", + "bnb-chain-btc-usd-svr", "bnb-chain-c98-usd", "bnb-chain-cake-bnb", "bnb-chain-cake-usd", + "bnb-chain-cake-usd-shared-svr", "bnb-chain-calculated-bnbx-usd", "bnb-chain-calculated-savax-usd", "bnb-chain-cashplus-nav", @@ -963,8 +1196,10 @@ "bnb-chain-crv-usd", "bnb-chain-dai-bnb", "bnb-chain-dai-usd", + "bnb-chain-dai-usd-shared-svr", "bnb-chain-dodo-usd", "bnb-chain-doge-usd", + "bnb-chain-doge-usd-shared-svr", "bnb-chain-dot-bnb", "bnb-chain-dot-usd", "bnb-chain-enzobtc-por", @@ -972,12 +1207,16 @@ "bnb-chain-eos-usd", "bnb-chain-eth-bnb", "bnb-chain-eth-usd", + "bnb-chain-eth-usd-shared-svr", + "bnb-chain-eth-usd-svr", "bnb-chain-eur-usd", "bnb-chain-ezeth-eth", "bnb-chain-ezeth-eth-exchange-rate", "bnb-chain-fdusd-usd", + "bnb-chain-fdusd-usd-shared-svr", "bnb-chain-fet-usd", "bnb-chain-fil-usd", + "bnb-chain-fil-usd-shared-svr", "bnb-chain-frax-usd", "bnb-chain-fxs-usd", "bnb-chain-gbp-usd", @@ -996,9 +1235,11 @@ "bnb-chain-lina-usd", "bnb-chain-link-bnb", "bnb-chain-link-usd", + "bnb-chain-link-usd-shared-svr", "bnb-chain-lista-usd", "bnb-chain-ltc-bnb", "bnb-chain-ltc-usd", + "bnb-chain-ltc-usd-shared-svr", "bnb-chain-mask-usd", "bnb-chain-matic-usd", "bnb-chain-meta-usd", @@ -1025,11 +1266,13 @@ "bnb-chain-real-final-sales-to-private-domestic-purchasers-percentage", "bnb-chain-real-gdp-level", "bnb-chain-real-gdp-percentage", + "bnb-chain-rlp-usd-exchange-rate", "bnb-chain-savbtc-avbtc-exchange-rate", "bnb-chain-savusd-avusd-exchange-rate", "bnb-chain-sgd-usd", "bnb-chain-shib-usd", "bnb-chain-sol-usd", + "bnb-chain-sol-usd-shared-svr", "bnb-chain-solv-por", "bnb-chain-solvbtc-btc", "bnb-chain-solvbtc.bbn-solvbtc-exchange-rate", @@ -1040,25 +1283,39 @@ "bnb-chain-susd1+-usd1-exchange-rate", "bnb-chain-susdd-usdd-exchange-rate", "bnb-chain-susde-usde-exchange-rate", + "bnb-chain-susde-usde-exchange-rate-shared-svr", "bnb-chain-susdf-usdf-exchange-rate", "bnb-chain-sushi-usd", "bnb-chain-sxp-usd", + "bnb-chain-syrupusdt-usdt-exchange-rate", "bnb-chain-tree-usd", "bnb-chain-trx-usd", + "bnb-chain-trx-usd-shared-svr", "bnb-chain-tsla-usd", "bnb-chain-tusd-usd", + "bnb-chain-tusd-usd-shared-svr", "bnb-chain-twt-bnb", + "bnb-chain-twt-bnb-shared-svr", + "bnb-chain-u-usd", "bnb-chain-uni-bnb", "bnb-chain-uni-usd", + "bnb-chain-uni-usd-shared-svr", "bnb-chain-unibtc-btc-exchange-rate", "bnb-chain-usd1-usd", + "bnb-chain-usd1-usd-shared-svr", "bnb-chain-usdc-bnb", "bnb-chain-usdc-usd", + "bnb-chain-usdc-usd-shared-svr", + "bnb-chain-usdc-usd-svr", "bnb-chain-usdd-usdc-exchange-rate", "bnb-chain-usdd-usdt-exchange-rate", "bnb-chain-usde-usd", + "bnb-chain-usde-usd-shared-svr", "bnb-chain-usdt-bnb", "bnb-chain-usdt-usd", + "bnb-chain-usdt-usd-shared-svr", + "bnb-chain-usdt-usd-svr", + "bnb-chain-usdu-por", "bnb-chain-usr-usd", "bnb-chain-vet-usd", "bnb-chain-weeth-eeth-exchange-rate", @@ -1068,19 +1325,24 @@ "bnb-chain-woo-usd", "bnb-chain-wsrusd-rusd-exchange-rate", "bnb-chain-wsteth-steth-exchange-rate", + "bnb-chain-wsteth-steth-exchange-rate-svr", "bnb-chain-wsteth-usd", "bnb-chain-wstusr-stusr-exchange-rate", "bnb-chain-wti-usd", "bnb-chain-xag-usd", "bnb-chain-xau-usd", + "bnb-chain-xaum-reference-rate", "bnb-chain-xlm-usd", "bnb-chain-xrp-bnb", "bnb-chain-xrp-usd", + "bnb-chain-xrp-usd-shared-svr", "bnb-chain-xsolvbtc-nav", + "bnb-chain-xsolvbtc-solvbtc-exchange-rate-shared-svr", "bnb-chain-xtz-bnb", "bnb-chain-xtz-usd", "bnb-chain-xvs-bnb", "bnb-chain-xvs-usd", + "bnb-chain-xvs-usd-shared-svr", "bnb-chain-ybtc-btc-exchange-rate", "bnb-chain-yeth-eth-exchange-rate", "bnb-chain-yfi-bnb", @@ -1089,6 +1351,7 @@ "bnb-chain-zar-usd", "bnb-chain-zbu-usd", "bob-baby-usd", + "bob-bob-usd", "bob-btc-usd", "bob-eth-usd", "bob-lbtc-btc", @@ -1151,6 +1414,7 @@ "celo-ngn-usd", "celo-ngn-usd-fx", "celo-php-usd", + "celo-stcelo-celo-exchange-rate", "celo-usdc-usd", "celo-usdt-usd", "celo-xof-usd", @@ -1168,6 +1432,7 @@ "ethereum-arb-usd", "ethereum-ath-usd", "ethereum-aud-usd", + "ethereum-ausd-usd", "ethereum-avail-usd", "ethereum-avax-usd", "ethereum-badger-eth", @@ -1180,9 +1445,11 @@ "ethereum-btc-usd", "ethereum-btc-usd-shared-svr", "ethereum-btc-usd-svr", + "ethereum-c1usd-por", "ethereum-c3m-eur", "ethereum-cad-usd", "ethereum-calc-xsushi-eth", + "ethereum-calculated-ethplus-usd", "ethereum-cashplus-nav", "ethereum-cbbtc-por", "ethereum-cbbtc-usd", @@ -1192,11 +1459,14 @@ "ethereum-comp-eth", "ethereum-comp-usd", "ethereum-comp-usd-shared-svr", + "ethereum-crclon-usd-shared-svr", "ethereum-crdt-nav", + "ethereum-crdyx-nav", "ethereum-crv-eth", "ethereum-crv-usd", "ethereum-crvusd-usd", "ethereum-cspx-usd", + "ethereum-cusdo-usd", "ethereum-cvx-eth", "ethereum-cvx-usd", "ethereum-dai-eth", @@ -1219,6 +1489,7 @@ "ethereum-eurc-usd", "ethereum-eutbl-nav", "ethereum-ezeth-eth", + "ethereum-ezeth-por", "ethereum-fbtc-btc-exchange-rate", "ethereum-fbtc-por", "ethereum-fdusd-usd", @@ -1230,6 +1501,7 @@ "ethereum-fxs-usd", "ethereum-gbp-usd", "ethereum-gho-usd", + "ethereum-googl-usd-kalman-24-5", "ethereum-grt-eth", "ethereum-grt-usd", "ethereum-hbtc-por", @@ -1237,7 +1509,11 @@ "ethereum-ib01-usd", "ethereum-ibta-usd", "ethereum-imx-usd", + "ethereum-jaaa-nav-v2", "ethereum-jpy-usd", + "ethereum-jtrsy-nav-v2", + "ethereum-kag-por", + "ethereum-kau-por", "ethereum-knc-eth", "ethereum-knc-usd", "ethereum-krw-usd", @@ -1247,6 +1523,7 @@ "ethereum-link-usd", "ethereum-link-usd-shared-svr", "ethereum-link-usd-svr", + "ethereum-lombard-por", "ethereum-lrc-eth", "ethereum-lseth-eth-exchange-rate", "ethereum-lusd-usd", @@ -1266,6 +1543,7 @@ "ethereum-musd-usd", "ethereum-neiro-usd", "ethereum-nexus-weth-por", + "ethereum-nvda-usd-kalman-24-5", "ethereum-nzd-usd", "ethereum-oeth-eth", "ethereum-ousdt-usd", @@ -1278,6 +1556,9 @@ "ethereum-pumpbtc-btc-exchange-rate", "ethereum-pumpbtc-por", "ethereum-pyusd-usd", + "ethereum-qqq-usd-kalman-24-5", + "ethereum-qqqon-usd-calculated-kalman-shared-svr", + "ethereum-qqqon-usd-shared-svr", "ethereum-rdnt-usd", "ethereum-real-final-sales-to-private-domestic-purchasers-level", "ethereum-real-final-sales-to-private-domestic-purchasers-percentage", @@ -1292,6 +1573,8 @@ "ethereum-rsr-usd", "ethereum-rsweth-eth", "ethereum-sand-usd", + "ethereum-savbtc-avbtc-exchange-rate", + "ethereum-savusd-avusd-exchange-rate", "ethereum-sgd-usd", "ethereum-shib-eth", "ethereum-shv-usd", @@ -1304,6 +1587,9 @@ "ethereum-solvbtc-por", "ethereum-solvbtc.bbn-solvbtc-exchange-rate", "ethereum-spell-usd", + "ethereum-spy-usd-kalman-24-5", + "ethereum-spyon-usd-calculated-kalman-shared-svr", + "ethereum-spyon-usd-shared-svr", "ethereum-stbt-por", "ethereum-stbtc-btc-exchange-rate", "ethereum-stbtc-por", @@ -1311,6 +1597,7 @@ "ethereum-steth-por", "ethereum-steth-usd", "ethereum-stg-usd", + "ethereum-stgld-tgld-exchange-rate", "ethereum-susd1+-usd1-exchange-rate", "ethereum-susdd-usdd-exchange-rate", "ethereum-susde-usd", @@ -1320,13 +1607,18 @@ "ethereum-swell-eth", "ethereum-swell-eth-por", "ethereum-swell-restaked-eth-por", + "ethereum-sweth-eth", "ethereum-sxt-usd", "ethereum-tao-usd", "ethereum-tbtc-usd", "ethereum-teth-wsteth-exchange-rate", "ethereum-tfbill-nav", + "ethereum-treasuryplus-nav", "ethereum-trump-usd", "ethereum-try-usd", + "ethereum-tsla-usd-kalman-24-5", + "ethereum-tslaon-usd-calculated-kalman-shared-svr", + "ethereum-tslaon-usd-shared-svr", "ethereum-tusd-eth", "ethereum-tusd-por", "ethereum-tusd-usd", @@ -1354,6 +1646,7 @@ "ethereum-usdt-usd", "ethereum-usdt-usd-shared-svr", "ethereum-usdt-usd-svr", + "ethereum-usdtb-usd", "ethereum-usr-usd", "ethereum-ustb-aum", "ethereum-ustb-nav", @@ -1364,6 +1657,7 @@ "ethereum-wbtc-por", "ethereum-weeth-eth", "ethereum-wlfi-usd", + "ethereum-wtgxx-nav-24h", "ethereum-xag-usd", "ethereum-xau-usd", "ethereum-xcn-usd", @@ -1372,6 +1666,7 @@ "ethereum-yfi-eth", "ethereum-yfi-usd", "ethereum-zbu-usd", + "ethereum-zec-usd", "ethereum-zrx-eth", "ethereum-zrx-usd", "fantom-aave-usd", @@ -1460,29 +1755,48 @@ "hedera-usdt-usd", "hedera-xrp-usd", "hyperevm-behype-hype-exchange-rate", + "hyperevm-behype-hype-exchange-rate-shared-svr", "hyperevm-btc-usd", + "hyperevm-btc-usd-shared-svr", "hyperevm-eth-usd", + "hyperevm-eth-usd-shared-svr", + "hyperevm-feusd-usd", "hyperevm-hype-usd", + "hyperevm-hype-usd-shared-svr", "hyperevm-hyped-hype-exchange-rate", "hyperevm-khype-hype-exchange-rate", + "hyperevm-khype-hype-exchange-rate-shared-svr", "hyperevm-khype-usd", + "hyperevm-khype-usd-shared-svr", "hyperevm-lhype-khype-exchange-rate", "hyperevm-lhype-sthype-exchange-rate", + "hyperevm-purr-usd", "hyperevm-sol-usd", + "hyperevm-sol-usd-shared-svr", "hyperevm-susde-usd", "hyperevm-thbill-usd", + "hyperevm-thbill-usd-shared-svr", "hyperevm-ubtc-usd", + "hyperevm-ubtc-usd-shared-svr", "hyperevm-ueth-usd", "hyperevm-usdc-usd", + "hyperevm-usdc-usd-shared-svr", "hyperevm-usde-usd", + "hyperevm-usde-usd-shared-svr", "hyperevm-usdh-usd", + "hyperevm-usdh-usd-shared-svr", + "hyperevm-usdhl-usd", "hyperevm-usdt-usd", + "hyperevm-usdt-usd-shared-svr", "hyperevm-usol-usd", + "hyperevm-usol-usd-shared-svr", "hyperevm-usr-usd", "hyperevm-whlp-usdt0-exchange-rate", "hyperevm-wsthype-sthype-exchange-rate", + "hyperevm-wsthype-sthype-exchange-rate-shared-svr", "hyperevm-wsthype-usd", "hyperevm-xaut-usd", + "hyperevm-xaut-usd-shared-svr", "linea-aave-usd", "linea-ageth-eth-exchange-rate", "linea-arb-usd", @@ -1499,6 +1813,7 @@ "linea-linea-usd", "linea-link-eth", "linea-link-usd", + "linea-m-nav-linea", "linea-matic-usd", "linea-musd-usd", "linea-oseth-eth-exchange-rate", @@ -1512,6 +1827,7 @@ "linea-rseth-eth", "linea-rsweth-eth-exchange-rate", "linea-savbtc-avbtc-exchange-rate", + "linea-saveth-aveth-exchange-rate", "linea-savusd-avusd-exchange-rate", "linea-ultraeths-eth-exchange-rate", "linea-usd1-usd", @@ -1543,12 +1859,39 @@ "mantle-real-final-sales-to-private-domestic-purchasers-percentage", "mantle-real-gdp-level", "mantle-real-gdp-percentage", + "mantle-rseth-eth-exchange-rate", "mantle-susde-usd", + "mantle-susde-usde-exchange-rate", + "mantle-syrupusdc-usdc-exchange-rate", + "mantle-syrupusdt-usdt-exchange-rate", "mantle-usd1-usd", "mantle-usdc-usd", "mantle-usde-usd", "mantle-usdt-usd", "mantle-ynethx-eth-exchange-rate", + "megaeth-btc-usd", + "megaeth-btc.b-usd", + "megaeth-eth-usd", + "megaeth-eth-usd-old", + "megaeth-ezeth-eth-exchange-rate", + "megaeth-hype-usd", + "megaeth-lbtc-btc-exchange-rate", + "megaeth-lbtc-usd", + "megaeth-musd-usd", + "megaeth-rseth-eth-exchange-rate", + "megaeth-sol-usd", + "megaeth-stcapusd-capusd-exchange-rate", + "megaeth-susde-usde-exchange-rate", + "megaeth-usdc-usd", + "megaeth-usdc-usd-old", + "megaeth-usde-usd", + "megaeth-usdm-usd", + "megaeth-usdt-usd", + "megaeth-usdt-usd-old", + "megaeth-usdt0-usd", + "megaeth-usdtb-usd", + "megaeth-wsrusd-rusd-exchange-rate", + "megaeth-wsteth-steth-exchange-rate", "metis-aave-usd", "metis-btc-usd", "metis-dai-usd", @@ -1557,6 +1900,7 @@ "metis-frxeth-eth-exchange-rate-low", "metis-link-usd", "metis-metis-usd", + "metis-mimatic-usd", "metis-sfrxeth-frxeth-exchange-rate", "metis-usdc-usd", "metis-usdt-usd", @@ -1591,6 +1935,7 @@ "optimism-ada-usd", "optimism-ageth-eth-exchange-rate", "optimism-algo-usd", + "optimism-ankr-usd", "optimism-ankreth-eth-exchange-rate", "optimism-anon-usd", "optimism-ape-usd", @@ -1621,11 +1966,13 @@ "optimism-etc-usd", "optimism-eth-btc", "optimism-eth-usd", + "optimism-ethx-eth", "optimism-eur-usd", "optimism-ezeth-eth-exchange-rate", "optimism-fil-usd", "optimism-flow-usd", "optimism-frax-usd", + "optimism-ftm-usd", "optimism-fxs-usd", "optimism-gmx-usd", "optimism-grt-usd", @@ -1689,6 +2036,7 @@ "optimism-teth-wsteth-exchange-rate", "optimism-tia-usd", "optimism-trx-usd", + "optimism-uma-usd", "optimism-uni-usd", "optimism-unibtc-btc-exchange-rate", "optimism-usd1-usd", @@ -1701,10 +2049,12 @@ "optimism-virtune-avax-etp-por", "optimism-virtune-btc-etp-por", "optimism-virtune-btc-prime-etp-por", + "optimism-virtune-dot-etp-por", "optimism-virtune-link-etp-por", "optimism-virtune-pol-etp-por", "optimism-virtune-sol-etp-por", "optimism-virtune-staked-eth-etp-por", + "optimism-virtune-xlm-etp-por", "optimism-virtune-xrp-etp-por", "optimism-vyusd-usd-exchange-rate", "optimism-wbtc-usd", @@ -1745,6 +2095,7 @@ "plasma-plusd-usdt-exchange-rate", "plasma-rlp-usd", "plasma-savusd-avusd-exchange-rate", + "plasma-snusd-nusd-exchange-rate", "plasma-splusd-plusd-exchange-rate", "plasma-susdai-usd", "plasma-susdai-usdai", @@ -1776,6 +2127,7 @@ "polygon-aave-eth", "polygon-aave-usd", "polygon-ada-usd", + "polygon-ageur-usd", "polygon-alcx-usd", "polygon-algo-usd", "polygon-amzn-usd", @@ -1841,6 +2193,7 @@ "polygon-grt-usd", "polygon-hbar-usd", "polygon-icp-usd", + "polygon-idr-usd", "polygon-ils-usd", "polygon-ilv-eth", "polygon-inr-usd", @@ -1868,6 +2221,7 @@ "polygon-pln-usd", "polygon-qnt-usd", "polygon-quick-usd", + "polygon-rcusd+-nav", "polygon-rdnt-usd", "polygon-ryt-nav", "polygon-ryt-polygon", @@ -1918,6 +2272,7 @@ "polygon-yeth-eth-exchange-rate", "polygon-yfi-eth", "polygon-yfi-usd", + "polygon-zar-usd", "polygon-zec-usd", "polygonkatana-ausd-usd", "polygonkatana-btc-usd", @@ -1933,6 +2288,7 @@ "polygonkatana-sfrxusd-frxusd-exchange-rate", "polygonkatana-sfrxusd-usd", "polygonkatana-sol-usd", + "polygonkatana-susda-usda-exchange-rate", "polygonkatana-sushi-usd", "polygonkatana-usdc-usd", "polygonkatana-usds-usd", @@ -1979,6 +2335,7 @@ "scroll-dai-usd", "scroll-doge-usd", "scroll-eth-usd", + "scroll-eurc-usd", "scroll-ezeth-eth", "scroll-link-eth", "scroll-link-usd", @@ -2013,6 +2370,8 @@ "solana-dai-usd", "solana-eth-usd", "solana-eurc-usd", + "solana-jlp-usd", + "solana-jup-usd", "solana-lbtc-btc-exchange-rate", "solana-link-usd", "solana-matic-usd", @@ -2020,9 +2379,11 @@ "solana-msol-usd", "solana-op-usd", "solana-sol-usd", + "solana-solvbtc-btc-exchange-rate", "solana-syrupusdc-usdc-exchange-rate", "solana-usdc-usd", "solana-usdt-usd", + "solana-wbtc-usd", "solana-zbtc-por", "soneium-astr-usd", "soneium-btc-usd", @@ -2078,6 +2439,7 @@ "sonic-usd1-usd", "sonic-usdc-usd", "sonic-usdt-usd", + "sonic-ussd-usd", "sonic-vyusd-usd-exchange-rate", "sonic-wans-ans-exchange-rate", "sonic-wbtc-usd", @@ -2090,6 +2452,7 @@ "sonic-ybtc-btc", "sonic-yeth-eth", "sonic-yusd-usd-exchange-rate", + "sonic-zar-usd", "starknet-btc-usd", "starknet-dai-usd", "starknet-eth-usd", @@ -2102,18 +2465,33 @@ "tron-btc-usd", "tron-btt-usd", "tron-eth-usd", + "tron-htx-usd", "tron-jst-usd", "tron-ltc-usd", "tron-nft-usd", "tron-strx-trx-exchcange-rate", "tron-sun-usd", + "tron-susdd-usdd-exchange-rate-vpn", "tron-trx-usd", "tron-tusd-usd", "tron-usd1-usd", "tron-usdc-usd", "tron-usdd-usd", + "tron-usdd-usdc-exchange-rate", + "tron-usdd-usdt-exchange-rate", "tron-usdt-usd", + "tron-wbtc-usd", "tron-win-usd", + "unichain-btc-usd-svr", + "unichain-eth-usd-svr", + "unichain-ezeth-eth-exchange-rate", + "unichain-link-usd", + "unichain-rseth-eth-exchange-rate", + "unichain-uni-usd-svr", + "unichain-usdc-usd", + "unichain-usdc-usd-svr", + "unichain-weeth-eeth-exchange-rate", + "unichain-wsteth-steth-exchange-rate", "xlayer-btc-usd", "xlayer-dai-usd", "xlayer-eth-usd", @@ -2122,6 +2500,7 @@ "xlayer-gho-usd", "xlayer-link-usd", "xlayer-okb-usd", + "xlayer-sol-usd", "xlayer-susde-usd", "xlayer-susde-usde-exchange-rate", "xlayer-syrupusdc-usdc-exchange-rate", diff --git a/.github/scripts/data/detect-data.sh b/.github/scripts/data/detect-data.sh index d48e3f7c068..ef4b9dce650 100755 --- a/.github/scripts/data/detect-data.sh +++ b/.github/scripts/data/detect-data.sh @@ -154,11 +154,12 @@ node < { const baseLower = i.baseAsset.toLowerCase(); return { @@ -187,6 +189,13 @@ node < { + // Deduplicate by URL — equity streams have multiple hour-variant feeds + // (regular/overnight/extended) that now each produce distinct URLs, but + // guard against any edge cases where URL generation still produces duplicates. + if (seen.has(t.url)) return false; + seen.add(t.url); + return true; }).sort((a, b) => a.assetName.localeCompare(b.assetName)); } diff --git a/.github/workflows/chainlink-automation-config.yml b/.github/workflows/chainlink-automation-config.yml index 7094367496a..94ccd602919 100644 --- a/.github/workflows/chainlink-automation-config.yml +++ b/.github/workflows/chainlink-automation-config.yml @@ -35,7 +35,7 @@ jobs: - if: ${{ steps.compare_configs.outputs.createPR }} id: chainlink_automation_config_pr name: Create pull request - uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9 + uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 with: branch: 'chainlink_automation_config/pr-${{ steps.compare_configs.outputs.timestamp }}' commit-message: 'chainlink automation config updated' diff --git a/.github/workflows/chains-metadata.yml b/.github/workflows/chains-metadata.yml index fb275bf0813..f9cb97ab9fd 100644 --- a/.github/workflows/chains-metadata.yml +++ b/.github/workflows/chains-metadata.yml @@ -35,7 +35,7 @@ jobs: - if: ${{ steps.compare_chains.outputs.createPR }} id: chains_metadata_pr name: Create pull request - uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9 + uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 with: branch: 'chains_metadata/pr-${{ steps.compare_chains.outputs.timestamp }}' commit-message: 'chains metadata updated' diff --git a/.github/workflows/detect-new-data.yml b/.github/workflows/detect-new-data.yml index 9bc9e924316..90ad076486e 100644 --- a/.github/workflows/detect-new-data.yml +++ b/.github/workflows/detect-new-data.yml @@ -81,7 +81,7 @@ jobs: # Step 3: Restore cached node_modules from setup job - name: Restore node_modules - uses: actions/cache@v4 + uses: actions/cache@v4 with: path: | node_modules @@ -135,7 +135,7 @@ jobs: # Step 10: Create a pull request if new data items were found - name: Commit & Create Pull Request if: steps.detect_data.outputs.new_data_found == 'true' - uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9 + uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: "Data: Update changelog for new data items" @@ -152,7 +152,7 @@ jobs: # Step 11: Upload artifacts for debugging and record-keeping - name: Capture output artifacts if: always() - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v7 with: name: data-detection-${{ github.run_id }} path: | diff --git a/.github/workflows/detect-new-tokens.yml b/.github/workflows/detect-new-tokens.yml index 5cae81f718e..5b56c7a5e2e 100644 --- a/.github/workflows/detect-new-tokens.yml +++ b/.github/workflows/detect-new-tokens.yml @@ -143,7 +143,7 @@ jobs: # Create PR for new tokens - name: Create PR with new token information if: steps.check_tokens.outputs.new_tokens_found == 'true' - uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412 # v7.0.9 + uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: "CCT: Update changelog with new tokens" @@ -160,7 +160,7 @@ jobs: # Capture output artifacts (always runs, even if previous steps failed) - name: Capture output files if: always() - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v7 with: name: token-detection-artifacts-${{ github.run_id }} path: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c7c86de98a9..d4da920c256 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,6 +8,7 @@ concurrency: env: FOUNDRY_PROFILE: ci + NODE_VERSION: '22' # Set default permissions as restrictive as possible permissions: @@ -16,6 +17,39 @@ permissions: checks: write # Required for test results jobs: + # Detect which file groups changed so downstream jobs can skip themselves + changes: + runs-on: ubuntu-latest + outputs: + solidity: ${{ steps.filter.outputs.solidity }} + typescript: ${{ steps.filter.outputs.typescript }} + content: ${{ steps.filter.outputs.content }} + any_non_solidity: ${{ steps.filter.outputs.any_non_solidity }} + steps: + - uses: actions/checkout@v6 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: filter + with: + filters: | + solidity: + - 'public/samples/**/*.sol' + - 'foundry.toml' + typescript: + - '**/*.ts' + - '**/*.tsx' + - '**/*.astro' + - 'tsconfig*.json' + content: + - 'src/content/**' + - 'src/components/**' + - 'src/pages/**' + - 'src/layouts/**' + - 'astro.config.*' + any_non_solidity: + - '**' + - '!public/samples/**/*.sol' + - '!foundry.toml' + # Setup job to install and cache dependencies setup: runs-on: ubuntu-latest @@ -26,7 +60,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v6 with: - node-version: '20' + node-version: ${{ env.NODE_VERSION }} cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -46,7 +80,8 @@ jobs: # Job 1: Check Solidity Compilation and Solhint solidity: - needs: setup + needs: [setup, changes] + if: needs.changes.outputs.solidity == 'true' runs-on: ubuntu-latest steps: - name: Checkout Repo @@ -55,12 +90,12 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v6 with: - node-version: '20' + node-version: ${{ env.NODE_VERSION }} cache: 'npm' cache-dependency-path: '**/package-lock.json' - name: Install Foundry - uses: foundry-rs/foundry-toolchain@50d5a8956f2e319df19e6b57539d7e2acb9f8c1e # v1.5 + uses: foundry-rs/foundry-toolchain@8789b3e21e6c11b2697f5eb56eddae542f746c10 # v1.5 with: version: stable cache: false @@ -93,7 +128,8 @@ jobs: # Job 2: Check ESLint eslint: - needs: setup + needs: [setup, changes] + if: needs.changes.outputs.any_non_solidity == 'true' runs-on: ubuntu-latest steps: - name: Checkout Repo @@ -102,7 +138,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v6 with: - node-version: '20' + node-version: ${{ env.NODE_VERSION }} cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -132,8 +168,11 @@ jobs: # Job 3: Check Internal Links linkcheck-internal: - needs: setup + needs: [setup, changes] + if: needs.changes.outputs.content == 'true' runs-on: ubuntu-latest + permissions: + contents: read steps: - name: Checkout Repo uses: actions/checkout@v6 @@ -141,7 +180,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v6 with: - node-version: '20' + node-version: ${{ env.NODE_VERSION }} cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -158,13 +197,27 @@ jobs: echo "node_modules not found, installing dependencies..." npm ci --prefer-offline --no-audit fi + + - name: Build Site + run: npm run build + env: + NODE_OPTIONS: '--max-old-space-size=8192' - name: Check Internal Links - run: npm run linkcheck-internal + uses: lycheeverse/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411 # v2.8.0 + with: + args: >- + --root-dir $GITHUB_WORKSPACE/.vercel/output/static + --config lychee.toml + '.vercel/output/static/**/*.html' + fail: true + format: markdown + jobSummary: true # Job 4: Check Types typecheck: - needs: [setup] + needs: [setup, changes] + if: needs.changes.outputs.typescript == 'true' runs-on: ubuntu-latest steps: - name: Checkout Repo @@ -173,7 +226,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v6 with: - node-version: '20' + node-version: ${{ env.NODE_VERSION }} cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -203,21 +256,18 @@ jobs: # Job 5: Run Jest Tests jest: - needs: [setup] + needs: [setup, changes] + if: needs.changes.outputs.typescript == 'true' runs-on: ubuntu-latest - strategy: - matrix: - node-version: [20.x] - fail-fast: false steps: - name: Checkout Repo uses: actions/checkout@v6 - - name: Setup Node.js ${{ matrix.node-version }} + - name: Setup Node.js uses: actions/setup-node@v6 with: - node-version: ${{ matrix.node-version }} + node-version: ${{ env.NODE_VERSION }} cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -240,8 +290,41 @@ jobs: - name: Upload Test Coverage if: always() - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v7 with: - name: coverage-report-node-${{ matrix.node-version }} + name: coverage-report-node-${{ env.NODE_VERSION }} path: coverage/ - retention-days: 30 \ No newline at end of file + retention-days: 30 + + # Job 6: Validate LLM files are present and well-formed + validate-llms: + needs: [setup, changes] + if: needs.changes.outputs.content == 'true' + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v6 + + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: ${{ env.NODE_VERSION }} + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + + - name: Restore node_modules + uses: actions/cache/restore@v4 + continue-on-error: true + with: + path: node_modules + key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }} + + - name: Ensure Dependencies + run: | + if [ ! -d "node_modules" ]; then + echo "node_modules not found, installing dependencies..." + npm ci --prefer-offline --no-audit + fi + + - name: Validate LLM files + run: npm run check:llms \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4e2f3dac873..25ad8c0628e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ dist/ node_modules/ temp/ +reports/ # logs npm-debug.log* diff --git a/.husky/pre-commit b/.husky/pre-commit index 6b636e2c0ce..84cb5d88f02 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,2 +1,4 @@ npx lint-staged +npm run generate:llms +git add 'src/content/**/llms-full*.txt' diff --git a/LICENSE b/LICENSE index 764519dc3fa..e7195c674c4 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 SmartContract Chainlink Limited SEZC +Copyright (c) 2026 SmartContract Chainlink Limited SEZC Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/astro.config.ts b/astro.config.ts index 16ae5388f55..9d551d4f88b 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -15,6 +15,8 @@ import trailingSlashMiddleware from "./src/integrations/trailing-slash-middlewar import redirectsJson from "./src/features/redirects/redirects.json" import tailwind from "@astrojs/tailwind" import { extractCanonicalUrlsWithLanguageVariants } from "./src/utils/sidebar" +import remarkCodeFenceFilename from "./src/lib/markdown/remarkCodeFenceFilename" +import rehypeCodeSampleFences from "./src/lib/markdown/rehypeCodeSampleFences" config() // Load .env file @@ -105,9 +107,13 @@ export default defineConfig({ return item }, }), - mdx(), + // Ensure our fence-meta parser runs for `.mdx` pages (in addition to `markdown.remarkPlugins`). + mdx({ + remarkPlugins: [remarkCodeFenceFilename], + }), ], markdown: { + remarkPlugins: [remarkCodeFenceFilename], rehypePlugins: [ rehypeSlug, // Required for autolink to work properly [ @@ -118,6 +124,7 @@ export default defineConfig({ ], // Wrap tables in div with overflow supported [rehypeWrapAll, { selector: "table", wrapper: "div.overflow-wrapper" }], + rehypeCodeSampleFences, ] as RehypePlugins, syntaxHighlight: "prism", smartypants: false, diff --git a/codegen.ts b/codegen.ts new file mode 100644 index 00000000000..9b93ee4f875 --- /dev/null +++ b/codegen.ts @@ -0,0 +1,41 @@ +import type { CodegenConfig } from "@graphql-codegen/cli" +import dotenv from "dotenv" + +dotenv.config() + +const GRAPHQL_API_URL = process.env.CCIP_GRAPHQL_ENDPOINT +const GRAPHQL_AUTH_TOKEN = process.env.CCIP_GRAPHQL_API_KEY + +if (!GRAPHQL_API_URL) { + throw new Error("CCIP_GRAPHQL_ENDPOINT is not defined in .env") +} + +if (!GRAPHQL_AUTH_TOKEN) { + throw new Error("CCIP_GRAPHQL_API_KEY is not defined in .env") +} + +const config: CodegenConfig = { + schema: { + [GRAPHQL_API_URL]: { + headers: { + Authorization: `${GRAPHQL_AUTH_TOKEN}`, + }, + }, + }, + documents: ["./src/lib/ccip/graphql/queries/**/*.ts"], + emitLegacyCommonJSImports: false, + generates: { + "./src/lib/ccip/graphql/__generated__/": { + preset: "client", + presetConfig: { + gqlTagName: "gql", + }, + }, + "./src/lib/ccip/graphql/schema.graphql.json": { + plugins: ["introspection"], + }, + }, + ignoreNoDocuments: true, +} + +export default config diff --git a/context7.json b/context7.json new file mode 100644 index 00000000000..89021e03ca0 --- /dev/null +++ b/context7.json @@ -0,0 +1,4 @@ +{ + "url": "https://context7.com/smartcontractkit/documentation", + "public_key": "pk_nsBvFzEpWNJq5XpYfKBFc" +} diff --git a/jest.config.cjs b/jest.config.cjs index fba12927624..3382cefc90c 100644 --- a/jest.config.cjs +++ b/jest.config.cjs @@ -13,6 +13,7 @@ module.exports = { extensionsToTreatAsEsm: [".ts", ".tsx"], moduleFileExtensions: ["js", "jsx", "ts", "tsx", "json", "node"], moduleNameMapper: { + "^(\\.{1,2}/.*)\\.js$": "$1", "\\.(css)$": "/src/__mocks__/styleMock.ts", "^~/(.*)$": "/src/$1", "^@api/(.*)$": "/src/pages/api/$1", @@ -29,9 +30,15 @@ module.exports = { "^@variables$": "/src/config/markdown-variables.ts", "^@abi$": "/src/features/abi/index.ts", "^@lib$": "/src/lib/index.ts", + "^@lib/(.*)\\.js$": "/src/lib/$1", "^@lib/(.*)$": "/src/lib/$1", "\\.ya?ml$": "/src/__mocks__/yamlMock.ts", }, transformIgnorePatterns: ["/node_modules/(?!.*\\.mjs$)"], - testPathIgnorePatterns: ["/node_modules/", "src/tests/chain-api.test.ts"], + testPathIgnorePatterns: [ + "/node_modules/", + "\\.vercel/", + "src/tests/chain-api.test.ts", + "src/tests/chain-identifier-service.test.ts", + ], } diff --git a/lychee.toml b/lychee.toml new file mode 100644 index 00000000000..e0ebbf2d985 --- /dev/null +++ b/lychee.toml @@ -0,0 +1,41 @@ +# Lychee Link Checker Configuration +# https://lychee.cli.rs/ + +# Only check local files (no network requests) +offline = true + +# Check links in code blocks +include_verbatim = true + +# Don't show progress bar (better for CI) +no_progress = true + +# Patterns to exclude from link checking +exclude = [ + # CSS files + 'assets/.*\.css$', + '_astro/.*\.css$', + + # Dynamic pages with query params + '/ccip/directory/.*', + '/data-feeds/price-feeds/addresses\?.*', + '/data-feeds/smartdata/addresses\?.*', + + # Other files + 'sitemap-index\.xml', + '@vite/client', + + # Database connection strings + 'postgresql:', + 'mysql:', +] + +# Paths to exclude from scanning (won't check links on these pages) +exclude_path = [ + 'ccip/api-reference/evm/v162/.*', + 'ccip/api-reference/evm/v163/.*', +] + +# TODO: Re-enable fragment checking once Astro slug generation compatibility is resolved +# include_fragments = true +# Astro's heading ID generation and lychee's GitHub-style kebab-case expectations \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c76e8b670d9..1c0af256f1a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,18 +10,16 @@ "license": "ISC", "dependencies": { "@11ty/eleventy-fetch": "^4.0.1", - "@algolia/client-search": "^5.41.0", - "@apollo/client": "^3.14.0", - "@astro-community/astro-embed-youtube": "^0.5.9", - "@astrojs/mdx": "^4.3.12", - "@astrojs/partytown": "^2.1.4", + "@astro-community/astro-embed-youtube": "^0.5.10", + "@astrojs/mdx": "^4.3.14", + "@astrojs/partytown": "^2.1.5", "@astrojs/preact": "^4.1.3", "@astrojs/prism": "^3.3.0", "@astrojs/react": "^4.4.2", - "@astrojs/sitemap": "^3.6.0", + "@astrojs/sitemap": "^3.7.1", "@astrojs/tailwind": "^6.0.2", "@astrojs/vercel": "^8.2.11", - "@chainlink/blocks": "^1.3.1", + "@chainlink/blocks": "^1.3.4", "@chainlink/cl-search-frontend": "^0.12.1", "@chainlink/components": "^0.4.18", "@chainlink/contracts": "1.5.0", @@ -31,57 +29,66 @@ "@chainlink/local": "0.2.7-beta", "@chainlink/solana-sdk": "^0.2.2", "@metamask/providers": "^22.1.1", - "@nanostores/persistent": "^1.1.0", + "@nanostores/persistent": "^1.3.3", "@nanostores/preact": "^0.5.2", "@nanostores/react": "^0.8.4", - "@openzeppelin/contracts": "5.4.0", - "@solana-program/compute-budget": "^0.11.0", + "@openzeppelin/contracts": "5.6.1", + "@solana-program/compute-budget": "^0.12.0", "@solana-program/system": "^0.10.0", "@solana-program/token": "^0.9.0", - "@solana-program/token-2022": "^0.6.1", - "@solana/kit": "^5.0.0", - "@solana/react": "^5.0.0", + "@solana-program/token-2022": "^0.8.0", + "@solana/kit": "^5.5.1", + "@solana/react": "^5.5.1", "@solana/wallet-adapter-base": "^0.9.27", "@solana/wallet-adapter-coinbase": "^0.1.23", "@solana/wallet-adapter-react": "^0.15.39", "@solana/wallet-adapter-react-ui": "^0.9.39", "@solana/wallet-adapter-solflare": "^0.6.32", "@solana/wallet-adapter-trust": "^0.1.17", - "@supabase/supabase-js": "^2.84.0", - "astro": "^5.16.0", + "@supabase/supabase-js": "^2.99.1", + "astro": "^5.18.1", "bignumber.js": "^9.3.1", "bs58": "^6.0.0", "clipboard": "^2.0.11", "dotenv": "^16.6.1", - "ethers": "^6.15.0", - "focus-trap-react": "^11.0.4", + "ethers": "^6.16.0", + "focus-trap-react": "^11.0.6", + "fuse.js": "^7.1.0", "github-slugger": "^2.0.0", - "lodash": "^4.17.21", + "graphql": "^16.13.1", + "graphql-request": "^7.4.0", + "lodash": "^4.17.23", + "lru-cache": "^11.2.7", "marked": "^15.0.12", "nanostores": "^0.11.4", + "next": "14.2.35", + "p-limit": "^7.3.0", "pino": "^9.14.0", - "preact": "^10.27.2", - "react-instantsearch": "^7.20.0", + "preact": "^10.29.0", + "react-instantsearch": "^7.27.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "rehype-wrap-all": "^1.1.0", "remark-directive": "^3.0.1", - "swagger-ui-dist": "^5.30.1", - "swagger-ui-react": "^5.30.1", + "swagger-ui-dist": "^5.32.0", + "swagger-ui-react": "^5.32.0", "tweetnacl": "^1.0.3", "uuid": "^11.1.0" }, "devDependencies": { "@apidevtools/swagger-parser": "^10.1.1", + "@graphql-codegen/cli": "^6.2.1", + "@graphql-codegen/client-preset": "^5.2.4", + "@graphql-codegen/introspection": "^5.0.1", "@jest/globals": "^29.7.0", "@project-serum/anchor": "^0.26.0", "@rollup/plugin-yaml": "^4.1.2", "@types/jest": "^29.5.14", - "@types/lodash": "^4.17.21", - "@types/node": "^20.19.25", + "@types/lodash": "^4.17.24", + "@types/node": "^20.19.37", "@types/node-fetch": "^2.6.13", - "@types/prismjs": "^1.26.5", - "@types/react": "^19.2.7", + "@types/prismjs": "^1.26.6", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/swagger-ui-dist": "^3.30.6", "@types/swagger-ui-react": "^5.18.0", @@ -92,31 +99,28 @@ "eslint-config-standard": "^17.1.0", "eslint-plugin-import": "^2.32.0", "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^5.5.0", + "eslint-plugin-prettier": "^5.5.5", "eslint-plugin-promise": "^6.1.1", "husky": "^9.1.7", "jest-yaml-transform": "^0.2.0", - "knip": "^5.70.1", + "knip": "^5.86.0", "lint-staged": "^15.5.2", "openapi-types": "^12.1.3", - "pino-pretty": "^13.1.2", - "prettier": "^3.5.3", + "pino-pretty": "^13.1.3", + "prettier": "^3.8.1", "prettier-plugin-astro": "^0.14.1", - "prettier-plugin-solidity": "^1.4.3", "remark-gfm": "^4.0.0", "remark-mdx": "^3.1.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", - "solhint": "^6.0.1", + "solhint": "^6.0.3", "solhint-plugin-chainlink-solidity": "github:smartcontractkit/chainlink-solhint-rules#v1.3.0", - "solhint-plugin-prettier": "^0.1.0", - "tailwindcss": "^3.4.18", - "ts-jest": "^29.4.5", + "ts-jest": "^29.4.6", "tsconfig-paths": "^4.2.0", - "tsx": "^4.20.6", + "tsx": "^4.21.0", "typescript": "^5.9.3", "unified": "^11.0.4", - "unist-util-visit": "^5.0.0", + "unist-util-visit": "^5.1.0", "vite": "^6.4.1" }, "engines": { @@ -148,176 +152,121 @@ "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", "license": "MIT" }, - "node_modules/@ai-sdk/gateway": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-2.0.15.tgz", - "integrity": "sha512-i1YVKzC1dg9LGvt+GthhD7NlRhz9J4+ZRj3KELU14IZ/MHPsOBiFeEoCCIDLR+3tqT8/+5nIsK3eZ7DFRfMfdw==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider": "2.0.0", - "@ai-sdk/provider-utils": "3.0.17", - "@vercel/oidc": "3.0.5" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "zod": "^3.25.76 || ^4.1.8" - } - }, - "node_modules/@ai-sdk/gateway/node_modules/@vercel/oidc": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.0.5.tgz", - "integrity": "sha512-fnYhv671l+eTTp48gB4zEsTW/YtRgRPnkI2nT7x6qw5rkI1Lq2hTmQIpHPgyThI0znLK+vX2n9XxKdXZ7BUbbw==", - "license": "Apache-2.0", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@ai-sdk/provider": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-2.0.0.tgz", - "integrity": "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==", - "license": "Apache-2.0", - "dependencies": { - "json-schema": "^0.4.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ai-sdk/provider-utils": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-3.0.17.tgz", - "integrity": "sha512-TR3Gs4I3Tym4Ll+EPdzRdvo/rc8Js6c4nVhFLuvGLX/Y4V9ZcQMa/HTiYsHEgmYrf1zVi6Q145UEZUfleOwOjw==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider": "2.0.0", - "@standard-schema/spec": "^1.0.0", - "eventsource-parser": "^3.0.6" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "zod": "^3.25.76 || ^4.1.8" - } - }, "node_modules/@algolia/abtesting": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.11.0.tgz", - "integrity": "sha512-a7oQ8dwiyoyVmzLY0FcuBqyqcNSq78qlcOtHmNBumRlHCSnXDcuoYGBGPN1F6n8JoGhviDDsIaF/oQrzTzs6Lg==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.15.2.tgz", + "integrity": "sha512-rF7vRVE61E0QORw8e2NNdnttcl3jmFMWS9B4hhdga12COe+lMa26bQLfcBn/Nbp9/AF/8gXdaRCPsVns3CnjsA==", "license": "MIT", "peer": true, "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-abtesting": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.45.0.tgz", - "integrity": "sha512-WTW0VZA8xHMbzuQD5b3f41ovKZ0MNTIXkWfm0F2PU+XGcLxmxX15UqODzF2sWab0vSbi3URM1xLhJx+bXbd1eQ==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.49.2.tgz", + "integrity": "sha512-XyvKCm0RRmovMI/ChaAVjTwpZhXdbgt3iZofK914HeEHLqD1MUFFVLz7M0+Ou7F56UkHXwRbpHwb9xBDNopprQ==", "license": "MIT", "peer": true, "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.45.0.tgz", - "integrity": "sha512-I3g7VtvG/QJOH3tQO7E7zWTwBfK/nIQXShFLR8RvPgWburZ626JNj332M3wHCYcaAMivN9WJG66S2JNXhm6+Xg==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.49.2.tgz", + "integrity": "sha512-jq/3qvtmj3NijZlhq7A1B0Cl41GfaBpjJxcwukGsYds6aMSCWrEAJ9pUqw/C9B3hAmILYKl7Ljz3N9SFvekD3Q==", "license": "MIT", "peer": true, "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.45.0.tgz", - "integrity": "sha512-/nTqm1tLiPtbUr+8kHKyFiCOfhRfgC+JxLvOCq471gFZZOlsh6VtFRiKI60/zGmHTojFC6B0mD80PB7KeK94og==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.49.2.tgz", + "integrity": "sha512-bn0biLequn3epobCfjUqCxlIlurLr4RHu7RaE4trgN+RDcUq6HCVC3/yqq1hwbNYpVtulnTOJzcaxYlSr1fnuw==", "license": "MIT", "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-insights": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.45.0.tgz", - "integrity": "sha512-suQTx/1bRL1g/K2hRtbK3ANmbzaZCi13487sxxmqok+alBDKKw0/TI73ZiHjjFXM2NV52inwwcmW4fUR45206Q==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.49.2.tgz", + "integrity": "sha512-z14wfFs1T3eeYbCArC8pvntAWsPo9f6hnUGoj8IoRUJTwgJiiySECkm8bmmV47/x0oGHfsVn3kBdjMX0yq0sNA==", "license": "MIT", "peer": true, "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.45.0.tgz", - "integrity": "sha512-CId/dbjpzI3eoUhPU6rt/z4GrRsDesqFISEMOwrqWNSrf4FJhiUIzN42Ac+Gzg69uC0RnzRYy60K1y4Na5VSMw==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.49.2.tgz", + "integrity": "sha512-GpRf7yuuAX93+Qt0JGEJZwgtL0MFdjFO9n7dn8s2pA9mTjzl0Sc5+uTk1VPbIAuf7xhCP9Mve+URGb6J+EYxgA==", "license": "MIT", "peer": true, "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.45.0.tgz", - "integrity": "sha512-tjbBKfA8fjAiFtvl9g/MpIPiD6pf3fj7rirVfh1eMIUi8ybHP4ovDzIaE216vHuRXoePQVCkMd2CokKvYq1CLw==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.49.2.tgz", + "integrity": "sha512-HZwApmNkp0DiAjZcLYdQLddcG4Agb88OkojiAHGgcm5DVXobT5uSZ9lmyrbw/tmQBJwgu2CNw4zTyXoIB7YbPA==", "license": "MIT", "peer": true, "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.45.0.tgz", - "integrity": "sha512-nxuCid+Nszs4xqwIMDw11pRJPes2c+Th1yup/+LtpjFH8QWXkr3SirNYSD3OXAeM060HgWWPLA8/Fxk+vwxQOA==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.49.2.tgz", + "integrity": "sha512-y1IOpG6OSmTpGg/CT0YBb/EAhR2nsC18QWp9Jy8HO9iGySpcwaTvs5kHa17daP3BMTwWyaX9/1tDTDQshZzXdg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" }, "engines": { "node": ">= 14.0.0" @@ -330,84 +279,84 @@ "license": "MIT" }, "node_modules/@algolia/ingestion": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.45.0.tgz", - "integrity": "sha512-t+1doBzhkQTeOOjLHMlm4slmXBhvgtEGQhOmNpMPTnIgWOyZyESWdm+XD984qM4Ej1i9FRh8VttOGrdGnAjAng==", + "version": "1.49.2", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.49.2.tgz", + "integrity": "sha512-YYJRjaZ2bqk923HxE4um7j/Cm3/xoSkF2HC2ZweOF8cXL3sqnlndSUYmCaxHFjNPWLaSHk2IfssX6J/tdKTULw==", "license": "MIT", "peer": true, "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.45.0.tgz", - "integrity": "sha512-IaX3ZX1A/0wlgWZue+1BNWlq5xtJgsRo7uUk/aSiYD7lPbJ7dFuZ+yTLFLKgbl4O0QcyHTj1/mSBj9ryF1Lizg==", + "version": "1.49.2", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.49.2.tgz", + "integrity": "sha512-9WgH+Dha39EQQyGKCHlGYnxW/7W19DIrEbCEbnzwAMpGAv1yTWCHMPXHxYa+LcL3eCp2V/5idD1zHNlIKmHRHg==", "license": "MIT", "peer": true, "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.45.0.tgz", - "integrity": "sha512-1jeMLoOhkgezCCPsOqkScwYzAAc1Jr5T2hisZl0s32D94ZV7d1OHozBukgOjf8Dw+6Hgi6j52jlAdUWTtkX9Mg==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.49.2.tgz", + "integrity": "sha512-K7Gp5u+JtVYgaVpBxF5rGiM+Ia8SsMdcAJMTDV93rwh00DKNllC19o1g+PwrDjDvyXNrnTEbofzbTs2GLfFyKA==", "license": "MIT", "peer": true, "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.45.0.tgz", - "integrity": "sha512-46FIoUkQ9N7wq4/YkHS5/W9Yjm4Ab+q5kfbahdyMpkBPJ7IBlwuNEGnWUZIQ6JfUZuJVojRujPRHMihX4awUMg==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.49.2.tgz", + "integrity": "sha512-3UhYCcWX6fbtN8ABcxZlhaQEwXFh3CsFtARyyadQShHMPe3mJV9Wel4FpJTa+seugRkbezFz0tt6aPTZSYTBuA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0" + "@algolia/client-common": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.45.0.tgz", - "integrity": "sha512-XFTSAtCwy4HdBhSReN2rhSyH/nZOM3q3qe5ERG2FLbYId62heIlJBGVyAPRbltRwNlotlydbvSJ+SQ0ruWC2cw==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.49.2.tgz", + "integrity": "sha512-G94VKSGbsr+WjsDDOBe5QDQ82QYgxvpxRGJfCHZBnYKYsy/jv9qGIDb93biza+LJWizQBUtDj7bZzp3QZyzhPQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0" + "@algolia/client-common": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.45.0.tgz", - "integrity": "sha512-8mTg6lHx5i44raCU52APsu0EqMsdm4+7Hch/e4ZsYZw0hzwkuaMFh826ngnkYf9XOl58nHoou63aZ874m8AbpQ==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.49.2.tgz", + "integrity": "sha512-UuihBGHafG/ENsrcTGAn5rsOffrCIRuHMOsD85fZGLEY92ate+BMTUqxz60dv5zerh8ZumN4bRm8eW2z9L11jA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0" + "@algolia/client-common": "5.49.2" }, "engines": { "node": ">= 14.0.0" @@ -479,47 +428,6 @@ "openapi-types": ">=7" } }, - "node_modules/@apollo/client": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.14.0.tgz", - "integrity": "sha512-0YQKKRIxiMlIou+SekQqdCo0ZTHxOcES+K8vKB53cIDpwABNR0P0yRzPgsbgcj3zRJniD93S/ontsnZsCLZrxQ==", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/caches": "^1.0.0", - "@wry/equality": "^0.5.6", - "@wry/trie": "^0.5.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.18.0", - "prop-types": "^15.7.2", - "rehackt": "^0.1.0", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - }, - "peerDependencies": { - "graphql": "^15.0.0 || ^16.0.0", - "graphql-ws": "^5.5.5 || ^6.0.3", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", - "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" - }, - "peerDependenciesMeta": { - "graphql-ws": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "subscriptions-transport-ws": { - "optional": true - } - } - }, "node_modules/@arbitrum/nitro-contracts": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@arbitrum/nitro-contracts/-/nitro-contracts-3.0.0.tgz", @@ -546,16 +454,35 @@ "integrity": "sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==", "license": "MIT" }, - "node_modules/@astro-community/astro-embed-youtube": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-youtube/-/astro-embed-youtube-0.5.9.tgz", - "integrity": "sha512-8Uk2SKbyZVb+jxwqSAMoEpQo+063XYwCI3yRy9cbkyHpu09mDabGZNTF5XrL8CKr3NtR5haBkeYK/kSuKUkJ/g==", + "node_modules/@ardatan/relay-compiler": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-13.0.0.tgz", + "integrity": "sha512-ite4+xng5McO8MflWCi0un0YmnorTujsDnfPfhzYzAgoJ+jkI1pZj6jtmTl8Jptyi1H+Pa0zlatJIsxDD++ETA==", + "dev": true, "license": "MIT", "dependencies": { - "lite-youtube-embed": "^0.3.4" + "@babel/runtime": "^7.26.10", + "immutable": "^5.1.5", + "invariant": "^2.2.4" }, "peerDependencies": { - "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta" + "graphql": "*" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/immutable": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@astro-community/astro-embed-youtube": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-youtube/-/astro-embed-youtube-0.5.10.tgz", + "integrity": "sha512-hVlx77KQLjKzElVQnrU5znQ5/E60keVSAPrhuWvQQHuqva5auJtt8YBpOThkwDMuEKXjQybEF1/3C07RZ8MAOQ==", + "license": "MIT", + "dependencies": { + "lite-youtube-embed": "^0.3.4" } }, "node_modules/@astrojs/compiler": { @@ -565,24 +492,24 @@ "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", - "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.6.tgz", + "integrity": "sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q==", "license": "MIT" }, "node_modules/@astrojs/markdown-remark": { - "version": "6.3.9", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.9.tgz", - "integrity": "sha512-hX2cLC/KW74Io1zIbn92kI482j9J7LleBLGCVU9EP3BeH5MVrnFawOnqD0t/q6D1Z+ZNeQG2gNKMslCcO36wng==", + "version": "6.3.11", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.11.tgz", + "integrity": "sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.7.5", + "@astrojs/internal-helpers": "0.7.6", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.2.0", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", @@ -590,8 +517,8 @@ "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", - "shiki": "^3.13.0", - "smol-toml": "^1.4.2", + "shiki": "^3.21.0", + "smol-toml": "^1.6.0", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", @@ -600,12 +527,12 @@ } }, "node_modules/@astrojs/mdx": { - "version": "4.3.12", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.12.tgz", - "integrity": "sha512-pL3CVPtuQrPnDhWjy7zqbOibNyPaxP4VpQS8T8spwKqKzauJ4yoKyNkVTD8jrP7EAJHmBhZ7PTmUGZqOpKKp8g==", + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.14.tgz", + "integrity": "sha512-FBrqJQORVm+rkRa2TS5CjU9PBA6hkhrwLVBSS9A77gN2+iehvjq1w6yya/d0YKC7osiVorKkr3Qd9wNbl0ZkGA==", "license": "MIT", "dependencies": { - "@astrojs/markdown-remark": "6.3.9", + "@astrojs/markdown-remark": "6.3.11", "@mdx-js/mdx": "^3.1.1", "acorn": "^8.15.0", "es-module-lexer": "^1.7.0", @@ -627,12 +554,12 @@ } }, "node_modules/@astrojs/partytown": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@astrojs/partytown/-/partytown-2.1.4.tgz", - "integrity": "sha512-loUrAu0cGYFDC6dHVRiomdsBJ41VjDYXPA+B3Br51V5hENFgDSOLju86OIj1TvBACcsB22UQV7BlppODDG5gig==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@astrojs/partytown/-/partytown-2.1.5.tgz", + "integrity": "sha512-Uo2Uqmvjh/5w08wGoVAspdj14hUoE28uQH8SkzaBMw9bTBNIviEkPi3VkJi+tj1ZYAY9oX7OSkRDJ48QRtMhlw==", "license": "MIT", "dependencies": { - "@qwik.dev/partytown": "^0.11.0", + "@qwik.dev/partytown": "^0.11.2", "mrmime": "^2.0.1" } }, @@ -687,14 +614,23 @@ } }, "node_modules/@astrojs/sitemap": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.6.0.tgz", - "integrity": "sha512-4aHkvcOZBWJigRmMIAJwRQXBS+ayoP5z40OklTXYXhUDhwusz+DyDl+nSshY6y9DvkVEavwNcFO8FD81iGhXjg==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.1.tgz", + "integrity": "sha512-IzQqdTeskaMX+QDZCzMuJIp8A8C1vgzMBp/NmHNnadepHYNHcxQdGLQZYfkbd2EbRXUfOS+UDIKx8sKg0oWVdw==", "license": "MIT", "dependencies": { - "sitemap": "^8.0.0", + "sitemap": "^9.0.0", "stream-replace-string": "^2.0.0", - "zod": "^3.25.76" + "zod": "^4.3.6" + } + }, + "node_modules/@astrojs/sitemap/node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/@astrojs/tailwind": { @@ -713,9 +649,9 @@ } }, "node_modules/@astrojs/tailwind/node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "funding": [ { "type": "opencollective", @@ -894,6 +830,15 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -934,9 +879,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1048,6 +993,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", @@ -1294,12 +1255,12 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz", - "integrity": "sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.29.0.tgz", + "integrity": "sha512-TgUkdp71C9pIbBcHudc+gXZnihEDOjUAmXO1VO4HHGES7QLZcShR0stfKIxLSNIYx2fqhmJChOjm/wkF8wv4gA==", "license": "MIT", "dependencies": { - "core-js-pure": "^3.43.0" + "core-js-pure": "^3.48.0" }, "engines": { "node": ">=6.9.0" @@ -1379,21 +1340,21 @@ "peer": true }, "node_modules/@capsizecss/unpack": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-3.0.1.tgz", - "integrity": "sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-4.0.0.tgz", + "integrity": "sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==", "license": "MIT", "dependencies": { - "fontkit": "^2.0.2" + "fontkitten": "^1.0.0" }, "engines": { "node": ">=18" } }, "node_modules/@chainlink/blocks": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@chainlink/blocks/-/blocks-1.3.1.tgz", - "integrity": "sha512-0Px46fJA7aIm7cFuF/6CgV1ZSbkNKfe+QBA0XO7j9Ld8cevlIF/r4GsqR5zDbSaHPejvRloMQJVZoBsU9qINnA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@chainlink/blocks/-/blocks-1.3.4.tgz", + "integrity": "sha512-lIMa+TLYbrNkKnaXCMvE5oCRBFgXZxnHO7jRkzbZFRQgJAEsD0SjuILDDmi6b0yw2ZPIvvoF7Zk0Dd0GaF2SuA==", "license": "ISC", "dependencies": { "@floating-ui/react": "0.22.2", @@ -1820,9 +1781,9 @@ } }, "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", - "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", "license": "MIT", "dependencies": { "react-remove-scroll-bar": "^2.3.7", @@ -1844,43 +1805,133 @@ } } }, - "node_modules/@chainlink/blocks/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/@chainlink/blocks/node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/@chainlink/blocks/node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@chainlink/blocks/node_modules/tailwindcss": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", + "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" }, - "engines": { - "node": ">= 8.10.0" + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@chainlink/cl-search-frontend": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@chainlink/cl-search-frontend/-/cl-search-frontend-0.12.1.tgz", + "integrity": "sha512-l/5hz8qsoIXpFt82iX0Hrw6tQC/CSaKXmZKah8A8XkC+REmMyC6FtQLNKBdHsLnuJ/EwnjyEGGhMNe26RjLsQA==", + "dependencies": { + "@algolia/client-search": "^5.17.1", + "dompurify": "^3.2.6", + "hast-util-sanitize": "^5.0.2", + "react-markdown": "^10.1.0", + "rehype-autolink-headings": "^7.1.0", + "rehype-prism-plus": "^2.0.0", + "rehype-sanitize": "^6.0.0", + "rehype-slug": "^6.0.0", + "remark-gfm": "^4.0.1" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" } }, - "node_modules/@chainlink/blocks/node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@chainlink/components": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/@chainlink/components/-/components-0.4.18.tgz", + "integrity": "sha512-x6DGq4YHPnLVY1Cwe0hYqj4T+6ekX8wDl7Jwxz91N2nubVp/pZCNOJVFcGTnIrcf+y5PEgPJZHu1qtob2ewqhQ==", "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "@chainlink/design-system": "0.2.8", + "@floating-ui/react": "0.22.2", + "@radix-ui/react-dialog": "1.0.5", + "@radix-ui/react-dropdown-menu": "2.0.6", + "@radix-ui/react-navigation-menu": "1.1.3", + "@radix-ui/react-popover": "1.1.1", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-tooltip": "1.0.7", + "@tailwindcss/container-queries": "0.1.1", + "class-variance-authority": "0.7.0", + "clsx": "2.1.1", + "ethers": "5.7.2", + "lucide-react": "0.390.0", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-modal": "3.16.1", + "react-transition-group": "4.4.5", + "tailwind-merge": "2.3.0", + "tailwindcss": "3.4.4", + "tailwindcss-animate": "1.0.7" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "next": "^14.2.4" } }, - "node_modules/@chainlink/blocks/node_modules/jiti": { + "node_modules/@chainlink/components/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/sha2": "^5.8.0" + } + }, + "node_modules/@chainlink/components/node_modules/jiti": { "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", @@ -1888,7 +1939,7 @@ "jiti": "bin/jiti.js" } }, - "node_modules/@chainlink/blocks/node_modules/lilconfig": { + "node_modules/@chainlink/components/node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", @@ -1897,192 +1948,7 @@ "node": ">=10" } }, - "node_modules/@chainlink/blocks/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/@chainlink/blocks/node_modules/tailwindcss": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", - "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@chainlink/cl-search-frontend": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@chainlink/cl-search-frontend/-/cl-search-frontend-0.12.1.tgz", - "integrity": "sha512-l/5hz8qsoIXpFt82iX0Hrw6tQC/CSaKXmZKah8A8XkC+REmMyC6FtQLNKBdHsLnuJ/EwnjyEGGhMNe26RjLsQA==", - "dependencies": { - "@algolia/client-search": "^5.17.1", - "dompurify": "^3.2.6", - "hast-util-sanitize": "^5.0.2", - "react-markdown": "^10.1.0", - "rehype-autolink-headings": "^7.1.0", - "rehype-prism-plus": "^2.0.0", - "rehype-sanitize": "^6.0.0", - "rehype-slug": "^6.0.0", - "remark-gfm": "^4.0.1" - }, - "peerDependencies": { - "react": ">=18.0.0", - "react-dom": ">=18.0.0" - } - }, - "node_modules/@chainlink/components": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/@chainlink/components/-/components-0.4.18.tgz", - "integrity": "sha512-x6DGq4YHPnLVY1Cwe0hYqj4T+6ekX8wDl7Jwxz91N2nubVp/pZCNOJVFcGTnIrcf+y5PEgPJZHu1qtob2ewqhQ==", - "license": "ISC", - "dependencies": { - "@chainlink/design-system": "0.2.8", - "@floating-ui/react": "0.22.2", - "@radix-ui/react-dialog": "1.0.5", - "@radix-ui/react-dropdown-menu": "2.0.6", - "@radix-ui/react-navigation-menu": "1.1.3", - "@radix-ui/react-popover": "1.1.1", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-tooltip": "1.0.7", - "@tailwindcss/container-queries": "0.1.1", - "class-variance-authority": "0.7.0", - "clsx": "2.1.1", - "ethers": "5.7.2", - "lucide-react": "0.390.0", - "react": "18.3.1", - "react-dom": "18.3.1", - "react-modal": "3.16.1", - "react-transition-group": "4.4.5", - "tailwind-merge": "2.3.0", - "tailwindcss": "3.4.4", - "tailwindcss-animate": "1.0.7" - }, - "peerDependencies": { - "next": "^14.2.4" - } - }, - "node_modules/@chainlink/components/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/@chainlink/components/node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@chainlink/components/node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/sha2": "^5.8.0" - } - }, - "node_modules/@chainlink/components/node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/@chainlink/components/node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@chainlink/components/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/@chainlink/components/node_modules/tailwindcss": { + "node_modules/@chainlink/components/node_modules/tailwindcss": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", @@ -2379,25 +2245,6 @@ "bn.js": "^5.2.1" } }, - "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/bytes": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", - "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } - }, "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/constants": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", @@ -2557,22 +2404,6 @@ "js-sha3": "0.8.0" } }, - "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/logger": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", - "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT" - }, "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/networks": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", @@ -2592,46 +2423,6 @@ "@ethersproject/logger": "^5.8.0" } }, - "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/pbkdf2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", - "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/sha2": "^5.8.0" - } - }, - "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/properties": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", - "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } - }, "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/providers": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", @@ -2712,28 +2503,6 @@ "@ethersproject/logger": "^5.8.0" } }, - "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/sha2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", - "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "hash.js": "1.1.7" - } - }, "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/signing-key": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", @@ -3023,6 +2792,21 @@ "@ethersproject/wordlists": "5.8.0" } }, + "node_modules/@chainlink/contracts-1.4.0/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@chainlink/contracts-1.4.0/node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -3307,25 +3091,6 @@ "bn.js": "^5.2.1" } }, - "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/bytes": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", - "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } - }, "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/constants": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", @@ -3485,22 +3250,6 @@ "js-sha3": "0.8.0" } }, - "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/logger": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", - "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT" - }, "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/networks": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", @@ -3520,46 +3269,6 @@ "@ethersproject/logger": "^5.8.0" } }, - "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/pbkdf2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", - "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/sha2": "^5.8.0" - } - }, - "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/properties": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", - "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } - }, "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/providers": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", @@ -3640,28 +3349,6 @@ "@ethersproject/logger": "^5.8.0" } }, - "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/sha2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", - "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "hash.js": "1.1.7" - } - }, "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/signing-key": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", @@ -3951,6 +3638,21 @@ "@ethersproject/wordlists": "5.8.0" } }, + "node_modules/@chainlink/contracts-ccip/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@chainlink/contracts-ccip/node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -4737,42 +4439,6 @@ "tailwindcss-animate": "1.0.7" } }, - "node_modules/@chainlink/design-system/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/@chainlink/design-system/node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@chainlink/design-system/node_modules/jiti": { "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", @@ -4790,18 +4456,6 @@ "node": ">=10" } }, - "node_modules/@chainlink/design-system/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, "node_modules/@chainlink/design-system/node_modules/tailwindcss": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", @@ -5364,6 +5018,21 @@ "changeset": "bin.js" } }, + "node_modules/@changesets/cli/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@changesets/cli/node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -5628,6 +5297,50 @@ "tslib": "^2.4.0" } }, + "node_modules/@envelop/core": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@envelop/core/-/core-5.5.1.tgz", + "integrity": "sha512-3DQg8sFskDo386TkL5j12jyRAdip/8yzK3x7YGbZBgobZ4aKXrvDU0GppU0SnmrpQnNaiTUsxBs9LKkwQ/eyvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@envelop/instrumentation": "^1.0.0", + "@envelop/types": "^5.2.1", + "@whatwg-node/promise-helpers": "^1.2.4", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@envelop/instrumentation": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@envelop/instrumentation/-/instrumentation-1.0.0.tgz", + "integrity": "sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.2.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@envelop/types": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@envelop/types/-/types-5.2.1.tgz", + "integrity": "sha512-CsFmA3u3c2QoLDTfEpGr4t25fjMU31nyvse7IzWTvb0ZycuPjMjb0fjlheh+PbhBYb9YLugnT2uY6Mwcg1o+Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", @@ -6759,23 +6472,30 @@ "@ethersproject/strings": "^5.7.0" } }, + "node_modules/@fastify/busboy": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-3.2.0.tgz", + "integrity": "sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==", + "dev": true, + "license": "MIT" + }, "node_modules/@floating-ui/core": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", - "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.10" + "@floating-ui/utils": "^0.2.11" } }, "node_modules/@floating-ui/dom": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", - "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.7.3", - "@floating-ui/utils": "^0.2.10" + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" } }, "node_modules/@floating-ui/react": { @@ -6807,230 +6527,1319 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", "license": "MIT" }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "license": "MIT", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@hookform/resolvers": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.9.1.tgz", - "integrity": "sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==", + "node_modules/@graphql-codegen/add": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-6.0.0.tgz", + "integrity": "sha512-biFdaURX0KTwEJPQ1wkT6BRgNasqgQ5KbCI1a3zwtLtO7XTo7/vKITPylmiU27K5DSOWYnY/1jfSqUAEBuhZrQ==", + "dev": true, "license": "MIT", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^6.0.0", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + }, "peerDependencies": { - "react-hook-form": "^7.0.0" + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@graphql-codegen/add/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "license": "0BSD" + }, + "node_modules/@graphql-codegen/cli": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-6.2.1.tgz", + "integrity": "sha512-E1B+5nBda2l89Pci5M0HcEj2Hmx2yhORFX+1T3rmwpQjdOiulo+h9JifWxKomUpjfbmU1YkBSd47CCGLFPU10A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.18.13", + "@babel/template": "^7.18.10", + "@babel/types": "^7.18.13", + "@graphql-codegen/client-preset": "^5.2.4", + "@graphql-codegen/core": "^5.0.1", + "@graphql-codegen/plugin-helpers": "^6.2.0", + "@graphql-tools/apollo-engine-loader": "^8.0.28", + "@graphql-tools/code-file-loader": "^8.1.28", + "@graphql-tools/git-loader": "^8.0.32", + "@graphql-tools/github-loader": "^9.0.6", + "@graphql-tools/graphql-file-loader": "^8.1.11", + "@graphql-tools/json-file-loader": "^8.0.26", + "@graphql-tools/load": "^8.1.8", + "@graphql-tools/merge": "^9.0.6", + "@graphql-tools/url-loader": "^9.0.6", + "@graphql-tools/utils": "^11.0.0", + "@inquirer/prompts": "^7.8.2", + "@whatwg-node/fetch": "^0.10.0", + "chalk": "^4.1.0", + "cosmiconfig": "^9.0.0", + "debounce": "^2.0.0", + "detect-indent": "^6.0.0", + "graphql-config": "^5.1.6", + "is-glob": "^4.0.1", + "jiti": "^2.3.0", + "json-to-pretty-yaml": "^1.2.2", + "listr2": "^9.0.0", + "log-symbols": "^4.0.0", + "micromatch": "^4.0.5", + "shell-quote": "^1.7.3", + "string-env-interpolation": "^1.0.1", + "ts-log": "^2.2.3", + "tslib": "^2.4.0", + "yaml": "^2.3.1", + "yargs": "^17.0.0" + }, + "bin": { + "gql-gen": "cjs/bin.js", + "graphql-code-generator": "cjs/bin.js", + "graphql-codegen": "cjs/bin.js", + "graphql-codegen-esm": "esm/bin.js" }, "engines": { - "node": ">=10.10.0" + "node": ">=16" + }, + "peerDependencies": { + "@parcel/watcher": "^2.1.0", + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "@parcel/watcher": { + "optional": true + } } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@graphql-codegen/cli/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": ">=12.22" + "node": ">=12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@humanwhocodes/momoa": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.4.tgz", - "integrity": "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==", + "node_modules/@graphql-codegen/cli/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": ">=10.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", + "node_modules/@graphql-codegen/cli/node_modules/cli-truncate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", + "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@img/colour": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", - "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", "license": "MIT", - "optional": true, + "dependencies": { + "slice-ansi": "^8.0.0", + "string-width": "^8.2.0" + }, "engines": { - "node": ">=18" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", - "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@graphql-codegen/cli/node_modules/cosmiconfig": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=14" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/d-fischer" }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.4" + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", - "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@graphql-codegen/cli/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@graphql-codegen/cli/node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=18" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.4" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", - "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@graphql-codegen/cli/node_modules/listr2": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", + "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^5.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", - "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@graphql-codegen/cli/node_modules/slice-ansi": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" + }, + "engines": { + "node": ">=20" + }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", - "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", - "cpu": [ - "arm" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@graphql-codegen/cli/node_modules/string-width": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", + "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", - "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@graphql-codegen/cli/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", - "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", - "cpu": [ - "ppc64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@graphql-codegen/client-preset": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@graphql-codegen/client-preset/-/client-preset-5.2.4.tgz", + "integrity": "sha512-k4f9CoepkVznXRReCHBVnG/FeQVQgIOhgtkaJ6I9FcQRzUkrm9ASmQjOdNdMlZt0DHTU4nbVxIBGZW7gk1RavA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7", + "@graphql-codegen/add": "^6.0.0", + "@graphql-codegen/gql-tag-operations": "5.1.4", + "@graphql-codegen/plugin-helpers": "^6.1.1", + "@graphql-codegen/typed-document-node": "^6.1.7", + "@graphql-codegen/typescript": "^5.0.9", + "@graphql-codegen/typescript-operations": "^5.0.9", + "@graphql-codegen/visitor-plugin-common": "^6.2.4", + "@graphql-tools/documents": "^1.0.0", + "@graphql-tools/utils": "^11.0.0", + "@graphql-typed-document-node/core": "3.2.0", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", + "graphql-sock": "^1.0.0" + }, + "peerDependenciesMeta": { + "graphql-sock": { + "optional": true + } } }, - "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", - "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", - "cpu": [ - "riscv64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@graphql-codegen/client-preset/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-5.0.1.tgz", + "integrity": "sha512-eQD7aXpKkKvaydMv5Bu0FnKCPnNMAhZ3vZW+K4Rl9IAC2w5PDv9lJhs3YTWM9W58zNOZpGQGT2F0ekS3QNIiKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^6.1.1", + "@graphql-tools/schema": "^10.0.0", + "@graphql-tools/utils": "^11.0.0", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "node_modules/@graphql-codegen/core/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/gql-tag-operations": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-5.1.4.tgz", + "integrity": "sha512-tDj/0a1U7rDH3PQgLeA+PlgBNb593MIJ43oAOKMRgJPwIQ9T7p2oqBRLxwfFZFTDLwnwsGZ7xIKqIcGgyAIj5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^6.1.1", + "@graphql-codegen/visitor-plugin-common": "^6.2.4", + "@graphql-tools/utils": "^11.0.0", + "auto-bind": "~4.0.0", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/gql-tag-operations/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/introspection": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/introspection/-/introspection-5.0.1.tgz", + "integrity": "sha512-dX6U8o0Sddhuw491e5DTE1Vf8h4SN+8bldQ+XcK6imS7eVqduond1uZjLNgFejQFWfd7x0KWldKqyy/9Ilwtlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^6.1.1", + "@graphql-codegen/visitor-plugin-common": "^6.2.4", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/introspection/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/plugin-helpers": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-6.2.0.tgz", + "integrity": "sha512-TKm0Q0+wRlg354Qt3PyXc+sy6dCKxmNofBsgmHoFZNVHtzMQSSgNT+rUWdwBwObQ9bFHiUVsDIv8QqxKMiKmpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^11.0.0", + "change-case-all": "1.0.15", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/plugin-helpers/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/schema-ast": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-5.0.1.tgz", + "integrity": "sha512-svLffXddnXxq1qFXQqqh+zYrxdiMnIKm+CXCUv0MYhLh0R4L5vpnaTzIUCk3icHNNXhKRm2uBD70+K8VY0xiCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^6.1.1", + "@graphql-tools/utils": "^11.0.0", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/schema-ast/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/typed-document-node": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-6.1.7.tgz", + "integrity": "sha512-VLL9hB+YPigc/W2QYCkSNMZrkKv42nTchb9mJ0h5VY98YmW/zWb6NeYM80iHSpk8ZvHsuUT5geA53/s1phO2NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^6.1.1", + "@graphql-codegen/visitor-plugin-common": "^6.2.4", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.15", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typed-document-node/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/typescript": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-5.0.9.tgz", + "integrity": "sha512-YlIZ4nqdFdzr5vxuNtQtZnnMYuZ5cLYB2HaGhGI2zvqHxCmkBjIRpu/5sfccawKy23wetV+aoWvoNqxGKIryig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^6.1.1", + "@graphql-codegen/schema-ast": "^5.0.1", + "@graphql-codegen/visitor-plugin-common": "^6.2.4", + "auto-bind": "~4.0.0", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-operations": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-5.0.9.tgz", + "integrity": "sha512-jJFdJKMS5Cqisb5QMi7xXHPsJH9yHBMYOxBc8laFkFjHk/AOqJK90qCKbO9lwwTMPZUDe6N/HslmA0ax4J0zsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^6.1.1", + "@graphql-codegen/typescript": "^5.0.9", + "@graphql-codegen/visitor-plugin-common": "^6.2.4", + "auto-bind": "~4.0.0", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", + "graphql-sock": "^1.0.0" + }, + "peerDependenciesMeta": { + "graphql-sock": { + "optional": true + } + } + }, + "node_modules/@graphql-codegen/typescript-operations/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/typescript/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/visitor-plugin-common": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-6.2.4.tgz", + "integrity": "sha512-iwiVCc7Mv8/XAa3K35AdFQ9chJSDv/gYEnBeQFF/Sq/W8EyJoHypOGOTTLk7OSrWO4xea65ggv0e7fGt7rPJjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^6.1.1", + "@graphql-tools/optimize": "^2.0.0", + "@graphql-tools/relay-operation-optimizer": "^7.1.1", + "@graphql-tools/utils": "^11.0.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.15", + "dependency-graph": "^1.0.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/visitor-plugin-common/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-hive/signal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@graphql-hive/signal/-/signal-2.0.0.tgz", + "integrity": "sha512-Pz8wB3K0iU6ae9S1fWfsmJX24CcGeTo6hE7T44ucmV/ALKRj+bxClmqrYcDT7v3f0d12Rh4FAXBb6gon+WkDpQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@graphql-tools/apollo-engine-loader": { + "version": "8.0.28", + "resolved": "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-8.0.28.tgz", + "integrity": "sha512-MzgDrUuoxp6dZeo54zLBL3cEJKJtM3N/2RqK0rbPxPq5X2z6TUA7EGg8vIFTUkt5xelAsUrm8/4ai41ZDdxOng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^11.0.0", + "@whatwg-node/fetch": "^0.10.13", + "sync-fetch": "0.6.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/batch-execute": { + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-10.0.7.tgz", + "integrity": "sha512-vKo9XUiy2sc5tzMupXoxZbu5afVY/9yJ0+yLrM5Dhh38yHYULf3z9VC1eAwW0kj8pWpOo8d8CV3jpleGwv83PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^11.0.0", + "@whatwg-node/promise-helpers": "^1.3.2", + "dataloader": "^2.2.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/batch-execute/node_modules/dataloader": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.3.tgz", + "integrity": "sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@graphql-tools/code-file-loader": { + "version": "8.1.28", + "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-8.1.28.tgz", + "integrity": "sha512-BL3Ft/PFlXDE5nNuqA36hYci7Cx+8bDrPDc8X3VSpZy9iKFBY+oQ+IwqnEHCkt8OSp2n2V0gqTg4u3fcQP1Kwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/graphql-tag-pluck": "8.3.27", + "@graphql-tools/utils": "^11.0.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/delegate": { + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-12.0.12.tgz", + "integrity": "sha512-/vgLWhIwm+Mgo5VUOJQj6EOpaxXRQmA7mk8j6/8vBbPi56LoYA/UPRygcpEnm9EuXTspFKCTBil+xqThU3EmqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/batch-execute": "^10.0.7", + "@graphql-tools/executor": "^1.4.13", + "@graphql-tools/schema": "^10.0.29", + "@graphql-tools/utils": "^11.0.0", + "@repeaterjs/repeater": "^3.0.6", + "@whatwg-node/promise-helpers": "^1.3.2", + "dataloader": "^2.2.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/delegate/node_modules/dataloader": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.3.tgz", + "integrity": "sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@graphql-tools/documents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/documents/-/documents-1.0.1.tgz", + "integrity": "sha512-aweoMH15wNJ8g7b2r4C4WRuJxZ0ca8HtNO54rkye/3duxTkW4fGBEutCx03jCIr5+a1l+4vFJNP859QnAVBVCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/executor": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor/-/executor-1.5.1.tgz", + "integrity": "sha512-n94Qcu875Mji9GQ52n5UbgOTxlgvFJicBPYD+FRks9HKIQpdNPjkkrKZUYNG51XKa+bf03rxNflm4+wXhoHHrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^11.0.0", + "@graphql-typed-document-node/core": "^3.2.0", + "@repeaterjs/repeater": "^3.0.4", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/promise-helpers": "^1.0.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/executor-common": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-common/-/executor-common-1.0.6.tgz", + "integrity": "sha512-23/K5C+LSlHDI0mj2SwCJ33RcELCcyDUgABm1Z8St7u/4Z5+95i925H/NAjUyggRjiaY8vYtNiMOPE49aPX1sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@envelop/core": "^5.4.0", + "@graphql-tools/utils": "^11.0.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/executor-graphql-ws": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-3.1.5.tgz", + "integrity": "sha512-WXRsfwu9AkrORD9nShrd61OwwxeQ5+eXYcABRR3XPONFIS8pWQfDJGGqxql9/227o/s0DV5SIfkBURb5Knzv+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/executor-common": "^1.0.6", + "@graphql-tools/utils": "^11.0.0", + "@whatwg-node/disposablestack": "^0.0.6", + "graphql-ws": "^6.0.6", + "isows": "^1.0.7", + "tslib": "^2.8.1", + "ws": "^8.18.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/executor-http": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-http/-/executor-http-3.1.1.tgz", + "integrity": "sha512-Le57fMdN7nGBp8XddkpGreCzcPGCZ+uHs1kPw/xMKPJMsn/vZUHbWJ0FY0cb0jfE3OVhbMIjjSe/OHlG3Mm3zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-hive/signal": "^2.0.0", + "@graphql-tools/executor-common": "^1.0.6", + "@graphql-tools/utils": "^11.0.0", + "@repeaterjs/repeater": "^3.0.4", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/fetch": "^0.10.13", + "@whatwg-node/promise-helpers": "^1.3.2", + "meros": "^1.3.2", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/executor-legacy-ws": { + "version": "1.1.25", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.1.25.tgz", + "integrity": "sha512-6uf4AEXO0QMxJ7AWKVPqEZXgYBJaiz5vf29X0boG8QtcqWy8mqkXKWLND2Swdx0SbEx0efoGFcjuKufUcB0ASQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^11.0.0", + "@types/ws": "^8.0.0", + "isomorphic-ws": "^5.0.0", + "tslib": "^2.4.0", + "ws": "^8.19.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/executor-legacy-ws/node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/@graphql-tools/git-loader": { + "version": "8.0.32", + "resolved": "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-8.0.32.tgz", + "integrity": "sha512-H5HTp2vevv0rRMEnCJBVmVF8md3LpJI1C1+d6OtzvmuONJ8mOX2mkf9rtoqwiztynVegaDUekvMFsc9k5iE2WA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/graphql-tag-pluck": "8.3.27", + "@graphql-tools/utils": "^11.0.0", + "is-glob": "4.0.3", + "micromatch": "^4.0.8", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/github-loader": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-9.0.6.tgz", + "integrity": "sha512-hhlt2MMkRcvDva/qyzqFddXzaMmRnriJ0Ts+/LcNeYnB8hcEqRMpF9RCsHYjo1mFRaiu8i4PSIpXyyFu3To7Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/executor-http": "^3.0.6", + "@graphql-tools/graphql-tag-pluck": "^8.3.27", + "@graphql-tools/utils": "^11.0.0", + "@whatwg-node/fetch": "^0.10.13", + "@whatwg-node/promise-helpers": "^1.0.0", + "sync-fetch": "0.6.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/graphql-file-loader": { + "version": "8.1.12", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-8.1.12.tgz", + "integrity": "sha512-Nma7gBgJoUbqXWTmdHjouo36tjzewA8MptVcHoH7widzkciaUVzBhriHzqICFB/dVxig//g9MX8s1XawZo7UAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/import": "^7.1.12", + "@graphql-tools/utils": "^11.0.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/graphql-tag-pluck": { + "version": "8.3.27", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-8.3.27.tgz", + "integrity": "sha512-CJ0WVXhGYsfFngpRrAAcjRHyxSDHx4dEz2W15bkwvt9he/AWhuyXm07wuGcoLrl0q0iQp1BiRjU7D8SxWZo3JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "@graphql-tools/utils": "^11.0.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/import": { + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-7.1.12.tgz", + "integrity": "sha512-QSsdPsdJ7yCgQ5XODyKYpC7NlB9R1Koi0R3418PT7GiRm+9O8gYXSs/23dumcOnpiLrnf4qR2aytBn1+JOAhnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^11.0.0", + "resolve-from": "5.0.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/json-file-loader": { + "version": "8.0.26", + "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-8.0.26.tgz", + "integrity": "sha512-kwy9IFi5QtXXTLBgWkvA1RqsZeJDn0CxsTbhNlziCzmga9fNo7qtZ18k9FYIq3EIoQQlok+b7W7yeyJATA2xhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^11.0.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/load": { + "version": "8.1.8", + "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-8.1.8.tgz", + "integrity": "sha512-gxO662b64qZSToK3N6XUxWG5E6HOUjlg5jEnmGvD4bMtGJ0HwEe/BaVZbBQemCfLkxYjwRIBiVfOY9o0JyjZJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/schema": "^10.0.31", + "@graphql-tools/utils": "^11.0.0", + "p-limit": "3.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/load/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@graphql-tools/load/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@graphql-tools/merge": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.1.7.tgz", + "integrity": "sha512-Y5E1vTbTabvcXbkakdFUt4zUIzB1fyaEnVmIWN0l0GMed2gdD01TpZWLUm4RNAxpturvolrb24oGLQrBbPLSoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^11.0.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/optimize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-2.0.0.tgz", + "integrity": "sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/relay-operation-optimizer": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-7.1.1.tgz", + "integrity": "sha512-va+ZieMlz6Fj18xUbwyQkZ34PsnzIdPT6Ccy1BNOQw1iclQwk52HejLMZeE/4fH+4cu80Q2HXi5+FjCKpmnJCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ardatan/relay-compiler": "^13.0.0", + "@graphql-tools/utils": "^11.0.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/schema": { + "version": "10.0.31", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.31.tgz", + "integrity": "sha512-ZewRgWhXef6weZ0WiP7/MV47HXiuFbFpiDUVLQl6mgXsWSsGELKFxQsyUCBos60Qqy1JEFAIu3Ns6GGYjGkqkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/merge": "^9.1.7", + "@graphql-tools/utils": "^11.0.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/url-loader": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-9.0.6.tgz", + "integrity": "sha512-QdJI3f7ANDMYfYazRgJzzybznjOrQAOuDXweC9xmKgPZoTqNxEAsatiy69zcpTf6092taJLyrqRH6R7xUTzf4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/executor-graphql-ws": "^3.1.2", + "@graphql-tools/executor-http": "^3.0.6", + "@graphql-tools/executor-legacy-ws": "^1.1.25", + "@graphql-tools/utils": "^11.0.0", + "@graphql-tools/wrap": "^11.1.1", + "@types/ws": "^8.0.0", + "@whatwg-node/fetch": "^0.10.13", + "@whatwg-node/promise-helpers": "^1.0.0", + "isomorphic-ws": "^5.0.0", + "sync-fetch": "0.6.0", + "tslib": "^2.4.0", + "ws": "^8.19.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/url-loader/node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/@graphql-tools/utils": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.0.0.tgz", + "integrity": "sha512-bM1HeZdXA2C3LSIeLOnH/bcqSgbQgKEDrjxODjqi3y58xai2TkNrtYcQSoWzGbt9VMN1dORGjR7Vem8SPnUFQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/wrap": { + "version": "11.1.12", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-11.1.12.tgz", + "integrity": "sha512-PJ0tuiGbEOOZAJk2/pTKyzMEbwBncPBfO7Z84tCPzM/CAR4ZlAXbXjaXOw4fdi0ReUDyOG06Z8DGgEQjr68dKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/delegate": "^12.0.12", + "@graphql-tools/schema": "^10.0.29", + "@graphql-tools/utils": "^11.0.0", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@hookform/resolvers": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.9.1.tgz", + "integrity": "sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==", + "license": "MIT", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/momoa": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.4.tgz", + "integrity": "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", "cpu": [ "s390x" @@ -7171,188 +7980,563 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@inquirer/core/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" }, - "funding": { - "url": "https://opencollective.com/libvips" + "peerDependencies": { + "@types/node": ">=18" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.2.4" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", - "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", - "cpu": [ - "s390x" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=18" }, - "funding": { - "url": "https://opencollective.com/libvips" + "peerDependencies": { + "@types/node": ">=18" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.4" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", - "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=18" }, - "funding": { - "url": "https://opencollective.com/libvips" + "peerDependencies": { + "@types/node": ">=18" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.4" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", - "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "dev": true, + "license": "MIT", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">=18" }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", - "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=18" }, - "funding": { - "url": "https://opencollective.com/libvips" + "peerDependencies": { + "@types/node": ">=18" }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", - "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "dev": true, + "license": "MIT", "dependencies": { - "@emnapi/runtime": "^1.7.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=18" }, - "funding": { - "url": "https://opencollective.com/libvips" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", - "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=18" }, - "funding": { - "url": "https://opencollective.com/libvips" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", - "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=18" }, - "funding": { - "url": "https://opencollective.com/libvips" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", - "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=18" }, - "funding": { - "url": "https://opencollective.com/libvips" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "dev": true, "license": "MIT", "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -8987,9 +10171,9 @@ } }, "node_modules/@nanostores/persistent": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@nanostores/persistent/-/persistent-1.2.0.tgz", - "integrity": "sha512-kf5WOLpVI9Pk+AwXHIax4in3pesNe8299BEGQ2H8kgI05SZw7KKWCDv7bt2FOlND8E5y7rO5PRW34q0UCAl/DA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@nanostores/persistent/-/persistent-1.3.3.tgz", + "integrity": "sha512-+b4I8xrmjhKE3hQ9V7/b4Xa+MBMkM2P4Ulv33zFEF/+2Hucsb24vTjYiWR8R97y8YdRptmRKlL5Qwy0q1Jj5nQ==", "funding": [ { "type": "github", @@ -9043,24 +10227,27 @@ } }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", - "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@emnapi/core": "^1.5.0", - "@emnapi/runtime": "^1.5.0", + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" } }, "node_modules/@next/env": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.33.tgz", - "integrity": "sha512-CgVHNZ1fRIlxkLhIX22flAZI/HmpDaZ8vwyJ/B0SDPTBuLZ1PJ+DWMjCHhqnExfmSQzA/PbZi8OAc7PAq2w9IA==", - "license": "MIT", - "peer": true + "version": "14.2.35", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.35.tgz", + "integrity": "sha512-DuhvCtj4t9Gwrx80dmz2F4t/zKQ4ktN8WrMwOuVzkJfBilwAwGr6v16M5eI8yCuZ63H9TTuEU09Iu2HqkzFPVQ==", + "license": "MIT" }, "node_modules/@next/swc-darwin-arm64": { "version": "14.2.33", @@ -9074,7 +10261,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">= 10" } @@ -9091,7 +10277,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">= 10" } @@ -9108,7 +10293,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 10" } @@ -9125,7 +10309,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 10" } @@ -9142,7 +10325,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 10" } @@ -9159,7 +10341,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 10" } @@ -9176,7 +10357,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">= 10" } @@ -9193,7 +10373,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">= 10" } @@ -9210,7 +10389,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">= 10" } @@ -9299,19 +10477,10 @@ "integrity": "sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==", "license": "MIT" }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/@openzeppelin/contracts": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.4.0.tgz", - "integrity": "sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.6.1.tgz", + "integrity": "sha512-Ly6SlsVJ3mj+b18W3R8gNufB7dTICT105fJhodGAGgyC2oqnBAhqSiNDJ8V8DLY05cCz81GLI0CU5vNYA1EC/w==", "license": "MIT" }, "node_modules/@openzeppelin/contracts-4.7.3": { @@ -9362,9 +10531,9 @@ "license": "MIT" }, "node_modules/@oxc-resolver/binding-android-arm-eabi": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.14.0.tgz", - "integrity": "sha512-jB47iZ/thvhE+USCLv+XY3IknBbkKr/p7OBsQDTHode/GPw+OHRlit3NQ1bjt1Mj8V2CS7iHdSDYobZ1/0gagQ==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.19.1.tgz", + "integrity": "sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg==", "cpu": [ "arm" ], @@ -9376,9 +10545,9 @@ ] }, "node_modules/@oxc-resolver/binding-android-arm64": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.14.0.tgz", - "integrity": "sha512-XFJ9t7d/Cz+dWLyqtTy3Xrekz+qqN4hmOU2iOUgr7u71OQsPUHIIeS9/wKanEK0l413gPwapIkyc5x9ltlOtyw==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.19.1.tgz", + "integrity": "sha512-oolbkRX+m7Pq2LNjr/kKgYeC7bRDMVTWPgxBGMjSpZi/+UskVo4jsMU3MLheZV55jL6c3rNelPl4oD60ggYmqA==", "cpu": [ "arm64" ], @@ -9390,9 +10559,9 @@ ] }, "node_modules/@oxc-resolver/binding-darwin-arm64": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.14.0.tgz", - "integrity": "sha512-gwehBS9smA1mzK8frDsmUCHz+6baJVwkKF6qViHhoqA3kRKvIZ3k6WNP4JmF19JhOiGxRcoPa8gZRfzNgXwP2A==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.19.1.tgz", + "integrity": "sha512-nUC6d2i3R5B12sUW4O646qD5cnMXf2oBGPLIIeaRfU9doJRORAbE2SGv4eW6rMqhD+G7nf2Y8TTJTLiiO3Q/dQ==", "cpu": [ "arm64" ], @@ -9404,9 +10573,9 @@ ] }, "node_modules/@oxc-resolver/binding-darwin-x64": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.14.0.tgz", - "integrity": "sha512-5wwJvfuoahKiAqqAsMLOI28rqdh3P2K7HkjIWUXNMWAZq6ErX0L5rwJzu6T32+Zxw3k18C7R9IS4wDq/3Ar+6w==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.19.1.tgz", + "integrity": "sha512-cV50vE5+uAgNcFa3QY1JOeKDSkM/9ReIcc/9wn4TavhW/itkDGrXhw9jaKnkQnGbjJ198Yh5nbX/Gr2mr4Z5jQ==", "cpu": [ "x64" ], @@ -9418,9 +10587,9 @@ ] }, "node_modules/@oxc-resolver/binding-freebsd-x64": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.14.0.tgz", - "integrity": "sha512-MWTt+LOQNcQ6fa+Uu5VikkihLi1PSIrQqqp0QD44k2AORasNWl0jRGBTcMSBIgNe82qEQWYvlGzvOEEOBp01Og==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.19.1.tgz", + "integrity": "sha512-xZOQiYGFxtk48PBKff+Zwoym7ScPAIVp4c14lfLxizO2LTTTJe5sx9vQNGrBymrf/vatSPNMD4FgsaaRigPkqw==", "cpu": [ "x64" ], @@ -9432,9 +10601,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.14.0.tgz", - "integrity": "sha512-b6/IBqYrS3o0XiLVBsnex/wK8pTTK+hbGfAMOHVU6p7DBpwPPLgC/tav4IXoOIUCssTFz7aWh/xtUok0swn8VQ==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.19.1.tgz", + "integrity": "sha512-lXZYWAC6kaGe/ky2su94e9jN9t6M0/6c+GrSlCqL//XO1cxi5lpAhnJYdyrKfm0ZEr/c7RNyAx3P7FSBcBd5+A==", "cpu": [ "arm" ], @@ -9446,9 +10615,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.14.0.tgz", - "integrity": "sha512-o2Qh5+y5YoqVK6YfzkalHdpmQ5bkbGGxuLg1pZLQ1Ift0x+Vix7DaFEpdCl5Z9xvYXogd/TwOlL0TPl4+MTFLA==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.19.1.tgz", + "integrity": "sha512-veG1kKsuK5+t2IsO9q0DErYVSw2azvCVvWHnfTOS73WE0STdLLB7Q1bB9WR+yHPQM76ASkFyRbogWo1GR1+WbQ==", "cpu": [ "arm" ], @@ -9460,9 +10629,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.14.0.tgz", - "integrity": "sha512-lk8mCSg0Tg4sEG73RiPjb7keGcEPwqQnBHX3Z+BR2SWe+qNHpoHcyFMNafzSvEC18vlxC04AUSoa6kJl/C5zig==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.19.1.tgz", + "integrity": "sha512-heV2+jmXyYnUrpUXSPugqWDRpnsQcDm2AX4wzTuvgdlZfoNYO0O3W2AVpJYaDn9AG4JdM6Kxom8+foE7/BcSig==", "cpu": [ "arm64" ], @@ -9474,9 +10643,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-arm64-musl": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.14.0.tgz", - "integrity": "sha512-KykeIVhCM7pn93ABa0fNe8vk4XvnbfZMELne2s6P9tdJH9KMBsCFBi7a2BmSdUtTqWCAJokAcm46lpczU52Xaw==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.19.1.tgz", + "integrity": "sha512-jvo2Pjs1c9KPxMuMPIeQsgu0mOJF9rEb3y3TdpsrqwxRM+AN6/nDDwv45n5ZrUnQMsdBy5gIabioMKnQfWo9ew==", "cpu": [ "arm64" ], @@ -9488,9 +10657,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.14.0.tgz", - "integrity": "sha512-QqPPWAcZU/jHAuam4f3zV8OdEkYRPD2XR0peVet3hoMMgsihR3Lhe7J/bLclmod297FG0+OgBYQVMh2nTN6oWA==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.19.1.tgz", + "integrity": "sha512-vLmdNxWCdN7Uo5suays6A/+ywBby2PWBBPXctWPg5V0+eVuzsJxgAn6MMB4mPlshskYbppjpN2Zg83ArHze9gQ==", "cpu": [ "ppc64" ], @@ -9502,9 +10671,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.14.0.tgz", - "integrity": "sha512-DunWA+wafeG3hj1NADUD3c+DRvmyVNqF5LSHVUWA2bzswqmuEZXl3VYBSzxfD0j+UnRTFYLxf27AMptoMsepYg==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.19.1.tgz", + "integrity": "sha512-/b+WgR+VTSBxzgOhDO7TlMXC1ufPIMR6Vj1zN+/x+MnyXGW7prTLzU9eW85Aj7Th7CCEG9ArCbTeqxCzFWdg2w==", "cpu": [ "riscv64" ], @@ -9516,9 +10685,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-riscv64-musl": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.14.0.tgz", - "integrity": "sha512-4SRvwKTTk2k67EQr9Ny4NGf/BhlwggCI1CXwBbA9IV4oP38DH8b+NAPxDY0ySGRsWbPkG92FYOqM4AWzG4GSgA==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.19.1.tgz", + "integrity": "sha512-YlRdeWb9j42p29ROh+h4eg/OQ3dTJlpHSa+84pUM9+p6i3djtPz1q55yLJhgW9XfDch7FN1pQ/Vd6YP+xfRIuw==", "cpu": [ "riscv64" ], @@ -9530,9 +10699,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-s390x-gnu": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.14.0.tgz", - "integrity": "sha512-hZKvkbsurj4JOom//R1Ab2MlC4cGeVm5zzMt4IsS3XySQeYjyMJ5TDZ3J5rQ8bVj3xi4FpJU2yFZ72GApsHQ6A==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.19.1.tgz", + "integrity": "sha512-EDpafVOQWF8/MJynsjOGFThcqhRHy417sRyLfQmeiamJ8qVhSKAn2Dn2VVKUGCjVB9C46VGjhNo7nOPUi1x6uA==", "cpu": [ "s390x" ], @@ -9544,9 +10713,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-x64-gnu": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.14.0.tgz", - "integrity": "sha512-hABxQXFXJurivw+0amFdeEcK67cF1BGBIN1+sSHzq3TRv4RoG8n5q2JE04Le2n2Kpt6xg4Y5+lcv+rb2mCJLgQ==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.19.1.tgz", + "integrity": "sha512-NxjZe+rqWhr+RT8/Ik+5ptA3oz7tUw361Wa5RWQXKnfqwSSHdHyrw6IdcTfYuml9dM856AlKWZIUXDmA9kkiBQ==", "cpu": [ "x64" ], @@ -9558,9 +10727,9 @@ ] }, "node_modules/@oxc-resolver/binding-linux-x64-musl": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.14.0.tgz", - "integrity": "sha512-Ln73wUB5migZRvC7obAAdqVwvFvk7AUs2JLt4g9QHr8FnqivlsjpUC9Nf2ssrybdjyQzEMjttUxPZz6aKPSAHw==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.19.1.tgz", + "integrity": "sha512-cM/hQwsO3ReJg5kR+SpI69DMfvNCp+A/eVR4b4YClE5bVZwz8rh2Nh05InhwI5HR/9cArbEkzMjcKgTHS6UaNw==", "cpu": [ "x64" ], @@ -9571,10 +10740,24 @@ "linux" ] }, + "node_modules/@oxc-resolver/binding-openharmony-arm64": { + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.19.1.tgz", + "integrity": "sha512-QF080IowFB0+9Rh6RcD19bdgh49BpQHUW5TajG1qvWHvmrQznTZZjYlgE2ltLXyKY+qs4F/v5xuX1XS7Is+3qA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, "node_modules/@oxc-resolver/binding-wasm32-wasi": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.14.0.tgz", - "integrity": "sha512-z+NbELmCOKNtWOqEB5qDfHXOSWB3kGQIIehq6nHtZwHLzdVO2oBq6De/ayhY3ygriC1XhgaIzzniY7jgrNl4Kw==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.19.1.tgz", + "integrity": "sha512-w8UCKhX826cP/ZLokXDS6+milN8y4X7zidsAttEdWlVoamTNf6lhBJldaWr3ukTDiye7s4HRcuPEPOXNC432Vg==", "cpu": [ "wasm32" ], @@ -9582,16 +10765,16 @@ "license": "MIT", "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^1.0.7" + "@napi-rs/wasm-runtime": "^1.1.1" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.14.0.tgz", - "integrity": "sha512-Ft0+qd7HSO61qCTLJ4LCdBGZkpKyDj1rG0OVSZL1DxWQoh97m7vEHd7zAvUtw8EcWjOMBQuX4mfRap/x2MOCpQ==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.19.1.tgz", + "integrity": "sha512-nJ4AsUVZrVKwnU/QRdzPCCrO0TrabBqgJ8pJhXITdZGYOV28TIYystV1VFLbQ7DtAcaBHpocT5/ZJnF78YJPtQ==", "cpu": [ "arm64" ], @@ -9603,9 +10786,9 @@ ] }, "node_modules/@oxc-resolver/binding-win32-ia32-msvc": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.14.0.tgz", - "integrity": "sha512-o54jYNSfGdPxHSvXEhZg8FOV3K99mJ1f7hb1alRFb+Yec1GQXNrJXxZPIxNMYeFT13kwAWB7zuQ0HZLnDHFxfw==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-11.19.1.tgz", + "integrity": "sha512-EW+ND5q2Tl+a3pH81l1QbfgbF3HmqgwLfDfVithRFheac8OTcnbXt/JxqD2GbDkb7xYEqy1zNaVFRr3oeG8npA==", "cpu": [ "ia32" ], @@ -9617,9 +10800,9 @@ ] }, "node_modules/@oxc-resolver/binding-win32-x64-msvc": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.14.0.tgz", - "integrity": "sha512-j97icaORyM6A7GjgmUzfn7V+KGzVvctRA+eAlJb0c2OQNaETFxl6BXZdnGBDb+6oA0Y4Sr/wnekd1kQ0aVyKGg==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.19.1.tgz", + "integrity": "sha512-6hIU3RQu45B+VNTY4Ru8ppFwjVS/S5qwYyGhBotmjxfEKk41I2DlGtRfGJndZ5+6lneE2pwloqunlOyZuX/XAw==", "cpu": [ "x64" ], @@ -9788,18 +10971,6 @@ "vite": ">=2.0.0" } }, - "node_modules/@prettier/sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@prettier/sync/-/sync-0.3.0.tgz", - "integrity": "sha512-3dcmCyAxIcxy036h1I7MQU/uEEBq8oLwf1CE3xeze+MPlgkdlb/+w6rGR/1dhp6Hqi17fRS6nvwnOzkESxEkOw==", - "dev": true, - "funding": { - "url": "https://github.com/prettier/prettier-synchronized?sponsor=1" - }, - "peerDependencies": { - "prettier": "^3.0.0" - } - }, "node_modules/@project-serum/anchor": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/@project-serum/anchor/-/anchor-0.26.0.tgz", @@ -12007,12 +13178,12 @@ } }, "node_modules/@radix-ui/react-select/node_modules/@floating-ui/react-dom": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", - "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", "license": "MIT", "dependencies": { - "@floating-ui/dom": "^1.7.4" + "@floating-ui/dom": "^1.7.6" }, "peerDependencies": { "react": ">=16.8.0", @@ -14083,6 +15254,13 @@ "license": "MIT", "peer": true }, + "node_modules/@repeaterjs/repeater": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.6.tgz", + "integrity": "sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==", + "dev": true, + "license": "MIT" + }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.27", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", @@ -14571,60 +15749,60 @@ } }, "node_modules/@shikijs/core": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.15.0.tgz", - "integrity": "sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.21.0.tgz", + "integrity": "sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.15.0", + "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "node_modules/@shikijs/engine-javascript": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.15.0.tgz", - "integrity": "sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.21.0.tgz", + "integrity": "sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.15.0", + "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.3" + "oniguruma-to-es": "^4.3.4" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.15.0.tgz", - "integrity": "sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.21.0.tgz", + "integrity": "sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.15.0", + "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.15.0.tgz", - "integrity": "sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.21.0.tgz", + "integrity": "sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.15.0" + "@shikijs/types": "3.21.0" } }, "node_modules/@shikijs/themes": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.15.0.tgz", - "integrity": "sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.21.0.tgz", + "integrity": "sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.15.0" + "@shikijs/types": "3.21.0" } }, "node_modules/@shikijs/types": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.15.0.tgz", - "integrity": "sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.21.0.tgz", + "integrity": "sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==", "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", @@ -15291,10 +16469,157 @@ "react-native": "^0.0.0-0 || >=0.60 <1.0" } }, + "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/@react-native/assets-registry": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", + "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/@react-native/codegen": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", + "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", + "glob": "^7.1.1", + "hermes-parser": "0.32.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/@react-native/community-cli-plugin": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", + "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@react-native/dev-middleware": "0.83.1", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "metro": "^0.83.3", + "metro-config": "^0.83.3", + "metro-core": "^0.83.3", + "semver": "^7.1.3" + }, + "engines": { + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@react-native-community/cli": "*", + "@react-native/metro-config": "*" + }, + "peerDependenciesMeta": { + "@react-native-community/cli": { + "optional": true + }, + "@react-native/metro-config": { + "optional": true + } + } + }, + "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/@react-native/debugger-frontend": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", + "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", + "license": "BSD-3-Clause", + "optional": true, + "peer": true, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/@react-native/debugger-shell": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", + "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.6", + "fb-dotslash": "0.5.8" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/@react-native/dev-middleware": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", + "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.83.1", + "@react-native/debugger-shell": "0.83.1", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^7.5.10" + }, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/@react-native/gradle-plugin": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", + "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/@react-native/js-polyfills": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", + "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 20.19.4" + } + }, + "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/@react-native/normalize-colors": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", + "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/@react-native/virtualized-lists": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.82.1.tgz", - "integrity": "sha512-f5zpJg9gzh7JtCbsIwV+4kP3eI0QBuA93JGmwFRd4onQ3DnCjV2J5pYqdWtM95sjSKK1dyik59Gj01lLeKqs1Q==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", + "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", "license": "MIT", "optional": true, "peer": true, @@ -15306,7 +16631,7 @@ "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "^19.1.1", + "@types/react": "^19.2.0", "react": "*", "react-native": "*" }, @@ -15426,6 +16751,14 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/hermes-compiler": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", + "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/istanbul-lib-instrument": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", @@ -15530,9 +16863,9 @@ } }, "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/react": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", - "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", "optional": true, "peer": true, @@ -15541,21 +16874,21 @@ } }, "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/react-native": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.82.1.tgz", - "integrity": "sha512-tFAqcU7Z4g49xf/KnyCEzI4nRTu1Opcx05Ov2helr8ZTg1z7AJR/3sr2rZ+AAVlAs2IXk+B0WOxXGmdD3+4czA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.83.1.tgz", + "integrity": "sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==", "license": "MIT", "optional": true, "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.82.1", - "@react-native/codegen": "0.82.1", - "@react-native/community-cli-plugin": "0.82.1", - "@react-native/gradle-plugin": "0.82.1", - "@react-native/js-polyfills": "0.82.1", - "@react-native/normalize-colors": "0.82.1", - "@react-native/virtualized-lists": "0.82.1", + "@react-native/assets-registry": "0.83.1", + "@react-native/codegen": "0.83.1", + "@react-native/community-cli-plugin": "0.83.1", + "@react-native/gradle-plugin": "0.83.1", + "@react-native/js-polyfills": "0.83.1", + "@react-native/normalize-colors": "0.83.1", + "@react-native/virtualized-lists": "0.83.1", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -15565,23 +16898,23 @@ "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", "glob": "^7.1.1", - "hermes-compiler": "0.0.0", + "hermes-compiler": "0.14.0", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", - "metro-runtime": "^0.83.1", - "metro-source-map": "^0.83.1", + "metro-runtime": "^0.83.3", + "metro-source-map": "^0.83.3", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", "react-devtools-core": "^6.1.5", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", - "scheduler": "0.26.0", + "scheduler": "0.27.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", "whatwg-fetch": "^3.0.0", - "ws": "^6.2.3", + "ws": "^7.5.10", "yargs": "^17.6.2" }, "bin": { @@ -15592,7 +16925,7 @@ }, "peerDependencies": { "@types/react": "^19.1.1", - "react": "^19.1.1" + "react": "^19.2.0" }, "peerDependenciesMeta": { "@types/react": { @@ -15612,9 +16945,9 @@ } }, "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT", "optional": true, "peer": true @@ -15674,14 +17007,26 @@ } }, "node_modules/@solana-mobile/wallet-adapter-mobile/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", "optional": true, "peer": true, - "dependencies": { - "async-limiter": "~1.0.0" + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/@solana-mobile/wallet-standard-mobile": { @@ -16244,9 +17589,9 @@ } }, "node_modules/@solana-program/compute-budget": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@solana-program/compute-budget/-/compute-budget-0.11.0.tgz", - "integrity": "sha512-7f1ePqB/eURkTwTOO9TNIdUXZcyrZoX3Uy2hNo7cXMfNhPFWp9AVgIyRNBc2jf15sdUa9gNpW+PfP2iV8AYAaw==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@solana-program/compute-budget/-/compute-budget-0.12.0.tgz", + "integrity": "sha512-ysHNVfctUyuY9+mHzJqt97en9ly2quR4n1pvJMQjYf4olwoCqB7+E9b+XZmlj91lFQuAs5z48aw5qDekg78DbQ==", "license": "Apache-2.0", "peerDependencies": { "@solana/kit": "^5.0" @@ -16271,9 +17616,9 @@ } }, "node_modules/@solana-program/token-2022": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@solana-program/token-2022/-/token-2022-0.6.1.tgz", - "integrity": "sha512-Ex02cruDMGfBMvZZCrggVR45vdQQSI/unHVpt/7HPt/IwFYB4eTlXtO8otYZyqV/ce5GqZ8S6uwyRf0zy6fdbA==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@solana-program/token-2022/-/token-2022-0.8.0.tgz", + "integrity": "sha512-2K/eJjGJQ1LPTCdbytfleTcwyZBjojPIzu/vsvTxixwRxCgsEMvu+gNjvfxo/mi2liRHp0xsm2MR4XQJTM2OVQ==", "license": "Apache-2.0", "peerDependencies": { "@solana/kit": "^5.0", @@ -16281,57 +17626,72 @@ } }, "node_modules/@solana/accounts": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/accounts/-/accounts-5.0.0.tgz", - "integrity": "sha512-0JzBdEobgp8NBdhhu+GgwNDh7e8KkHDsSTVZAnNQgvT3taOz0Mwv5E48MuEeDhW6DLFwWVAx/FO3pvibG/NGwA==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/accounts/-/accounts-5.5.1.tgz", + "integrity": "sha512-TfOY9xixg5rizABuLVuZ9XI2x2tmWUC/OoN556xwfDlhBHBjKfszicYYOyD6nbFmwTGYarCmyGIdteXxTXIdhQ==", "license": "MIT", "dependencies": { - "@solana/addresses": "5.0.0", - "@solana/codecs-core": "5.0.0", - "@solana/codecs-strings": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/rpc-spec": "5.0.0", - "@solana/rpc-types": "5.0.0" + "@solana/addresses": "5.5.1", + "@solana/codecs-core": "5.5.1", + "@solana/codecs-strings": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/rpc-spec": "5.5.1", + "@solana/rpc-types": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/addresses": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/addresses/-/addresses-5.0.0.tgz", - "integrity": "sha512-bVk+khc1ZZQHMri25csosM/ikuyPcB/CZidDM/ZMBX0CoJErpHJnmcID5mYOmv4/UHbqo2OANuEaGcFO0Q37sw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/addresses/-/addresses-5.5.1.tgz", + "integrity": "sha512-5xoah3Q9G30HQghu/9BiHLb5pzlPKRC3zydQDmE3O9H//WfayxTFppsUDCL6FjYUHqj/wzK6CWHySglc2RkpdA==", "license": "MIT", "dependencies": { - "@solana/assertions": "5.0.0", - "@solana/codecs-core": "5.0.0", - "@solana/codecs-strings": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/nominal-types": "5.0.0" + "@solana/assertions": "5.5.1", + "@solana/codecs-core": "5.5.1", + "@solana/codecs-strings": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/nominal-types": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/assertions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/assertions/-/assertions-5.0.0.tgz", - "integrity": "sha512-2kIykk90kYciQW6bp+KaE6jRd1Y2CgHPeJxxlc5chQnjhoG6eiD8VXvocs6AvqPTht0p/SoEj9jH5tT4oG/bcg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/assertions/-/assertions-5.5.1.tgz", + "integrity": "sha512-YTCSWAlGwSlVPnWtWLm3ukz81wH4j2YaCveK+TjpvUU88hTy6fmUqxi0+hvAMAe4zKXpJyj3Az7BrLJRxbIm4Q==", "license": "MIT", "dependencies": { - "@solana/errors": "5.0.0" + "@solana/errors": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/buffer-layout": { @@ -16347,98 +17707,126 @@ } }, "node_modules/@solana/codecs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-5.0.0.tgz", - "integrity": "sha512-KOw0gFUSBxIMDWLJ3AkVFkEci91dw0Rpx3C6y83Our7fSW+SEP8vRZklCElieYR85LHVB1QIEhoeHR7rc+Ifkw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-5.5.1.tgz", + "integrity": "sha512-Vea29nJub/bXjfzEV7ZZQ/PWr1pYLZo3z0qW0LQL37uKKVzVFRQlwetd7INk3YtTD3xm9WUYr7bCvYUk3uKy2g==", "license": "MIT", "dependencies": { - "@solana/codecs-core": "5.0.0", - "@solana/codecs-data-structures": "5.0.0", - "@solana/codecs-numbers": "5.0.0", - "@solana/codecs-strings": "5.0.0", - "@solana/options": "5.0.0" + "@solana/codecs-core": "5.5.1", + "@solana/codecs-data-structures": "5.5.1", + "@solana/codecs-numbers": "5.5.1", + "@solana/codecs-strings": "5.5.1", + "@solana/options": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/codecs-core": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-5.0.0.tgz", - "integrity": "sha512-rCG2d8OaamVF2/J//YyCgDqNJpUytVVltw9C8mJtEz5c6Se/LR6BFuG8g4xeJswq/ab4RFk5/HFdgbvNjKgQjA==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-5.5.1.tgz", + "integrity": "sha512-TgBt//bbKBct0t6/MpA8ElaOA3sa8eYVvR7LGslCZ84WiAwwjCY0lW/lOYsFHJQzwREMdUyuEyy5YWBKtdh8Rw==", "license": "MIT", "dependencies": { - "@solana/errors": "5.0.0" + "@solana/errors": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/codecs-data-structures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-5.0.0.tgz", - "integrity": "sha512-y503Pqmv0LHcfcf0vQJGaxDvydQJbyCo8nK3nxn56EhFj5lBQ1NWb3WvTd83epigwuZurW2MhJARrpikfhQglQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-5.5.1.tgz", + "integrity": "sha512-97bJWGyUY9WvBz3mX1UV3YPWGDTez6btCfD0ip3UVEXJbItVuUiOkzcO5iFDUtQT5riKT6xC+Mzl+0nO76gd0w==", "license": "MIT", "dependencies": { - "@solana/codecs-core": "5.0.0", - "@solana/codecs-numbers": "5.0.0", - "@solana/errors": "5.0.0" + "@solana/codecs-core": "5.5.1", + "@solana/codecs-numbers": "5.5.1", + "@solana/errors": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/codecs-numbers": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-5.0.0.tgz", - "integrity": "sha512-a2+skRLuUK02f/XFe4L0e1+wHCyfK25PkyseFps1v1l4pvevukFwth/EhSyrs6w5CsTJRVoR7MuE3E00PM4egw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-5.5.1.tgz", + "integrity": "sha512-rllMIZAHqmtvC0HO/dc/21wDuWaD0B8Ryv8o+YtsICQBuiL/0U4AGwH7Pi5GNFySYk0/crSuwfIqQFtmxNSPFw==", "license": "MIT", "dependencies": { - "@solana/codecs-core": "5.0.0", - "@solana/errors": "5.0.0" + "@solana/codecs-core": "5.5.1", + "@solana/errors": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/codecs-strings": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-5.0.0.tgz", - "integrity": "sha512-ALkRwpV8bGR6qjAYw0YXZwp2YI4wzvKOJGmx04Ut8gMdbaUx7qOcJkhEQKI6ZVC3lAWSIS1N1wGccUZDwvfKxw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-5.5.1.tgz", + "integrity": "sha512-7klX4AhfHYA+uKKC/nxRGP2MntbYQCR3N6+v7bk1W/rSxYuhNmt+FN8aoThSZtWIKwN6BEyR1167ka8Co1+E7A==", "license": "MIT", "dependencies": { - "@solana/codecs-core": "5.0.0", - "@solana/codecs-numbers": "5.0.0", - "@solana/errors": "5.0.0" + "@solana/codecs-core": "5.5.1", + "@solana/codecs-numbers": "5.5.1", + "@solana/errors": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { "fastestsmallesttextencoderdecoder": "^1.0.22", - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "fastestsmallesttextencoderdecoder": { + "optional": true + }, + "typescript": { + "optional": true + } } }, "node_modules/@solana/errors": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-5.0.0.tgz", - "integrity": "sha512-gTuhzO6E+ydfAAzqmqdPcvFyJwAzFKKIrqtnZPpgAuomcPYu+HSo0tuwSM/cTX0djmHt+GoOsf/julph+nvs2w==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-5.5.1.tgz", + "integrity": "sha512-vFO3p+S7HoyyrcAectnXbdsMfwUzY2zYFUc2DEe5BwpiE9J1IAxPBGjOWO6hL1bbYdBrlmjNx8DXCslqS+Kcmg==", "license": "MIT", "dependencies": { "chalk": "5.6.2", - "commander": "14.0.1" + "commander": "14.0.2" }, "bin": { "errors": "bin/cli.mjs" @@ -16447,7 +17835,12 @@ "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/errors/node_modules/chalk": { @@ -16462,192 +17855,300 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@solana/errors/node_modules/commander": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", + "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", + "license": "MIT", + "engines": { + "node": ">=20" + } + }, "node_modules/@solana/fast-stable-stringify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/fast-stable-stringify/-/fast-stable-stringify-5.0.0.tgz", - "integrity": "sha512-sGTbu7a4/olL+8EIOOJ7IZjzqOOpCJcK1UaVJ6015sRgo9vwGf4jg9KtXEYv5LVhLCTYmAb50L4BaIUcBph/Ig==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/fast-stable-stringify/-/fast-stable-stringify-5.5.1.tgz", + "integrity": "sha512-Ni7s2FN33zTzhTFgRjEbOVFO+UAmK8qi3Iu0/GRFYK4jN696OjKHnboSQH/EacQ+yGqS54bfxf409wU5dsLLCw==", "license": "MIT", "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/functional": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/functional/-/functional-5.0.0.tgz", - "integrity": "sha512-UNBrpfzBL4dKD2iucjNnrkFbnjz5ZYDu2OvrIBAcCSQsxxgHMamUj1n3EDe6kl1us49YG1r05Ho8QLqNrbkVbw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/functional/-/functional-5.5.1.tgz", + "integrity": "sha512-tTHoJcEQq3gQx5qsdsDJ0LEJeFzwNpXD80xApW9o/PPoCNimI3SALkZl+zNW8VnxRrV3l3yYvfHWBKe/X3WG3w==", "license": "MIT", "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/instruction-plans": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/instruction-plans/-/instruction-plans-5.0.0.tgz", - "integrity": "sha512-n9oFOMFUPYKEhsXzrXT97QBQ2WvOTar+5SFEj/IOtRuCn4gl2kh0369cjXZpFwUdE3tmKr1zfYFNwbtiNx5pvg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/instruction-plans/-/instruction-plans-5.5.1.tgz", + "integrity": "sha512-7z3CB7YMcFKuVvgcnNY8bY6IsZ8LG61Iytbz7HpNVGX2u1RthOs1tRW8luTzSG1MPL0Ox7afyAVMYeFqSPHnaQ==", "license": "MIT", "dependencies": { - "@solana/errors": "5.0.0", - "@solana/instructions": "5.0.0", - "@solana/promises": "5.0.0", - "@solana/transaction-messages": "5.0.0", - "@solana/transactions": "5.0.0" + "@solana/errors": "5.5.1", + "@solana/instructions": "5.5.1", + "@solana/keys": "5.5.1", + "@solana/promises": "5.5.1", + "@solana/transaction-messages": "5.5.1", + "@solana/transactions": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/instructions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/instructions/-/instructions-5.0.0.tgz", - "integrity": "sha512-12dbrmwERT1o6NTr/Uvrjj/ZsiteSXoT5Gi+dnjIeRNHWg9H+gEFuFzJvTDVKlNg34CZ71xdvbVdbV0V8gKGvg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/instructions/-/instructions-5.5.1.tgz", + "integrity": "sha512-h0G1CG6S+gUUSt0eo6rOtsaXRBwCq1+Js2a+Ps9Bzk9q7YHNFA75/X0NWugWLgC92waRp66hrjMTiYYnLBoWOQ==", "license": "MIT", "dependencies": { - "@solana/codecs-core": "5.0.0", - "@solana/errors": "5.0.0" + "@solana/codecs-core": "5.5.1", + "@solana/errors": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/keys": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/keys/-/keys-5.0.0.tgz", - "integrity": "sha512-kWkR7NslpTttk5i1BhBNCDtVQDkEtgkdsM3Jp9TGPk0GFjBjBwrQStw3vvwLe8itEIvRFGFZU6JHEk8HLS0WLQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/keys/-/keys-5.5.1.tgz", + "integrity": "sha512-KRD61cL7CRL+b4r/eB9dEoVxIf/2EJ1Pm1DmRYhtSUAJD2dJ5Xw8QFuehobOGm9URqQ7gaQl+Fkc1qvDlsWqKg==", "license": "MIT", "dependencies": { - "@solana/assertions": "5.0.0", - "@solana/codecs-core": "5.0.0", - "@solana/codecs-strings": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/nominal-types": "5.0.0" + "@solana/assertions": "5.5.1", + "@solana/codecs-core": "5.5.1", + "@solana/codecs-strings": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/nominal-types": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/kit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/kit/-/kit-5.0.0.tgz", - "integrity": "sha512-3ahtzmmMgU+1l2YMhQJSKKm14IdvCycOE/m4XNMu/4icBIptmBgZxrmgRpPHqBilBa+Krp/hBuTg4HWl9IAgWw==", - "license": "MIT", - "dependencies": { - "@solana/accounts": "5.0.0", - "@solana/addresses": "5.0.0", - "@solana/codecs": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/functional": "5.0.0", - "@solana/instruction-plans": "5.0.0", - "@solana/instructions": "5.0.0", - "@solana/keys": "5.0.0", - "@solana/programs": "5.0.0", - "@solana/rpc": "5.0.0", - "@solana/rpc-parsed-types": "5.0.0", - "@solana/rpc-spec-types": "5.0.0", - "@solana/rpc-subscriptions": "5.0.0", - "@solana/rpc-types": "5.0.0", - "@solana/signers": "5.0.0", - "@solana/sysvars": "5.0.0", - "@solana/transaction-confirmation": "5.0.0", - "@solana/transaction-messages": "5.0.0", - "@solana/transactions": "5.0.0" + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/kit/-/kit-5.5.1.tgz", + "integrity": "sha512-irKUGiV2yRoyf+4eGQ/ZeCRxa43yjFEL1DUI5B0DkcfZw3cr0VJtVJnrG8OtVF01vT0OUfYOcUn6zJW5TROHvQ==", + "license": "MIT", + "dependencies": { + "@solana/accounts": "5.5.1", + "@solana/addresses": "5.5.1", + "@solana/codecs": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/functional": "5.5.1", + "@solana/instruction-plans": "5.5.1", + "@solana/instructions": "5.5.1", + "@solana/keys": "5.5.1", + "@solana/offchain-messages": "5.5.1", + "@solana/plugin-core": "5.5.1", + "@solana/programs": "5.5.1", + "@solana/rpc": "5.5.1", + "@solana/rpc-api": "5.5.1", + "@solana/rpc-parsed-types": "5.5.1", + "@solana/rpc-spec-types": "5.5.1", + "@solana/rpc-subscriptions": "5.5.1", + "@solana/rpc-types": "5.5.1", + "@solana/signers": "5.5.1", + "@solana/sysvars": "5.5.1", + "@solana/transaction-confirmation": "5.5.1", + "@solana/transaction-messages": "5.5.1", + "@solana/transactions": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/nominal-types": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/nominal-types/-/nominal-types-5.0.0.tgz", - "integrity": "sha512-Qn7xH4UG2rDAv+wAyheP4jWvX3oQmbZ/woxFZwug7PaRLvyjUswGr38Hil+SjiQyFDo+un1UqWM9N9yusUeeZQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/nominal-types/-/nominal-types-5.5.1.tgz", + "integrity": "sha512-I1ImR+kfrLFxN5z22UDiTWLdRZeKtU0J/pkWkO8qm/8WxveiwdIv4hooi8pb6JnlR4mSrWhq0pCIOxDYrL9GIQ==", "license": "MIT", "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@solana/offchain-messages": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/offchain-messages/-/offchain-messages-5.5.1.tgz", + "integrity": "sha512-g+xHH95prTU+KujtbOzj8wn+C7ZNoiLhf3hj6nYq3MTyxOXtBEysguc97jJveUZG0K97aIKG6xVUlMutg5yxhw==", + "license": "MIT", + "dependencies": { + "@solana/addresses": "5.5.1", + "@solana/codecs-core": "5.5.1", + "@solana/codecs-data-structures": "5.5.1", + "@solana/codecs-numbers": "5.5.1", + "@solana/codecs-strings": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/keys": "5.5.1", + "@solana/nominal-types": "5.5.1" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/options": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/options/-/options-5.0.0.tgz", - "integrity": "sha512-ezHVBFb9FXVSn8LUVRD2tLb6fejU0x8KtGEYyCYh0J0pQuXSITV0IQCjcEopvu/ZxWdXOJyzjvmymnhz90on5A==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/options/-/options-5.5.1.tgz", + "integrity": "sha512-eo971c9iLNLmk+yOFyo7yKIJzJ/zou6uKpy6mBuyb/thKtS/haiKIc3VLhyTXty3OH2PW8yOlORJnv4DexJB8A==", "license": "MIT", "dependencies": { - "@solana/codecs-core": "5.0.0", - "@solana/codecs-data-structures": "5.0.0", - "@solana/codecs-numbers": "5.0.0", - "@solana/codecs-strings": "5.0.0", - "@solana/errors": "5.0.0" + "@solana/codecs-core": "5.5.1", + "@solana/codecs-data-structures": "5.5.1", + "@solana/codecs-numbers": "5.5.1", + "@solana/codecs-strings": "5.5.1", + "@solana/errors": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@solana/plugin-core": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/plugin-core/-/plugin-core-5.5.1.tgz", + "integrity": "sha512-VUZl30lDQFJeiSyNfzU1EjYt2QZvoBFKEwjn1lilUJw7KgqD5z7mbV7diJhT+dLFs36i0OsjXvq5kSygn8YJ3A==", + "license": "MIT", + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/programs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/programs/-/programs-5.0.0.tgz", - "integrity": "sha512-BKOfBDrSUCJGZ+qKk2aFLu0nU9/84o6z/VDCJkLjaNNuTv8nOlSYq5flNzo1eyJmnpyW372qNvqqRN3AS23+FQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/programs/-/programs-5.5.1.tgz", + "integrity": "sha512-7U9kn0Jsx1NuBLn5HRTFYh78MV4XN145Yc3WP/q5BlqAVNlMoU9coG5IUTJIG847TUqC1lRto3Dnpwm6T4YRpA==", "license": "MIT", "dependencies": { - "@solana/addresses": "5.0.0", - "@solana/errors": "5.0.0" + "@solana/addresses": "5.5.1", + "@solana/errors": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/promises": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/promises/-/promises-5.0.0.tgz", - "integrity": "sha512-Qmg3UfYfWINEUvBQL3DkPOq34tTg5cfrkPlDtJmi8RVifsPqb6hksbKZGu7ASLZohxIDGmnYQY6oELI7Me+5yw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/promises/-/promises-5.5.1.tgz", + "integrity": "sha512-T9lfuUYkGykJmppEcssNiCf6yiYQxJkhiLPP+pyAc2z84/7r3UVIb2tNJk4A9sucS66pzJnVHZKcZVGUUp6wzA==", "license": "MIT", "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/react": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/react/-/react-5.0.0.tgz", - "integrity": "sha512-OY5WsmFGxRCXuysG1uy9WmL3DlYOKwjvwynstXWbi+aks804BidBaTcyM9oxSvsbH3rHzCK/MtHH/ux0AGQ5Qg==", - "license": "MIT", - "dependencies": { - "@solana/addresses": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/keys": "5.0.0", - "@solana/promises": "5.0.0", - "@solana/signers": "5.0.0", - "@solana/transaction-messages": "5.0.0", - "@solana/transactions": "5.0.0", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/react/-/react-5.5.1.tgz", + "integrity": "sha512-kJE6XWWXnf74wTXrfWDRchfZ9WgI1ii1WsIftUd44rN1UP/C4sqrf9ltbr/u3j8OrErI3MEt3coyphq3gPicVg==", + "license": "MIT", + "dependencies": { + "@solana/addresses": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/keys": "5.5.1", + "@solana/promises": "5.5.1", + "@solana/signers": "5.5.1", + "@solana/transaction-messages": "5.5.1", + "@solana/transactions": "5.5.1", "@solana/wallet-standard-features": "^1.3.0", "@wallet-standard/base": "^1.1.0", "@wallet-standard/errors": "^0.1.1", + "@wallet-standard/react": "^1.0.1", "@wallet-standard/ui": "^1.0.1", "@wallet-standard/ui-registry": "^1.0.1" }, @@ -16656,362 +18157,458 @@ }, "peerDependencies": { "react": ">=18" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } } }, "node_modules/@solana/rpc": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc/-/rpc-5.0.0.tgz", - "integrity": "sha512-Myx/ZBmMHkgh9Di3tLzc+vd30f+6YC1JXr9+YmIHKEeqN/+iTHkDJU2E/hGRLy8vTOBOU7+2466A+dLnSVuGkg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc/-/rpc-5.5.1.tgz", + "integrity": "sha512-ku8zTUMrkCWci66PRIBC+1mXepEnZH/q1f3ck0kJZ95a06bOTl5KU7HeXWtskkyefzARJ5zvCs54AD5nxjQJ+A==", "license": "MIT", "dependencies": { - "@solana/errors": "5.0.0", - "@solana/fast-stable-stringify": "5.0.0", - "@solana/functional": "5.0.0", - "@solana/rpc-api": "5.0.0", - "@solana/rpc-spec": "5.0.0", - "@solana/rpc-spec-types": "5.0.0", - "@solana/rpc-transformers": "5.0.0", - "@solana/rpc-transport-http": "5.0.0", - "@solana/rpc-types": "5.0.0" + "@solana/errors": "5.5.1", + "@solana/fast-stable-stringify": "5.5.1", + "@solana/functional": "5.5.1", + "@solana/rpc-api": "5.5.1", + "@solana/rpc-spec": "5.5.1", + "@solana/rpc-spec-types": "5.5.1", + "@solana/rpc-transformers": "5.5.1", + "@solana/rpc-transport-http": "5.5.1", + "@solana/rpc-types": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/rpc-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc-api/-/rpc-api-5.0.0.tgz", - "integrity": "sha512-IJbZZnX2B1ldXPok1NhneXTYq9ZvdJbE5Pryr03pZTlPJaWGqDcZuQ14nwR4s6PoUUgdT+p87QlLZqLb8MusoQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc-api/-/rpc-api-5.5.1.tgz", + "integrity": "sha512-XWOQQPhKl06Vj0xi3RYHAc6oEQd8B82okYJ04K7N0Vvy3J4PN2cxeK7klwkjgavdcN9EVkYCChm2ADAtnztKnA==", "license": "MIT", "dependencies": { - "@solana/addresses": "5.0.0", - "@solana/codecs-core": "5.0.0", - "@solana/codecs-strings": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/keys": "5.0.0", - "@solana/rpc-parsed-types": "5.0.0", - "@solana/rpc-spec": "5.0.0", - "@solana/rpc-transformers": "5.0.0", - "@solana/rpc-types": "5.0.0", - "@solana/transaction-messages": "5.0.0", - "@solana/transactions": "5.0.0" + "@solana/addresses": "5.5.1", + "@solana/codecs-core": "5.5.1", + "@solana/codecs-strings": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/keys": "5.5.1", + "@solana/rpc-parsed-types": "5.5.1", + "@solana/rpc-spec": "5.5.1", + "@solana/rpc-transformers": "5.5.1", + "@solana/rpc-types": "5.5.1", + "@solana/transaction-messages": "5.5.1", + "@solana/transactions": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/rpc-parsed-types": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc-parsed-types/-/rpc-parsed-types-5.0.0.tgz", - "integrity": "sha512-fU9uqlOYAaBqgk2qCl+ntenBm7wuSFBRbIO/rVjeBPd/qPCvNZU+qFET+ERLK6wbCTSz0MmdHqPn1V8KCMOvZQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc-parsed-types/-/rpc-parsed-types-5.5.1.tgz", + "integrity": "sha512-HEi3G2nZqGEsa3vX6U0FrXLaqnUCg4SKIUrOe8CezD+cSFbRTOn3rCLrUmJrhVyXlHoQVaRO9mmeovk31jWxJg==", "license": "MIT", "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/rpc-spec": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc-spec/-/rpc-spec-5.0.0.tgz", - "integrity": "sha512-1LD2SYEQ5bYhiBumznAPzymtxSX4nYLZd6u+FA0bAxNBVzHDvUUQzVSXHAoWROhlGrCyvtALTs9u0DIDlgZHCA==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc-spec/-/rpc-spec-5.5.1.tgz", + "integrity": "sha512-m3LX2bChm3E3by4mQrH4YwCAFY57QBzuUSWqlUw7ChuZ+oLLOq7b2czi4i6L4Vna67j3eCmB3e+4tqy1j5wy7Q==", "license": "MIT", "dependencies": { - "@solana/errors": "5.0.0", - "@solana/rpc-spec-types": "5.0.0" + "@solana/errors": "5.5.1", + "@solana/rpc-spec-types": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/rpc-spec-types": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc-spec-types/-/rpc-spec-types-5.0.0.tgz", - "integrity": "sha512-B0P/ylXVaCG5oSIV+kB88s2qoW996D8iKhc7RyF0C/AyYvklF6kCwv0N9ZVrWp0ibjlQ8St290WbBHJyo7QZkA==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc-spec-types/-/rpc-spec-types-5.5.1.tgz", + "integrity": "sha512-6OFKtRpIEJQs8Jb2C4OO8KyP2h2Hy1MFhatMAoXA+0Ik8S3H+CicIuMZvGZ91mIu/tXicuOOsNNLu3HAkrakrw==", "license": "MIT", "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/rpc-subscriptions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions/-/rpc-subscriptions-5.0.0.tgz", - "integrity": "sha512-cziOSzom/bwFZXViR9J+MxDsdLMcfvrXGw5Icng7dYODFKuVqfsDrQoG8uekJc4fREnbPEM2U+u9YnYSYbFbww==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions/-/rpc-subscriptions-5.5.1.tgz", + "integrity": "sha512-CTMy5bt/6mDh4tc6vUJms9EcuZj3xvK0/xq8IQ90rhkpYvate91RjBP+egvjgSayUg9yucU9vNuUpEjz4spM7w==", "license": "MIT", "dependencies": { - "@solana/errors": "5.0.0", - "@solana/fast-stable-stringify": "5.0.0", - "@solana/functional": "5.0.0", - "@solana/promises": "5.0.0", - "@solana/rpc-spec-types": "5.0.0", - "@solana/rpc-subscriptions-api": "5.0.0", - "@solana/rpc-subscriptions-channel-websocket": "5.0.0", - "@solana/rpc-subscriptions-spec": "5.0.0", - "@solana/rpc-transformers": "5.0.0", - "@solana/rpc-types": "5.0.0", - "@solana/subscribable": "5.0.0" + "@solana/errors": "5.5.1", + "@solana/fast-stable-stringify": "5.5.1", + "@solana/functional": "5.5.1", + "@solana/promises": "5.5.1", + "@solana/rpc-spec-types": "5.5.1", + "@solana/rpc-subscriptions-api": "5.5.1", + "@solana/rpc-subscriptions-channel-websocket": "5.5.1", + "@solana/rpc-subscriptions-spec": "5.5.1", + "@solana/rpc-transformers": "5.5.1", + "@solana/rpc-types": "5.5.1", + "@solana/subscribable": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/rpc-subscriptions-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-5.0.0.tgz", - "integrity": "sha512-DGUn3C12swV2FConOlLFN14npIrCtnxehtMLjszMC7g6p/P6WNIz5uAgF7YcIkLBDV8uTeWhM0azmK+V8Qqhvg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-5.5.1.tgz", + "integrity": "sha512-5Oi7k+GdeS8xR2ly1iuSFkAv6CZqwG0Z6b1QZKbEgxadE1XGSDrhM2cn59l+bqCozUWCqh4c/A2znU/qQjROlw==", "license": "MIT", "dependencies": { - "@solana/addresses": "5.0.0", - "@solana/keys": "5.0.0", - "@solana/rpc-subscriptions-spec": "5.0.0", - "@solana/rpc-transformers": "5.0.0", - "@solana/rpc-types": "5.0.0", - "@solana/transaction-messages": "5.0.0", - "@solana/transactions": "5.0.0" + "@solana/addresses": "5.5.1", + "@solana/keys": "5.5.1", + "@solana/rpc-subscriptions-spec": "5.5.1", + "@solana/rpc-transformers": "5.5.1", + "@solana/rpc-types": "5.5.1", + "@solana/transaction-messages": "5.5.1", + "@solana/transactions": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/rpc-subscriptions-channel-websocket": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-channel-websocket/-/rpc-subscriptions-channel-websocket-5.0.0.tgz", - "integrity": "sha512-vsYXyjVX/kExfpr91zfMKTmWKKFCM+dkhXQDAz5aEE7kAF3KSZDiOGeYvN8Rc85lbIt9QK6BLAT+NBMv4/N9Qg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-channel-websocket/-/rpc-subscriptions-channel-websocket-5.5.1.tgz", + "integrity": "sha512-7tGfBBrYY8TrngOyxSHoCU5shy86iA9SRMRrPSyBhEaZRAk6dnbdpmUTez7gtdVo0BCvh9nzQtUycKWSS7PnFQ==", "license": "MIT", "dependencies": { - "@solana/errors": "5.0.0", - "@solana/functional": "5.0.0", - "@solana/rpc-subscriptions-spec": "5.0.0", - "@solana/subscribable": "5.0.0" + "@solana/errors": "5.5.1", + "@solana/functional": "5.5.1", + "@solana/rpc-subscriptions-spec": "5.5.1", + "@solana/subscribable": "5.5.1", + "ws": "^8.19.0" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3", - "ws": "^8.18.0" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/rpc-subscriptions-spec": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-spec/-/rpc-subscriptions-spec-5.0.0.tgz", - "integrity": "sha512-erRLvZMncwnciJP6I1SlAk0CyRGIgt83PyHWOVCRXENP9Q5dZbZ9pm4lar2yIp8EjIMnodGHsQWIlKc1hlCQlQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-spec/-/rpc-subscriptions-spec-5.5.1.tgz", + "integrity": "sha512-iq+rGq5fMKP3/mKHPNB6MC8IbVW41KGZg83Us/+LE3AWOTWV1WT20KT2iH1F1ik9roi42COv/TpoZZvhKj45XQ==", "license": "MIT", "dependencies": { - "@solana/errors": "5.0.0", - "@solana/promises": "5.0.0", - "@solana/rpc-spec-types": "5.0.0", - "@solana/subscribable": "5.0.0" + "@solana/errors": "5.5.1", + "@solana/promises": "5.5.1", + "@solana/rpc-spec-types": "5.5.1", + "@solana/subscribable": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/rpc-transformers": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc-transformers/-/rpc-transformers-5.0.0.tgz", - "integrity": "sha512-EMHhSgfF6/T4FfHbLaBP08SIj1ZAjxJr6WPNZMHLV7Cup8UfiB9TNV+bPQkum7JbVQNhUKzkKEEmyYqPfQoV9w==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc-transformers/-/rpc-transformers-5.5.1.tgz", + "integrity": "sha512-OsWqLCQdcrRJKvHiMmwFhp9noNZ4FARuMkHT5us3ustDLXaxOjF0gfqZLnMkulSLcKt7TGXqMhBV+HCo7z5M8Q==", "license": "MIT", "dependencies": { - "@solana/errors": "5.0.0", - "@solana/functional": "5.0.0", - "@solana/nominal-types": "5.0.0", - "@solana/rpc-spec-types": "5.0.0", - "@solana/rpc-types": "5.0.0" + "@solana/errors": "5.5.1", + "@solana/functional": "5.5.1", + "@solana/nominal-types": "5.5.1", + "@solana/rpc-spec-types": "5.5.1", + "@solana/rpc-types": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/rpc-transport-http": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc-transport-http/-/rpc-transport-http-5.0.0.tgz", - "integrity": "sha512-RoIEvWp7yc7rIRzNkOyjLs2UQF0odIEMWj87dbD4Ir4hwTCGo/TSTfQF/8KDV2etdke3Fa1K+W1NkpG2POqWFg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc-transport-http/-/rpc-transport-http-5.5.1.tgz", + "integrity": "sha512-yv8GoVSHqEV0kUJEIhkdOVkR2SvJ6yoWC51cJn2rSV7plr6huLGe0JgujCmB7uZhhaLbcbP3zxXxu9sOjsi7Fg==", "license": "MIT", "dependencies": { - "@solana/errors": "5.0.0", - "@solana/rpc-spec": "5.0.0", - "@solana/rpc-spec-types": "5.0.0", - "undici-types": "^7.16.0" + "@solana/errors": "5.5.1", + "@solana/rpc-spec": "5.5.1", + "@solana/rpc-spec-types": "5.5.1", + "undici-types": "^7.19.2" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/rpc-types": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/rpc-types/-/rpc-types-5.0.0.tgz", - "integrity": "sha512-JMbhwnV6nX4ezJv/KmaElOR0r/MZTKzKpaz6cv7FopLNuPrYCBrRCZKuM2XQh6gUbt9Mey08/KBOmOGmzTbL/g==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/rpc-types/-/rpc-types-5.5.1.tgz", + "integrity": "sha512-bibTFQ7PbHJJjGJPmfYC2I+/5CRFS4O2p9WwbFraX1Keeel+nRrt/NBXIy8veP5AEn2sVJIyJPpWBRpCx1oATA==", "license": "MIT", "dependencies": { - "@solana/addresses": "5.0.0", - "@solana/codecs-core": "5.0.0", - "@solana/codecs-numbers": "5.0.0", - "@solana/codecs-strings": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/nominal-types": "5.0.0" + "@solana/addresses": "5.5.1", + "@solana/codecs-core": "5.5.1", + "@solana/codecs-numbers": "5.5.1", + "@solana/codecs-strings": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/nominal-types": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/signers": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/signers/-/signers-5.0.0.tgz", - "integrity": "sha512-9Hw6HekSEzj5O7UBBFPrxk96W5e8tMI3n7KbW7/QiKBDpuvYw9WtnjOsWUE7LqQoc1P0JjGEsrmxE9raQBLvuQ==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/signers/-/signers-5.5.1.tgz", + "integrity": "sha512-FY0IVaBT2kCAze55vEieR6hag4coqcuJ31Aw3hqRH7mv6sV8oqwuJmUrx+uFwOp1gwd5OEAzlv6N4hOOple4sQ==", "license": "MIT", "dependencies": { - "@solana/addresses": "5.0.0", - "@solana/codecs-core": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/instructions": "5.0.0", - "@solana/keys": "5.0.0", - "@solana/nominal-types": "5.0.0", - "@solana/transaction-messages": "5.0.0", - "@solana/transactions": "5.0.0" + "@solana/addresses": "5.5.1", + "@solana/codecs-core": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/instructions": "5.5.1", + "@solana/keys": "5.5.1", + "@solana/nominal-types": "5.5.1", + "@solana/offchain-messages": "5.5.1", + "@solana/transaction-messages": "5.5.1", + "@solana/transactions": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/subscribable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/subscribable/-/subscribable-5.0.0.tgz", - "integrity": "sha512-C2TydIRRd5XUJ8asbARi67Sj/3DRLubWalnNoafBhDsrb88jsRVylntvwXgBw/+lwJdEPEsUnxvcdgdm+3lFlw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/subscribable/-/subscribable-5.5.1.tgz", + "integrity": "sha512-9K0PsynFq0CsmK1CDi5Y2vUIJpCqkgSS5yfDN0eKPgHqEptLEaia09Kaxc90cSZDZU5mKY/zv1NBmB6Aro9zQQ==", "license": "MIT", "dependencies": { - "@solana/errors": "5.0.0" + "@solana/errors": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/sysvars": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/sysvars/-/sysvars-5.0.0.tgz", - "integrity": "sha512-F/GEb2rS8mrgDd79lDPyu8za9jGE6cRlS4jHNeKCkvOCJxdKQbX34JIzx4kwzjtvk7O8/yrDHfGdpA8nBg/l4w==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/sysvars/-/sysvars-5.5.1.tgz", + "integrity": "sha512-k3Quq87Mm+geGUu1GWv6knPk0ALsfY6EKSJGw9xUJDHzY/RkYSBnh0RiOrUhtFm2TDNjOailg8/m0VHmi3reFA==", "license": "MIT", "dependencies": { - "@solana/accounts": "5.0.0", - "@solana/codecs": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/rpc-types": "5.0.0" + "@solana/accounts": "5.5.1", + "@solana/codecs": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/rpc-types": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/transaction-confirmation": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/transaction-confirmation/-/transaction-confirmation-5.0.0.tgz", - "integrity": "sha512-LpusTopYIuQC8hBCloExkTr4Z5/zdp5f4IIbzD5XFeW3xXPZytS3H1IDMGk4bmLdZi9zQNA4lnNHKra5IncRbw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/transaction-confirmation/-/transaction-confirmation-5.5.1.tgz", + "integrity": "sha512-j4mKlYPHEyu+OD7MBt3jRoX4ScFgkhZC6H65on4Fux6LMScgivPJlwnKoZMnsgxFgWds0pl+BYzSiALDsXlYtw==", "license": "MIT", "dependencies": { - "@solana/addresses": "5.0.0", - "@solana/codecs-strings": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/keys": "5.0.0", - "@solana/promises": "5.0.0", - "@solana/rpc": "5.0.0", - "@solana/rpc-subscriptions": "5.0.0", - "@solana/rpc-types": "5.0.0", - "@solana/transaction-messages": "5.0.0", - "@solana/transactions": "5.0.0" + "@solana/addresses": "5.5.1", + "@solana/codecs-strings": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/keys": "5.5.1", + "@solana/promises": "5.5.1", + "@solana/rpc": "5.5.1", + "@solana/rpc-subscriptions": "5.5.1", + "@solana/rpc-types": "5.5.1", + "@solana/transaction-messages": "5.5.1", + "@solana/transactions": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/transaction-messages": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/transaction-messages/-/transaction-messages-5.0.0.tgz", - "integrity": "sha512-rJLe1wUGW5DovQFV0gjXHXnriPxTBgZ3TvGWnjCu2OIBU8mcQkQVJ7zzVZY2IAYlmJ6OSF9nvzhSt/ncPbkJPg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/transaction-messages/-/transaction-messages-5.5.1.tgz", + "integrity": "sha512-aXyhMCEaAp3M/4fP0akwBBQkFPr4pfwoC5CLDq999r/FUwDax2RE/h4Ic7h2Xk+JdcUwsb+rLq85Y52hq84XvQ==", "license": "MIT", "dependencies": { - "@solana/addresses": "5.0.0", - "@solana/codecs-core": "5.0.0", - "@solana/codecs-data-structures": "5.0.0", - "@solana/codecs-numbers": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/functional": "5.0.0", - "@solana/instructions": "5.0.0", - "@solana/nominal-types": "5.0.0", - "@solana/rpc-types": "5.0.0" + "@solana/addresses": "5.5.1", + "@solana/codecs-core": "5.5.1", + "@solana/codecs-data-structures": "5.5.1", + "@solana/codecs-numbers": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/functional": "5.5.1", + "@solana/instructions": "5.5.1", + "@solana/nominal-types": "5.5.1", + "@solana/rpc-types": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/transactions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@solana/transactions/-/transactions-5.0.0.tgz", - "integrity": "sha512-4TcsqH7JtgRKGGBIRRGz0n+tXu4h5TPPC49kkV0ygIndQaHW7FOZUYTwQ0epq0A5h9KYi+ClNbzF9xiuDbAD5Q==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@solana/transactions/-/transactions-5.5.1.tgz", + "integrity": "sha512-8hHtDxtqalZ157pnx6p8k10D7J/KY/biLzfgh9R09VNLLY3Fqi7kJvJCr7M2ik3oRll56pxhraAGCC9yIT6eOA==", "license": "MIT", "dependencies": { - "@solana/addresses": "5.0.0", - "@solana/codecs-core": "5.0.0", - "@solana/codecs-data-structures": "5.0.0", - "@solana/codecs-numbers": "5.0.0", - "@solana/codecs-strings": "5.0.0", - "@solana/errors": "5.0.0", - "@solana/functional": "5.0.0", - "@solana/instructions": "5.0.0", - "@solana/keys": "5.0.0", - "@solana/nominal-types": "5.0.0", - "@solana/rpc-types": "5.0.0", - "@solana/transaction-messages": "5.0.0" + "@solana/addresses": "5.5.1", + "@solana/codecs-core": "5.5.1", + "@solana/codecs-data-structures": "5.5.1", + "@solana/codecs-numbers": "5.5.1", + "@solana/codecs-strings": "5.5.1", + "@solana/errors": "5.5.1", + "@solana/functional": "5.5.1", + "@solana/instructions": "5.5.1", + "@solana/keys": "5.5.1", + "@solana/nominal-types": "5.5.1", + "@solana/rpc-types": "5.5.1", + "@solana/transaction-messages": "5.5.1" }, "engines": { "node": ">=20.18.0" }, "peerDependencies": { - "typescript": ">=5.3.3" + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@solana/wallet-adapter-base": { @@ -17477,16 +19074,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@standard-schema/spec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", - "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", - "license": "MIT" - }, "node_modules/@supabase/auth-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.84.0.tgz", - "integrity": "sha512-J6XKbqqg1HQPMfYkAT9BrC8anPpAiifl7qoVLsYhQq5B/dnu/lxab1pabnxtJEsvYG5rwI5HEVEGXMjoQ6Wz2Q==", + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.99.1.tgz", + "integrity": "sha512-x7lKKTvKjABJt/FYcRSPiTT01Xhm2FF8RhfL8+RHMkmlwmRQ88/lREupIHKwFPW0W6pTCJqkZb7Yhpw/EZ+fNw==", "license": "MIT", "dependencies": { "tslib": "2.8.1" @@ -17496,9 +19087,9 @@ } }, "node_modules/@supabase/functions-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.84.0.tgz", - "integrity": "sha512-2oY5QBV4py/s64zMlhPEz+4RTdlwxzmfhM1k2xftD2v1DruRZKfoe7Yn9DCz1VondxX8evcvpc2udEIGzHI+VA==", + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.99.1.tgz", + "integrity": "sha512-WQE62W5geYImCO4jzFxCk/avnK7JmOdtqu2eiPz3zOaNiIJajNRSAwMMDgEGd2EMs+sUVYj1LfBjfmW3EzHgIA==", "license": "MIT", "dependencies": { "tslib": "2.8.1" @@ -17508,9 +19099,9 @@ } }, "node_modules/@supabase/postgrest-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.84.0.tgz", - "integrity": "sha512-oplc/3jfJeVW4F0J8wqywHkjIZvOVHtqzF0RESijepDAv5Dn/LThlGW1ftysoP4+PXVIrnghAbzPHo88fNomPQ==", + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.99.1.tgz", + "integrity": "sha512-gtw2ibJrADvfqrpUWXGNlrYUvxttF4WVWfPpTFKOb2IRj7B6YRWMDgcrYqIuD4ZEabK4m6YKQCCGy6clgf1lPA==", "license": "MIT", "dependencies": { "tslib": "2.8.1" @@ -17520,9 +19111,9 @@ } }, "node_modules/@supabase/realtime-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.84.0.tgz", - "integrity": "sha512-ThqjxiCwWiZAroHnYPmnNl6tZk6jxGcG2a7Hp/3kcolPcMj89kWjUTA3cHmhdIWYsP84fHp8MAQjYWMLf7HEUg==", + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.99.1.tgz", + "integrity": "sha512-9EDdy/5wOseGFqxW88ShV9JMRhm7f+9JGY5x+LqT8c7R0X1CTLwg5qie8FiBWcXTZ+68yYxVWunI+7W4FhkWOg==", "license": "MIT", "dependencies": { "@types/phoenix": "^1.6.6", @@ -17535,11 +19126,12 @@ } }, "node_modules/@supabase/storage-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.84.0.tgz", - "integrity": "sha512-vXvAJ1euCuhryOhC6j60dG8ky+lk0V06ubNo+CbhuoUv+sl39PyY0lc+k+qpQhTk/VcI6SiM0OECLN83+nyJ5A==", + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.99.1.tgz", + "integrity": "sha512-mf7zPfqofI62SOoyQJeNUVxe72E4rQsbWim6lTDPeLu3lHija/cP5utlQADGrjeTgOUN6znx/rWn7SjrETP1dw==", "license": "MIT", "dependencies": { + "iceberg-js": "^0.8.1", "tslib": "2.8.1" }, "engines": { @@ -17547,16 +19139,16 @@ } }, "node_modules/@supabase/supabase-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.84.0.tgz", - "integrity": "sha512-byMqYBvb91sx2jcZsdp0qLpmd4Dioe80e4OU/UexXftCkpTcgrkoENXHf5dO8FCSai8SgNeq16BKg10QiDI6xg==", + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.99.1.tgz", + "integrity": "sha512-5MRoYD9ffXq8F6a036dm65YoSHisC3by/d22mauKE99Vrwf792KxYIIr/iqCX7E4hkuugbPZ5EGYHTB7MKy6Vg==", "license": "MIT", "dependencies": { - "@supabase/auth-js": "2.84.0", - "@supabase/functions-js": "2.84.0", - "@supabase/postgrest-js": "2.84.0", - "@supabase/realtime-js": "2.84.0", - "@supabase/storage-js": "2.84.0" + "@supabase/auth-js": "2.99.1", + "@supabase/functions-js": "2.99.1", + "@supabase/postgrest-js": "2.99.1", + "@supabase/realtime-js": "2.99.1", + "@supabase/storage-js": "2.99.1" }, "engines": { "node": ">=20.0.0" @@ -17619,13 +19211,13 @@ } }, "node_modules/@swagger-api/apidom-ast": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.0.0-rc.3.tgz", - "integrity": "sha512-lGxvtanmQYqepjVWwPROR/97BIP3sUtwzoHbMSMag2/C3+Un8p6Xz8+I+1sPG2UOBlvDsQe3Di0hlSET7EFwAQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.6.0.tgz", + "integrity": "sha512-ez1KnBdAzoh5a6ijDXzu5nADkVZXlnL1RkLl8n2u2tjiNg9597xxmFdEHLVa31Vxr1yYj0WtYGLA5e2Kp0KNrQ==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-error": "^1.0.0-rc.3", + "@swagger-api/apidom-error": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17633,14 +19225,14 @@ } }, "node_modules/@swagger-api/apidom-core": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.0.0-rc.3.tgz", - "integrity": "sha512-cRf+HzoXl3iDPc7alVxdPbLb1TqRePqsxI0id2KaB8HYbyxTUy3ygqY/jmxGtfAAK0Ba85Bw8j4N0crw23vLTg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.6.0.tgz", + "integrity": "sha512-gA1MVoXe19sjFLKGkWxp5VvSw3Tk0CSChfItJjFeFHpLSGrfm+LlXp37TmNSns53Ky0F7x7TB/5kAX5I/TO4xw==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-ast": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", + "@swagger-api/apidom-ast": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", "@types/ramda": "~0.30.0", "minim": "~0.23.8", "ramda": "~0.30.0", @@ -17650,37 +19242,37 @@ } }, "node_modules/@swagger-api/apidom-error": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-1.0.0-rc.3.tgz", - "integrity": "sha512-E9WsxzR9wwD4+1zmZm9PVvxXBAYxMtGJjpRYR/FthvxhIwx+Vsey2h5k7FPS8yJsawIrdGPQtdiFMLPvnQXUFg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-1.6.0.tgz", + "integrity": "sha512-xp/cQ1xQ/4Vd/hhQfONK7ea9oVc3JUXAYyfRzvDR0lxISly/SyD2jMcqXzHtrylBAnv7V2HSsbC1BWo7ZJDLSQ==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7" } }, "node_modules/@swagger-api/apidom-json-pointer": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.0.0-rc.3.tgz", - "integrity": "sha512-cj83L5ntai/RJcZV0++lQiCHPWE6lTy62bGC2lQ0yi/kyCc+Ig+Sn08qpiLSrkQ4OooK85X+wgAy6pMK+Vt/8Q==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.6.0.tgz", + "integrity": "sha512-RO6P5Gt64AnthGXKeqIFjQCLVFbAJvLYAb67TkvRQ9US4lNixFtFsYJnhLCC4ymz4dTT1hacG0cmTRGcEHF9ig==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", "@swaggerexpert/json-pointer": "^2.10.1" } }, "node_modules/@swagger-api/apidom-ns-api-design-systems": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.0.0-rc.3.tgz", - "integrity": "sha512-JB06VDEKPvyOcJ9qIJmr2vI2FSWjdZh+BiRExZPW4tv/mTvdOxt1n38WA+mKzfFHQuoTR4ork/wR481CjAfGGQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.6.0.tgz", + "integrity": "sha512-EYJfQ4JYuUo2J4QiiLnA/8LmM1k7AQcf1XVE+NrIpZ1160GIzqE+W5uOXkhAOImkP2Cb7EZZdE2cFE/tMYxNvw==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17688,15 +19280,15 @@ } }, "node_modules/@swagger-api/apidom-ns-arazzo-1": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-arazzo-1/-/apidom-ns-arazzo-1-1.0.0-rc.3.tgz", - "integrity": "sha512-Um0MGGsGLQWvnASDoguSuE5X/NpS/9RlXlOHHG5nqzG2cdTlifRcN5tiz7H997162+ahEsD5aHD6tUKWOPCLtQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-arazzo-1/-/apidom-ns-arazzo-1-1.6.0.tgz", + "integrity": "sha512-5rF8PyBiIHh6NfC5Y0WypW11X6hQIWr88EKNOQbBuT/nnzAsOznrUCfQ99FYGLucwdOHaMIBn/b/n4ejGBto/A==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-json-schema-2020-12": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-json-schema-2020-12": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17704,15 +19296,31 @@ } }, "node_modules/@swagger-api/apidom-ns-asyncapi-2": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.0.0-rc.3.tgz", - "integrity": "sha512-UFmnbvEsN7jVvS/8V7X37UPvn8uxdqYBhDzdPSivjxpu/5Ag5Q1P2gHJnO6K2EfTCFL4S1qDObW2TUFdV1b6pg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.6.0.tgz", + "integrity": "sha512-tOodfX+o7lonEAnSAxet7nCayW+EqtKPegT06WXt7Llq1LS9eYZ9YzXdFgIwCm8UzfEpZdVLqtxbdLX9vuUtSg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.26.10", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-json-schema-draft-7": "^1.6.0", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" + } + }, + "node_modules/@swagger-api/apidom-ns-asyncapi-3": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-3/-/apidom-ns-asyncapi-3-1.6.0.tgz", + "integrity": "sha512-lRMvwTdtuPcwJEYLTX/UGtECpHi9UNYeT9rmWMw3LiKZrZzYc2L8q4ipPbpWwH8t7QfsF2u0iggCODU99lXCnw==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-json-schema-draft-7": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-asyncapi-2": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17720,15 +19328,15 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-2019-09": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2019-09/-/apidom-ns-json-schema-2019-09-1.0.0-rc.3.tgz", - "integrity": "sha512-fxQo/GK5NGdx4gN2snj4DpBcDc8bORLehTUqcwp33ikJ2PGugtpV3IQrBjxSWP05PyLOZAMpq1SM9gkCPgZNRA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2019-09/-/apidom-ns-json-schema-2019-09-1.6.0.tgz", + "integrity": "sha512-dee1i8wcAFgDEOzTsyoCzQhFLZ2JKzkK5KkRuryabvwS0hG2mKlogToFc8cO2MkkiLSpERm7DREALwSTFVHa0w==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-json-schema-draft-7": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", + "@swagger-api/apidom-ns-json-schema-draft-7": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17736,15 +19344,15 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-2020-12": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2020-12/-/apidom-ns-json-schema-2020-12-1.0.0-rc.3.tgz", - "integrity": "sha512-iDPbua9HajFwkH9vFUIbkmKVI/VXKuV9G+jLGkyBlF/Zu++1Rv6CstBt+F9CgNThSUqkKt3YA9Rcd82uh1+HnQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2020-12/-/apidom-ns-json-schema-2020-12-1.6.0.tgz", + "integrity": "sha512-ldTxSnnIXskwpN6yCJkasqs32pJXwoXyad95crKT0xjZZr4fTrcAXXIyzdjBubiY9tK6elSrQGQxinJcV7ivWw==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-json-schema-2019-09": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", + "@swagger-api/apidom-ns-json-schema-2019-09": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17752,14 +19360,14 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-4": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.0.0-rc.3.tgz", - "integrity": "sha512-8lft8qCo/KAHqiUpfwUMifP9JDhuhXKMNYSSahP2SN0PnbujoS1h3DOXtpR9/+0N6fKPUT8I6GLEwgq8TX2yvA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.6.0.tgz", + "integrity": "sha512-t9HvHwrevEG7usosO6AdXmC8oYqje5nxHpUmODr72tUtCeAeGEGEb9lgqx7fBhjc3BYsRzOL1hX56m1gjEyCog==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-ast": "^1.0.0-rc.3", - "@swagger-api/apidom-core": "^1.0.0-rc.3", + "@swagger-api/apidom-ast": "^1.6.0", + "@swagger-api/apidom-core": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17767,15 +19375,15 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-6": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.0.0-rc.3.tgz", - "integrity": "sha512-IDC+98ur+7L3YaZZnnCytx9+cihElj24CcjX/X2mOBqOTaAwZ/Exb7LiBnvUswV1lOE2X2CX4donRemjk+e32Q==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.6.0.tgz", + "integrity": "sha512-aoyvQWgAOcZGTe5OfJ3r24DvXHHbrkKtAnxTOEdZzV/uOm6/cbuT8m02+aMOqWPxei1naC3ZHW9iHrETtfgV3w==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17783,15 +19391,15 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-7": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.0.0-rc.3.tgz", - "integrity": "sha512-P0dk9WhH7CINBCh1u8GfcQFycrZcw3qCXug0w6M0wiSrjqZv+Mv/AI68dc0Rb+Dzshe4aZy0bZFjAQb3NHfrSg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.6.0.tgz", + "integrity": "sha512-GjmC4+AHQh22fRZOmV+jSYMJTXh243XvdACfIQ//39kQu7gQsimF4PVSY2IgWSvS/I1ukWdPBYmDvOKryBPGrw==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-json-schema-draft-6": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", + "@swagger-api/apidom-ns-json-schema-draft-6": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17799,16 +19407,16 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-2": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.0.0-rc.3.tgz", - "integrity": "sha512-zwriSfjG+qiPWBHLZRyfdZa305xrB24aZjiAY8r2ikZsdQhC/WHI+e6YqeVCkJwkLzA/oZgrlmyci0mvtkFDQA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.6.0.tgz", + "integrity": "sha512-xbmYzagnB8rO7sYwNGVyxYbNBkjCWnMhlnMrxkPtfQ/2u2ANAmTnCB/S/cMswX5XofiRJbznKAjLDSKBS+mLpQ==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17816,15 +19424,15 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-3-0": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.0.0-rc.3.tgz", - "integrity": "sha512-RCufXt7ja7fqFS/EqWOMZ54J4uEnqPQkCXMwwCqUrFHXQ7nGN1J9nmwj2hFQUFYraajmtnk2dNByO46+XefV1w==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.6.0.tgz", + "integrity": "sha512-AOvW7a2H27inepcTBAWaBMjJLrCh5IPWD4nTU+gysULC7IW6gphO8hj3iUuTmFBcGh9be89GBbvv2y/EGAfx9w==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17832,17 +19440,36 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-3-1": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.0.0-rc.3.tgz", - "integrity": "sha512-Nc28G/ikbypcXVricv8+PGEGXKAmOwZjkBxB3wN5D4+D0+AiUy1lV07Z7+xFWdql65Y5WWxxfU2/Ej01Bnqt4Q==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.6.0.tgz", + "integrity": "sha512-jCVypc8503zDSxAQlyV8j1vzwc75VBdWHtE2O0F+q5j9qNtGxw/ekbDkgrydYRaGBl92mf16dtPjtp5LwJD0Hw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.26.10", + "@swagger-api/apidom-ast": "^1.6.0", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-json-pointer": "^1.6.0", + "@swagger-api/apidom-ns-json-schema-2020-12": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-0": "^1.6.0", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" + } + }, + "node_modules/@swagger-api/apidom-ns-openapi-3-2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-2/-/apidom-ns-openapi-3-2-1.6.0.tgz", + "integrity": "sha512-QcFAUucaPaWiOKOEaaGqSfK3OtjeGJodWZLsuBQ0vrHaHkWyQ7jwsM1DJbc1Y8geOBeD2wIwdrdRjoulmqU1SA==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-ast": "^1.0.0-rc.3", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-json-pointer": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-json-schema-2020-12": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-rc.3", + "@swagger-api/apidom-ast": "^1.6.0", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-json-pointer": "^1.6.0", + "@swagger-api/apidom-ns-json-schema-2020-12": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-0": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17850,112 +19477,144 @@ } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.0.0-rc.3.tgz", - "integrity": "sha512-ZXKuMd6nqBrpCqTJmbd2pS46ZmL8bIra1KqWVjcvkA/E032nmgDeaT78Cf0Ulha6j+CAzcwL0AnR7GrtFpSfSw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.6.0.tgz", + "integrity": "sha512-vz/9k0X/kh6mLm+Fi+LGNk/yyFq28wxI29ZVLW+b7ulcODikv+NaDnyN2n2kLKCvIchPATzAEvqMvVMuuQwWlg==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-api-design-systems": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-api-design-systems": "^1.6.0", + "@swagger-api/apidom-parser-adapter-json": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.0.0-rc.3.tgz", - "integrity": "sha512-Qg1yTPPzGF3EhlqcxIZeDVBxxvZzylGM6CTHg5cltGOSoFQ7+NJFE9Ktvk0gbVaFUyElFduCno9FvIfzxPlj8g==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.6.0.tgz", + "integrity": "sha512-QAq4H6YzRtysSpvLtlJ8WZ22/1Mht+/iarrUOijxDZQPAGfYeUoIicnCqxkVZYSea85sQl+3kiCCB3nhSH+L0g==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-api-design-systems": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-api-design-systems": "^1.6.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-arazzo-json-1": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-json-1/-/apidom-parser-adapter-arazzo-json-1-1.0.0-rc.3.tgz", - "integrity": "sha512-T7MbfTSDqdHgSr+cSC6gcGIsiwK3NXmdo28ZUv6LWsgcWDj2zw2Jie+7rXQaDN3JFEL34M/BIcMLyvrG7gYN/Q==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-json-1/-/apidom-parser-adapter-arazzo-json-1-1.6.0.tgz", + "integrity": "sha512-syKPG3a9IGRvlGhXIEUzWhwbEuFbj+UwwtqaKu8zu771V+DRtH+wxyOkX54vKAIlApz/FgeUbmlWA1ZtYBlSIQ==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-arazzo-1": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-arazzo-1": "^1.6.0", + "@swagger-api/apidom-parser-adapter-json": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-arazzo-yaml-1": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-yaml-1/-/apidom-parser-adapter-arazzo-yaml-1-1.0.0-rc.3.tgz", - "integrity": "sha512-mUmxQVXPoemP2ak/77g/o8kpP2DNd1EDjteuyGHyw1EHk/t4xYPAP05rQ2DfIQ5yVHmxBKRDQ15kfVNEpfUfYQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-yaml-1/-/apidom-parser-adapter-arazzo-yaml-1-1.6.0.tgz", + "integrity": "sha512-IVVLn+a8Q1iQcQsm4tXiAPghHJuJSB1rhIlDyHe3tSQgt9HOSiVpbnJDpwE/JBxxDxSAkeT6Ovo+fi2T5AmHYg==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-arazzo-1": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-arazzo-1": "^1.6.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.0.0-rc.3.tgz", - "integrity": "sha512-K2BaslenC4ouPyzOQSB7wQPSsIGKGIj4VfP4M9y3fJaX9dIi+z3kzYQV7NFhZHAnq6pVybIDA44FLHF/WLCxUg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.6.0.tgz", + "integrity": "sha512-aSUi22ELTDvdCLA3nIUOehuNBcHSeCqU7S7YNiHP/mwE4Q07pwQrYXijH2PROfCdjlZNNN34m6Ptakd92jliJQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.26.10", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-asyncapi-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-json": "^1.6.0", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-3": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-3/-/apidom-parser-adapter-asyncapi-json-3-1.6.0.tgz", + "integrity": "sha512-Ic53vcFF9zniDyCXOGSwwuAdEBUn5lFEAa0m2i30R36cQFHBCCuvbzbMQjWdr+oML0Aw4XoqOwZCQgkJJICpPA==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-asyncapi-3": "^1.6.0", + "@swagger-api/apidom-parser-adapter-json": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.0.0-rc.3.tgz", - "integrity": "sha512-xJezoi5d+RtV7sG9VRcfpbLlJwaR6GoJr2S8lbsnMUkk/B2vZGdRbA2Fc67REQIJTEfxXcU8T3+5m8j0WrG9Xw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.6.0.tgz", + "integrity": "sha512-d/w7X+T4vT+KPqb+8xUm6n4pbHsGB28jdxE9rNVbxhu6D3owny2uxfglwaFh4fJG6FQMavCwl/QzfB4newdoKQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.26.10", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-asyncapi-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.6.0", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-3": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-3/-/apidom-parser-adapter-asyncapi-yaml-3-1.6.0.tgz", + "integrity": "sha512-Wmf0LY59TZxQhqrJU2pcnUikcChVB4IqGPgjtOFLUoqPpz8FSwYbJ/SPnSMSl+QuncxROheSFsgZ6Tupv0sPHw==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-asyncapi-3": "^1.6.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-json": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.0.0-rc.3.tgz", - "integrity": "sha512-Y0dfIYvQE+OLjormlx6RjmA6ymNA6+nkqJC/6qkFt+4fSjfOiXwbOOnfZp9pJXb2ssmDDdrPTFc3ninx5k7jNw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.6.0.tgz", + "integrity": "sha512-WdAS+dBAB2t18HuUgSZy5b8JM7uXfn1RlPymJNRMUsrKYCTtPrQ/0q3YfnBjPhtjSSNCp+p1wajxHAFS7cj2VA==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-ast": "^1.0.0-rc.3", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", + "@swagger-api/apidom-ast": "^1.6.0", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -17965,112 +19624,144 @@ } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.0.0-rc.3.tgz", - "integrity": "sha512-yaMS11FZVJLF062s+dch1kmUvBqdIS6mwAg/4XUL7XwSYat6pnV2ONCqdcUO9JSc9KJMZQiVAZjAZSj096ssNg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.6.0.tgz", + "integrity": "sha512-Q36W1FzdVaY7Oh98533dzCUghwb8k3ZMdlnV37V1H13FlUkj3tVZiWaeaCLwIakzQ7XXYaQTOP+VrRhDRjzhUA==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-openapi-2": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-openapi-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-json": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.0.0-rc.3.tgz", - "integrity": "sha512-5OdImG3eEgYpFvSo0EiZVvJJahk+f6cm5WZNn9lVdRlmxmtpzKM3UNfIYcBgVcAcLvfi8g6G7xRzD1DshaS8sw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.6.0.tgz", + "integrity": "sha512-UY+obOLTPHJvnXscdMY9XwZyuqcnBe6cu9TURjJgkO/QpOpPDqqZoRyurKZgRrX0Pv9B1zR3EIzhl01u/jeUaw==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-0": "^1.6.0", + "@swagger-api/apidom-parser-adapter-json": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.0.0-rc.3.tgz", - "integrity": "sha512-UWlH29DOqKfHF2zwv7r5b7pgrc7Yxdus7FjYWA8p8yoIB02xDwHBaH4KhccIAXkm1qNMo+4TwSKFvO/boE8LMA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.6.0.tgz", + "integrity": "sha512-4ch04/96lYMXQu6odqa6H0aJmV8UefnBJKX1CPuL4qcPSPMFCurcXHGpPHrwMu1p/4Q9H+yRVlYeNQV10xvM0w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.26.10", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.6.0", + "@swagger-api/apidom-parser-adapter-json": "^1.6.0", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-2/-/apidom-parser-adapter-openapi-json-3-2-1.6.0.tgz", + "integrity": "sha512-fWR2gjMQg00QIimcXQMSVeLnCH/2iuDD/Dx8TzVHmKV/IKlu+TnmIVosdlDfRmOB+4duwU6/yfoA79IEhFeZdw==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-json": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.0.0-rc.3.tgz", - "integrity": "sha512-kSWzmalm98ScImQHHtpTBDAIEzLsfE24Pe1IIJP1TaI2rk1AuxzaCsqMl6NQIlnIEawghPOXlG0hLsgtswn/Jg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.6.0.tgz", + "integrity": "sha512-dkEh1Rw9uvuIAOTfKjWRX2rLWP+xJ/Eqdkqeo0I0BWFKXX49YcDpHJV4XHpmd5FbsjJ9vBYr0hAmkbl32TtR4g==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-openapi-2": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-openapi-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.0.0-rc.3.tgz", - "integrity": "sha512-IRxjOgmGpaA1ay/NITOqk3TKTXnGiJtNP8KsPm//i+HkGcg87lZEvRDflB2Z70aRofKncXM2rCMAEqFqV7A9ug==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.6.0.tgz", + "integrity": "sha512-6azq5YonWdzHcO9llK9zn1a+rGxlTz2Uf8p8NWDQnl2AZ56neDLYEL3mNDlrMXAy8dSJIHw+u9VF1OOzdslIHQ==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-0": "^1.6.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.0.0-rc.3.tgz", - "integrity": "sha512-uvDMPiKt7uZSAOUVe+q/AygTFXw1odxxu5mi5voQM3/0KbR/vlt8f1dO9sQkys+G6ped2nL4r8B0p6bXR8uAMQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.6.0.tgz", + "integrity": "sha512-g2tGCXyIAC0IA6JjA0HVxHWyCovyfAxDQ+pMAJ6qm4PfrZHB+oXKWKZHNNmQaFiKdc/SVdMQq6Up0mXOQs7IOQ==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-rc.3", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.6.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.6.0", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-2/-/apidom-parser-adapter-openapi-yaml-3-2-1.6.0.tgz", + "integrity": "sha512-NGkdG9X5Svi89ZBluNseyUBNdgB9MkbTTNmerVKKOmCCHaVbzIb6UFPXf1MifSFyT+wTeGZk6WZLgRIDsTAZ5Q==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.26.10", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.6.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.0.0-rc.3.tgz", - "integrity": "sha512-IiLIw74NRpRwi2YkV1hzmHC5JvvAm/TdeVYZoYK0QxeT2Ozr6MvhnUnRFjjSL3wcmku9+rLz2d8EGL2kO46qRA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.6.0.tgz", + "integrity": "sha512-UwSE5pPUJ+ag7ZCbesgx/SJ8zUD3Sx+2U4AD3/1G1EJ+0gb7FMYgihuOT8ujmBfZVGGm3HMIEIa1w3zha08v2g==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-ast": "^1.0.0-rc.3", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", + "@swagger-api/apidom-ast": "^1.6.0", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", "@tree-sitter-grammars/tree-sitter-yaml": "=0.7.1", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", @@ -18112,63 +19803,79 @@ } }, "node_modules/@swagger-api/apidom-reference": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-1.0.0-rc.3.tgz", - "integrity": "sha512-xZ9B6lGpdlHGSZGEhYe/MAyULCN4d+w4LKK5P1C/i6W6AU4iDEMjMjSawRV9ptJcObnu9ArEe92rgI7XS6s0TQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-1.6.0.tgz", + "integrity": "sha512-gYTDfWQM1heqrCCrCsZH+EWDyAkIGqEJnSJcVWKngwOkXJKeUwat8p1TOW4q3rkaTT+fBaYbrjTr9SkFtVbdMg==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.0.0-rc.3", - "@swagger-api/apidom-error": "^1.0.0-rc.3", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", "@types/ramda": "~0.30.0", "axios": "^1.12.2", - "minimatch": "^7.4.3", - "process": "^0.11.10", + "minimatch": "^10.2.1", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" }, "optionalDependencies": { - "@swagger-api/apidom-json-pointer": "^1.0.0-rc.0", - "@swagger-api/apidom-ns-arazzo-1": "^1.0.0-rc.0", - "@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-rc.0", - "@swagger-api/apidom-ns-openapi-2": "^1.0.0-rc.0", - "@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-rc.0", - "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-arazzo-json-1": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-arazzo-yaml-1": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-json": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-openapi-json-2": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-2": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^1.0.0-rc.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-rc.0" + "@swagger-api/apidom-json-pointer": "^1.6.0", + "@swagger-api/apidom-ns-arazzo-1": "^1.6.0", + "@swagger-api/apidom-ns-asyncapi-2": "^1.6.0", + "@swagger-api/apidom-ns-openapi-2": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-0": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^1.6.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^1.6.0", + "@swagger-api/apidom-parser-adapter-arazzo-json-1": "^1.6.0", + "@swagger-api/apidom-parser-adapter-arazzo-yaml-1": "^1.6.0", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-asyncapi-json-3": "^1.6.0", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-3": "^1.6.0", + "@swagger-api/apidom-parser-adapter-json": "^1.6.0", + "@swagger-api/apidom-parser-adapter-openapi-json-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^1.6.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^1.6.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^1.6.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^1.6.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-2": "^1.6.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.6.0" + } + }, + "node_modules/@swagger-api/apidom-reference/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@swagger-api/apidom-reference/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@swagger-api/apidom-reference/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", - "license": "ISC", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=10" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -18202,13 +19909,12 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/@swc/helpers": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", - "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "version": "0.5.18", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz", + "integrity": "sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.8.0" @@ -18401,15 +20107,6 @@ "@types/estree": "*" } }, - "node_modules/@types/fontkit": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/fontkit/-/fontkit-2.0.8.tgz", - "integrity": "sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/google.maps": { "version": "3.58.1", "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.58.1.tgz", @@ -18497,9 +20194,9 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==", + "version": "4.17.24", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz", + "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", "license": "MIT" }, "node_modules/@types/mdast": { @@ -18533,9 +20230,9 @@ } }, "node_modules/@types/node": { - "version": "20.19.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", - "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", + "version": "20.19.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz", + "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -18559,21 +20256,21 @@ "license": "MIT" }, "node_modules/@types/phoenix": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz", - "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.7.tgz", + "integrity": "sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==", "license": "MIT" }, "node_modules/@types/prismjs": { - "version": "1.26.5", - "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz", - "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==", + "version": "1.26.6", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.6.tgz", + "integrity": "sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==", "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", "license": "MIT" }, "node_modules/@types/ramda": { @@ -18586,9 +20283,9 @@ } }, "node_modules/@types/react": { - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", - "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -19502,6 +21199,18 @@ "node": ">=18" } }, + "node_modules/@wallet-standard/experimental-features": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@wallet-standard/experimental-features/-/experimental-features-0.2.0.tgz", + "integrity": "sha512-B6fBLgouurN3IAoqhh8/1Mm33IAWIErQXVyvMcyBJM+elOD6zkNDUjew5QMG19qCbJ+ZiZUZmdOUC5PxxWw69w==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/base": "^1.1.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@wallet-standard/features": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@wallet-standard/features/-/features-1.1.0.tgz", @@ -19514,6 +21223,40 @@ "node": ">=16" } }, + "node_modules/@wallet-standard/react": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@wallet-standard/react/-/react-1.0.1.tgz", + "integrity": "sha512-StpPv234R94MmJCCUZurQvQSsX6Xe1eOd2lNgwVonvSVdPqCNVS/haVpdrBMx0wX1Ut24X77qyBLP7SGxK5OUg==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/react-core": "^1.0.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wallet-standard/react-core": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@wallet-standard/react-core/-/react-core-1.0.1.tgz", + "integrity": "sha512-g+vZaLlAGlYMwZEoKsmjjI5qz1D8P3FF1aqiI3WLooWOVk55Nszbpk01QCbIFdIMF0UDhxia2FU667TCv509iw==", + "license": "Apache-2.0", + "dependencies": { + "@wallet-standard/app": "^1.1.0", + "@wallet-standard/base": "^1.1.0", + "@wallet-standard/errors": "^0.1.1", + "@wallet-standard/experimental-features": "^0.2.0", + "@wallet-standard/features": "^1.1.0", + "@wallet-standard/ui": "^1.0.1", + "@wallet-standard/ui-registry": "^1.0.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/@wallet-standard/ui": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@wallet-standard/ui/-/ui-1.0.1.tgz", @@ -19595,48 +21338,61 @@ "node": ">=16" } }, - "node_modules/@wry/caches": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", - "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", + "node_modules/@whatwg-node/disposablestack": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@whatwg-node/disposablestack/-/disposablestack-0.0.6.tgz", + "integrity": "sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@whatwg-node/promise-helpers": "^1.0.0", + "tslib": "^2.6.3" }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/@wry/context": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", - "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", + "node_modules/@whatwg-node/fetch": { + "version": "0.10.13", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.10.13.tgz", + "integrity": "sha512-b4PhJ+zYj4357zwk4TTuF2nEe0vVtOrwdsrNo5hL+u1ojXNhh1FgJ6pg1jzDlwlT4oBdzfSwaBwMCtFCsIWg8Q==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@whatwg-node/node-fetch": "^0.8.3", + "urlpattern-polyfill": "^10.0.0" }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/@wry/equality": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", - "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", + "node_modules/@whatwg-node/node-fetch": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.8.5.tgz", + "integrity": "sha512-4xzCl/zphPqlp9tASLVeUhB5+WJHbuWGYpfoC2q1qh5dw0AqZBW7L27V5roxYWijPxj4sspRAAoOH3d2ztaHUQ==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@fastify/busboy": "^3.1.1", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.6.3" }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/@wry/trie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", - "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", + "node_modules/@whatwg-node/promise-helpers": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz", + "integrity": "sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "tslib": "^2.6.3" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, "node_modules/@yarnpkg/lockfile": { @@ -19761,24 +21517,6 @@ "node": ">= 8.0.0" } }, - "node_modules/ai": { - "version": "5.0.101", - "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.101.tgz", - "integrity": "sha512-/P4fgs2PGYTBaZi192YkPikOudsl9vccA65F7J7LvoNTOoP5kh1yAsJPsKAy6FXU32bAngai7ft1UDyC3u7z5g==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/gateway": "2.0.15", - "@ai-sdk/provider": "2.0.0", - "@ai-sdk/provider-utils": "3.0.17", - "@opentelemetry/api": "1.9.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "zod": "^3.25.76 || ^4.1.8" - } - }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -19822,35 +21560,35 @@ } }, "node_modules/algoliasearch": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.45.0.tgz", - "integrity": "sha512-wrj4FGr14heLOYkBKV3Fbq5ZBGuIFeDJkTilYq/G+hH1CSlQBtYvG2X1j67flwv0fUeQJwnWxxRIunSemAZirA==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.49.2.tgz", + "integrity": "sha512-1K0wtDaRONwfhL4h8bbJ9qTjmY6rhGgRvvagXkMBsAOMNr+3Q2SffHECh9DIuNVrMA1JwA0zCwhyepgBZVakng==", "license": "MIT", "peer": true, "dependencies": { - "@algolia/abtesting": "1.11.0", - "@algolia/client-abtesting": "5.45.0", - "@algolia/client-analytics": "5.45.0", - "@algolia/client-common": "5.45.0", - "@algolia/client-insights": "5.45.0", - "@algolia/client-personalization": "5.45.0", - "@algolia/client-query-suggestions": "5.45.0", - "@algolia/client-search": "5.45.0", - "@algolia/ingestion": "1.45.0", - "@algolia/monitoring": "1.45.0", - "@algolia/recommend": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/abtesting": "1.15.2", + "@algolia/client-abtesting": "5.49.2", + "@algolia/client-analytics": "5.49.2", + "@algolia/client-common": "5.49.2", + "@algolia/client-insights": "5.49.2", + "@algolia/client-personalization": "5.49.2", + "@algolia/client-query-suggestions": "5.49.2", + "@algolia/client-search": "5.49.2", + "@algolia/ingestion": "1.49.2", + "@algolia/monitoring": "1.49.2", + "@algolia/recommend": "5.49.2", + "@algolia/requester-browser-xhr": "5.49.2", + "@algolia/requester-fetch": "5.49.2", + "@algolia/requester-node-http": "5.49.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/algoliasearch-helper": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.26.1.tgz", - "integrity": "sha512-CAlCxm4fYBXtvc5MamDzP6Svu8rW4z9me4DCBY1rQ2UDJ0u0flWmusQ8M3nOExZsLLRcUwUPoRAPMrhzOG3erw==", + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.28.0.tgz", + "integrity": "sha512-GBN0xsxGggaCPElZq24QzMdfphrjIiV2xA+hRXE4/UMpN3nsF2WrM8q+x80OGvGpJWtB7F+4Hq5eSfWwuejXrg==", "license": "MIT", "dependencies": { "@algolia/events": "^4.0.1" @@ -19968,16 +21706,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/antlr4": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.2.tgz", - "integrity": "sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=16" - } - }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -20234,16 +21962,16 @@ } }, "node_modules/astro": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.16.0.tgz", - "integrity": "sha512-GaDRs2Mngpw3dr2vc085GnORh98NiXxwIjg/EoQQQl/icZt3Z7s0BRsYHDZ8swkZbOA6wZsqWJdrNirl+iKcDg==", + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.18.1.tgz", + "integrity": "sha512-m4VWilWZ+Xt6NPoYzC4CgGZim/zQUO7WFL0RHCH0AiEavF1153iC3+me2atDvXpf/yX4PyGUeD8wZLq1cirT3g==", "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.13.0", - "@astrojs/internal-helpers": "0.7.5", - "@astrojs/markdown-remark": "6.3.9", + "@astrojs/internal-helpers": "0.7.6", + "@astrojs/markdown-remark": "6.3.11", "@astrojs/telemetry": "3.3.0", - "@capsizecss/unpack": "^3.0.1", + "@capsizecss/unpack": "^4.0.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "acorn": "^8.15.0", @@ -20253,19 +21981,19 @@ "ci-info": "^4.3.1", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", - "cookie": "^1.0.2", + "cookie": "^1.1.1", "cssesc": "^3.0.0", "debug": "^4.4.3", "deterministic-object-hash": "^2.0.2", - "devalue": "^5.5.0", - "diff": "^5.2.0", + "devalue": "^5.6.2", + "diff": "^8.0.3", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.7.0", - "esbuild": "^0.25.0", + "esbuild": "^0.27.3", "estree-walker": "^3.0.3", "flattie": "^1.1.1", - "fontace": "~0.3.1", + "fontace": "~0.4.0", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", @@ -20277,22 +22005,22 @@ "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.1", - "package-manager-detector": "^1.5.0", + "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.3", - "shiki": "^3.15.0", - "smol-toml": "^1.5.0", + "shiki": "^3.21.0", + "smol-toml": "^1.6.0", "svgo": "^4.0.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", - "unifont": "~0.6.0", + "unifont": "~0.7.3", "unist-util-visit": "^5.0.0", - "unstorage": "^1.17.2", + "unstorage": "^1.17.4", "vfile": "^6.0.3", "vite": "^6.4.1", "vitefu": "^1.1.1", @@ -20300,7 +22028,7 @@ "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.3", "zod": "^3.25.76", - "zod-to-json-schema": "^3.24.6", + "zod-to-json-schema": "^3.25.1", "zod-to-ts": "^1.2.0" }, "bin": { @@ -20319,6 +22047,422 @@ "sharp": "^0.34.0" } }, + "node_modules/astro/node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/astro/node_modules/@rollup/pluginutils": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", @@ -20348,15 +22492,15 @@ "license": "MIT" }, "node_modules/astro/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "readdirp": "^5.0.0" }, "engines": { - "node": ">= 14.16.0" + "node": ">= 20.19.0" }, "funding": { "url": "https://paulmillr.com/funding/" @@ -20377,18 +22521,53 @@ "node": ">=8" } }, + "node_modules/astro/node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, "node_modules/astro/node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, - "node_modules/astro/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, "node_modules/astro/node_modules/p-limit": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", @@ -20433,9 +22612,9 @@ } }, "node_modules/astro/node_modules/package-manager-detector": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.5.0.tgz", - "integrity": "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", "license": "MIT" }, "node_modules/astro/node_modules/picomatch": { @@ -20451,12 +22630,12 @@ } }, "node_modules/astro/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", "license": "MIT", "engines": { - "node": ">= 14.18.0" + "node": ">= 20.19.0" }, "funding": { "type": "individual", @@ -20476,19 +22655,19 @@ } }, "node_modules/astro/node_modules/unstorage": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.3.tgz", - "integrity": "sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q==", + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz", + "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", - "chokidar": "^4.0.3", + "chokidar": "^5.0.0", "destr": "^2.0.5", - "h3": "^1.15.4", - "lru-cache": "^10.4.3", + "h3": "^1.15.5", + "lru-cache": "^11.2.0", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", - "ufo": "^1.6.1" + "ufo": "^1.6.3" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", @@ -20497,14 +22676,14 @@ "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@capacitor/preferences": "^6 || ^7 || ^8", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", - "@vercel/kv": "^1.0.1", + "@vercel/kv": "^1 || ^2 || ^3", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", @@ -20618,6 +22797,19 @@ "node": ">=8.0.0" } }, + "node_modules/auto-bind": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", + "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/autolinker": { "version": "3.16.2", "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz", @@ -20628,9 +22820,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", "funding": [ { "type": "opencollective", @@ -20647,10 +22839,9 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, @@ -20680,13 +22871,13 @@ } }, "node_modules/axios": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", - "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, @@ -20869,12 +23060,15 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.31", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz", - "integrity": "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==", + "version": "2.10.11", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.11.tgz", + "integrity": "sha512-DAKrHphkJyiGuau/cFieRYhcTFeK/lBuD++C7cZ6KZHbMhBrisoi+EvhQ5RZrIfV5qwsW8kgQ07JIC+MDJRAhg==", "license": "Apache-2.0", "bin": { - "baseline-browser-mapping": "dist/cli.js" + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/bcp-47-match": { @@ -21070,19 +23264,10 @@ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "license": "MIT" }, - "node_modules/brotli": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", - "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", - "license": "MIT", - "dependencies": { - "base64-js": "^1.1.2" - } - }, "node_modules/browserslist": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", - "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "funding": [ { "type": "opencollective", @@ -21099,11 +23284,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.8.25", - "caniuse-lite": "^1.0.30001754", - "electron-to-chromium": "^1.5.249", + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", - "update-browserslist-db": "^1.1.4" + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -21184,9 +23369,9 @@ } }, "node_modules/bufferutil": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", - "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.1.0.tgz", + "integrity": "sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==", "hasInstallScript": true, "license": "MIT", "optional": true, @@ -21233,7 +23418,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "peer": true, "dependencies": { "streamsearch": "^1.1.0" }, @@ -21333,6 +23517,17 @@ "node": ">=6" } }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -21355,9 +23550,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001757", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", - "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", + "version": "1.0.30001781", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz", + "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==", "funding": [ { "type": "opencollective", @@ -21374,6 +23569,18 @@ ], "license": "CC-BY-4.0" }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", @@ -21427,6 +23634,46 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/change-case-all": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", + "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" + } + }, "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -21741,12 +23988,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/clipboard": { "version": "2.0.11", @@ -21764,7 +24020,6 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "license": "ISC", - "peer": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -21778,15 +24033,13 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -21796,7 +24049,6 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", - "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -21811,7 +24063,6 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -21824,15 +24075,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -21934,6 +24176,16 @@ "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", "license": "ISC" }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -21993,6 +24245,18 @@ "node": "^14.18.0 || >=16.10.0" } }, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -22000,12 +24264,16 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", "license": "MIT", "engines": { "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/cookie-es": { @@ -22024,9 +24292,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.47.0.tgz", - "integrity": "sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==", + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.48.0.tgz", + "integrity": "sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==", "hasInstallScript": true, "license": "MIT", "funding": { @@ -22082,6 +24350,19 @@ "node-fetch": "^2.7.0" } }, + "node_modules/cross-inspect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.1.tgz", + "integrity": "sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -22221,6 +24502,16 @@ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "license": "MIT" }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -22291,6 +24582,19 @@ "node": "*" } }, + "node_modules/debounce": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-2.2.0.tgz", + "integrity": "sha512-Xks6RUDLZFdz8LIdR6q0MTH44k7FikOmnh5xkSjMig6ch45afc8sjTjRQf3P6ax8dMgcQrYO/AR2RGWURrruqw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -22506,6 +24810,16 @@ "node": ">= 0.8" } }, + "node_modules/dependency-graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", + "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -22586,9 +24900,9 @@ } }, "node_modules/devalue": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.5.0.tgz", - "integrity": "sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", + "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", "license": "MIT" }, "node_modules/devlop": { @@ -22604,12 +24918,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/dfa": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", - "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", - "license": "MIT" - }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -22617,9 +24925,9 @@ "license": "Apache-2.0" }, "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", + "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -22839,9 +25147,9 @@ "peer": true }, "node_modules/electron-to-chromium": { - "version": "1.5.260", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.260.tgz", - "integrity": "sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==", + "version": "1.5.328", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.328.tgz", + "integrity": "sha512-QNQ5l45DzYytThO21403XN3FvK0hOkWDG8viNf6jqS42msJ8I4tGDSpBCgvDRRPnkffafiwAym2X2eHeGD2V0w==", "license": "ISC" }, "node_modules/elliptic": { @@ -22930,6 +25238,16 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/environment": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", @@ -23559,14 +25877,14 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -24107,9 +26425,9 @@ } }, "node_modules/ethers": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.15.0.tgz", - "integrity": "sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz", + "integrity": "sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==", "funding": [ { "type": "individual", @@ -24216,15 +26534,6 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "license": "MIT" }, - "node_modules/eventsource-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", - "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -24367,9 +26676,9 @@ } }, "node_modules/fast-copy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", - "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-4.0.1.tgz", + "integrity": "sha512-+uUOQlhsaswsizHFmEFAQhB3lSiQ+lisxl50N6ZP0wywlZeWsIESxSi9ftPEps8UGfiBzyYP7x27zA674WUvXw==", "dev": true, "license": "MIT" }, @@ -24523,6 +26832,30 @@ "walk-up-path": "^4.0.0" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -24662,22 +26995,22 @@ "peer": true }, "node_modules/focus-trap": { - "version": "7.6.6", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.6.tgz", - "integrity": "sha512-v/Z8bvMCajtx4mEXmOo7QEsIzlIOqRXTIwgUfsFOF9gEsespdbD0AkPIka1bSXZ8Y8oZ+2IVDQZePkTfEHZl7Q==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.8.0.tgz", + "integrity": "sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==", "license": "MIT", "dependencies": { - "tabbable": "^6.3.0" + "tabbable": "^6.4.0" } }, "node_modules/focus-trap-react": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-11.0.4.tgz", - "integrity": "sha512-tC7jC/yqeAqhe4irNIzdyDf9XCtGSeECHiBSYJBO/vIN0asizbKZCt8TarB6/XqIceu42ajQ/U4lQJ9pZlWjrg==", + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-11.0.6.tgz", + "integrity": "sha512-8YbWR8kDf2pQ8G9LT11p39VY4T7eWVrj00Fhp1HUSdv5uW9q6+WK8OMAdy9Ui7vGb1zNouFDzwBIqJwt82rIYQ==", "license": "MIT", "dependencies": { - "focus-trap": "^7.6.5", - "tabbable": "^6.2.0" + "focus-trap": "^7.8.0", + "tabbable": "^6.4.0" }, "peerDependencies": { "@types/react": "^18.0.0 || ^19.0.0", @@ -24707,30 +27040,24 @@ } }, "node_modules/fontace": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.3.1.tgz", - "integrity": "sha512-9f5g4feWT1jWT8+SbL85aLIRLIXUaDygaM2xPXRmzPYxrOMNok79Lr3FGJoKVNKibE0WCunNiEVG2mwuE+2qEg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.4.0.tgz", + "integrity": "sha512-moThBCItUe2bjZip5PF/iZClpKHGLwMvR79Kp8XpGRBrvoRSnySN4VcILdv3/MJzbhvUA5WeiUXF5o538m5fvg==", "license": "MIT", "dependencies": { - "@types/fontkit": "^2.0.8", - "fontkit": "^2.0.4" + "fontkitten": "^1.0.0" } }, - "node_modules/fontkit": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", - "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "node_modules/fontkitten": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.0.tgz", + "integrity": "sha512-b0RdzQeztiiUFWEDzq6Ka26qkNVNLCehoRtifOIGNbQ4CfxyYRh73fyWaQX/JshPVcueITOEeoSWPy5XQv8FUg==", "license": "MIT", "dependencies": { - "@swc/helpers": "^0.5.12", - "brotli": "^1.3.2", - "clone": "^2.1.2", - "dfa": "^1.2.0", - "fast-deep-equal": "^3.1.3", - "restructure": "^3.0.0", - "tiny-inflate": "^1.0.3", - "unicode-properties": "^1.4.0", - "unicode-trie": "^2.0.0" + "tiny-inflate": "^1.0.3" + }, + "engines": { + "node": ">=20" } }, "node_modules/for-each": { @@ -24814,16 +27141,29 @@ "node": ">=18.3.0" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "license": "MIT", "engines": { "node": "*" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, @@ -24911,6 +27251,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/fuse.js": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", + "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, "node_modules/generator-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", @@ -24940,9 +27289,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", "license": "MIT", "engines": { "node": ">=18" @@ -25231,18 +27580,102 @@ "license": "MIT" }, "node_modules/graphql": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", - "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", - "peer": true, + "version": "16.13.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.13.2.tgz", + "integrity": "sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==", + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, + "node_modules/graphql-config": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-5.1.6.tgz", + "integrity": "sha512-fCkYnm4Kdq3un0YIM4BCZHVR5xl0UeLP6syxxO7KAstdY7QVyVvTHP0kRPDYEP1v08uwtJVgis5sj3IOTLOniQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@graphql-tools/graphql-file-loader": "^8.0.0", + "@graphql-tools/json-file-loader": "^8.0.0", + "@graphql-tools/load": "^8.1.0", + "@graphql-tools/merge": "^9.0.0", + "@graphql-tools/url-loader": "^9.0.0", + "@graphql-tools/utils": "^11.0.0", + "cosmiconfig": "^8.1.0", + "jiti": "^2.0.0", + "minimatch": "^10.0.0", + "string-env-interpolation": "^1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "cosmiconfig-toml-loader": "^1.0.0", + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "cosmiconfig-toml-loader": { + "optional": true + } + } + }, + "node_modules/graphql-config/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/graphql-config/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/graphql-config/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graphql-request": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-7.4.0.tgz", + "integrity": "sha512-xfr+zFb/QYbs4l4ty0dltqiXIp07U6sl+tOKAb0t50/EnQek6CVVBLjETXi+FghElytvgaAWtIOt3EV7zLzIAQ==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0" + }, + "peerDependencies": { + "graphql": "14 - 16" + } + }, "node_modules/graphql-tag": { "version": "2.12.6", "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "dev": true, "dependencies": { "tslib": "^2.1.0" }, @@ -25253,10 +27686,37 @@ "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, + "node_modules/graphql-ws": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-6.0.8.tgz", + "integrity": "sha512-m3EOaNsUBXwAnkBWbzPfe0Nq8pXUfxsWnolC54sru3FzHvhTZL0Ouf/BoQsaGAXqM+YPerXOJ47BUnmgmoupCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "@fastify/websocket": "^10 || ^11", + "crossws": "~0.3", + "graphql": "^15.10.1 || ^16", + "ws": "^8" + }, + "peerDependenciesMeta": { + "@fastify/websocket": { + "optional": true + }, + "crossws": { + "optional": true + }, + "ws": { + "optional": true + } + } + }, "node_modules/h3": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.4.tgz", - "integrity": "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.5.tgz", + "integrity": "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==", "license": "MIT", "dependencies": { "cookie-es": "^1.2.2", @@ -25264,9 +27724,9 @@ "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", - "node-mock-http": "^1.0.2", + "node-mock-http": "^1.0.4", "radix3": "^1.1.2", - "ufo": "^1.6.1", + "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, @@ -25847,6 +28307,17 @@ "he": "bin/he" } }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/help-me": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", @@ -25937,19 +28408,6 @@ "node": "*" } }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, "node_modules/htm": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz", @@ -26087,6 +28545,15 @@ "url": "https://github.com/sponsors/typicode" } }, + "node_modules/iceberg-js": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/iceberg-js/-/iceberg-js-0.8.1.tgz", + "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/iconv-lite": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", @@ -26182,6 +28649,19 @@ "node": ">=4" } }, + "node_modules/import-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", + "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -26253,13 +28733,12 @@ "license": "MIT" }, "node_modules/instantsearch-ui-components": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/instantsearch-ui-components/-/instantsearch-ui-components-0.15.0.tgz", - "integrity": "sha512-eQYwOgHk7+JJwr8C/QQOAsiPV8JdDN7D5edjO1VZVW6UgZWvTlfRR7xM9qPLJjpqbZMw46n1N2Bx8ZAYQjXiCA==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/instantsearch-ui-components/-/instantsearch-ui-components-0.21.0.tgz", + "integrity": "sha512-m9bacFV7qp/HZGSih+KFDUm/rfK8/Qk2VvzQZ3NOfPWxDQoBfgRFc//b7y70tkoLQAEdDy3AlzMDiBDcsqgl1w==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6", - "ai": "^5.0.18", + "@swc/helpers": "0.5.18", "markdown-to-jsx": "^7.7.15", "zod": "^3.25.76 || ^4", "zod-to-json-schema": "3.24.6" @@ -26275,23 +28754,23 @@ } }, "node_modules/instantsearch.js": { - "version": "4.84.0", - "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-4.84.0.tgz", - "integrity": "sha512-7ThTNzBgyFJgZT2ng/0lwGmCXZnK3nq5476bu0hL5u6Nc+AuKFGtAMKlNozXI/Nel3i3WJkoWwxO+37OxfqQmw==", + "version": "4.91.0", + "resolved": "https://registry.npmjs.org/instantsearch.js/-/instantsearch.js-4.91.0.tgz", + "integrity": "sha512-kCR5TQozjyoTb71h1RG2sTJOaeY4KFeV/fJ5ksZjX5AhzQnTVE30hoSg9++kyfHoXrV2Bd6/Yp3belIw6MRwJw==", "license": "MIT", "dependencies": { "@algolia/events": "^4.0.1", + "@swc/helpers": "0.5.18", "@types/dom-speech-recognition": "^0.0.1", "@types/google.maps": "^3.55.12", "@types/hogan.js": "^3.0.0", "@types/qs": "^6.5.3", - "ai": "^5.0.18", - "algoliasearch-helper": "3.26.1", + "algoliasearch-helper": "3.28.0", "hogan.js": "^3.0.2", "htm": "^3.0.0", - "instantsearch-ui-components": "0.15.0", + "instantsearch-ui-components": "0.21.0", "preact": "^10.10.0", - "qs": "^6.5.1 < 6.10", + "qs": "^6.5.1", "react": ">= 0.14.0", "search-insights": "^2.17.2", "zod": "^3.25.76 || ^4", @@ -26343,6 +28822,20 @@ "url": "https://github.com/sponsors/brc-dd" } }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", @@ -26695,6 +29188,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", + "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -26788,6 +29291,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -26891,6 +29407,42 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", + "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -26982,6 +29534,22 @@ "ws": "*" } }, + "node_modules/isows": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", + "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -30502,12 +33070,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -30528,6 +33090,20 @@ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "license": "ISC" }, + "node_modules/json-to-pretty-yaml": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", + "integrity": "sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "remedial": "^1.0.7", + "remove-trailing-spaces": "^1.0.6" + }, + "engines": { + "node": ">= 0.2.0" + } + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -30621,9 +33197,9 @@ } }, "node_modules/knip": { - "version": "5.70.2", - "resolved": "https://registry.npmjs.org/knip/-/knip-5.70.2.tgz", - "integrity": "sha512-LI7DbeVnk7h9+FAet5KzzHNdDwJyqDa2+cn4uQfZYTfpuVjEqtGmYD9r5b9JEuOs4eVkf/7sskNhWXxELm3C/Q==", + "version": "5.86.0", + "resolved": "https://registry.npmjs.org/knip/-/knip-5.86.0.tgz", + "integrity": "sha512-tGpRCbP+L+VysXnAp1bHTLQ0k/SdC3M3oX18+Cpiqax1qdS25iuCPzpK8LVmAKARZv0Ijri81Wq09Rzk0JTl+Q==", "dev": true, "funding": [ { @@ -30641,13 +33217,14 @@ "fast-glob": "^3.3.3", "formatly": "^0.3.0", "jiti": "^2.6.0", - "js-yaml": "^4.1.1", "minimist": "^1.2.8", - "oxc-resolver": "^11.13.2", + "oxc-resolver": "^11.19.1", "picocolors": "^1.1.1", "picomatch": "^4.0.1", "smol-toml": "^1.5.2", "strip-json-comments": "5.0.3", + "unbash": "^2.2.0", + "yaml": "^2.8.2", "zod": "^4.1.11" }, "bin": { @@ -31015,9 +33592,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "license": "MIT" }, "node_modules/lodash.debounce": { @@ -31040,6 +33617,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.startcase": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", @@ -31060,6 +33644,23 @@ "dev": true, "license": "MIT" }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/log-update": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", @@ -31211,6 +33812,16 @@ "tslib": "^2.0.3" } }, + "node_modules/lower-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", + "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/lowercase-keys": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", @@ -31239,12 +33850,12 @@ } }, "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, "node_modules/lucide-react": { @@ -31323,6 +33934,16 @@ "tmpl": "1.0.5" } }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -31776,6 +34397,24 @@ "node": ">= 8" } }, + "node_modules/meros": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/meros/-/meros-1.3.2.tgz", + "integrity": "sha512-Q3mobPbvEx7XbwhnC1J1r60+5H6EZyNccdzSz0eGexJRwouUtTZxPVRGdqKtxlpD84ScK4+tIGldkqDtCKdI0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=13" + }, + "peerDependencies": { + "@types/node": ">=13" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/metro": { "version": "0.83.3", "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", @@ -33136,6 +35775,16 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -33238,13 +35887,12 @@ } }, "node_modules/next": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.33.tgz", - "integrity": "sha512-GiKHLsD00t4ACm1p00VgrI0rUFAC9cRDGReKyERlM57aeEZkOQGcZTpIbsGn0b562FTPJWmYfKwplfO9EaT6ng==", + "version": "14.2.35", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.35.tgz", + "integrity": "sha512-KhYd2Hjt/O1/1aZVX3dCwGXM1QmOV4eNM2UTacK5gipDdPN/oHHK/4oVGy7X8GMfPMsUTUEmGlsy0EY1YGAkig==", "license": "MIT", - "peer": true, "dependencies": { - "@next/env": "14.2.33", + "@next/env": "14.2.35", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -33293,7 +35941,6 @@ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@swc/counter": "^0.1.3", "tslib": "^2.4.0" @@ -33318,7 +35965,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -33364,9 +36010,9 @@ "license": "MIT" }, "node_modules/node-addon-api": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", - "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.6.0.tgz", + "integrity": "sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==", "license": "MIT", "optional": true, "engines": { @@ -33464,9 +36110,9 @@ "license": "MIT" }, "node_modules/node-mock-http": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.3.tgz", - "integrity": "sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", + "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", "license": "MIT" }, "node_modules/node-releases": { @@ -33499,15 +36145,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/normalize-url": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.0.tgz", @@ -33594,7 +36231,6 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -33843,17 +36479,6 @@ "dev": true, "license": "MIT" }, - "node_modules/optimism": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.1.tgz", - "integrity": "sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==", - "dependencies": { - "@wry/caches": "^1.0.0", - "@wry/context": "^0.7.0", - "@wry/trie": "^0.5.0", - "tslib": "^2.3.0" - } - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -33906,34 +36531,35 @@ } }, "node_modules/oxc-resolver": { - "version": "11.14.0", - "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.14.0.tgz", - "integrity": "sha512-i4wNrqhOd+4YdHJfHglHtFiqqSxXuzFA+RUqmmWN1aMD3r1HqUSrIhw17tSO4jwKfhLs9uw1wzFPmvMsWacStg==", + "version": "11.19.1", + "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.19.1.tgz", + "integrity": "sha512-qE/CIg/spwrTBFt5aKmwe3ifeDdLfA2NESN30E42X/lII5ClF8V7Wt6WIJhcGZjp0/Q+nQ+9vgxGk//xZNX2hg==", "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxc-resolver/binding-android-arm-eabi": "11.14.0", - "@oxc-resolver/binding-android-arm64": "11.14.0", - "@oxc-resolver/binding-darwin-arm64": "11.14.0", - "@oxc-resolver/binding-darwin-x64": "11.14.0", - "@oxc-resolver/binding-freebsd-x64": "11.14.0", - "@oxc-resolver/binding-linux-arm-gnueabihf": "11.14.0", - "@oxc-resolver/binding-linux-arm-musleabihf": "11.14.0", - "@oxc-resolver/binding-linux-arm64-gnu": "11.14.0", - "@oxc-resolver/binding-linux-arm64-musl": "11.14.0", - "@oxc-resolver/binding-linux-ppc64-gnu": "11.14.0", - "@oxc-resolver/binding-linux-riscv64-gnu": "11.14.0", - "@oxc-resolver/binding-linux-riscv64-musl": "11.14.0", - "@oxc-resolver/binding-linux-s390x-gnu": "11.14.0", - "@oxc-resolver/binding-linux-x64-gnu": "11.14.0", - "@oxc-resolver/binding-linux-x64-musl": "11.14.0", - "@oxc-resolver/binding-wasm32-wasi": "11.14.0", - "@oxc-resolver/binding-win32-arm64-msvc": "11.14.0", - "@oxc-resolver/binding-win32-ia32-msvc": "11.14.0", - "@oxc-resolver/binding-win32-x64-msvc": "11.14.0" + "@oxc-resolver/binding-android-arm-eabi": "11.19.1", + "@oxc-resolver/binding-android-arm64": "11.19.1", + "@oxc-resolver/binding-darwin-arm64": "11.19.1", + "@oxc-resolver/binding-darwin-x64": "11.19.1", + "@oxc-resolver/binding-freebsd-x64": "11.19.1", + "@oxc-resolver/binding-linux-arm-gnueabihf": "11.19.1", + "@oxc-resolver/binding-linux-arm-musleabihf": "11.19.1", + "@oxc-resolver/binding-linux-arm64-gnu": "11.19.1", + "@oxc-resolver/binding-linux-arm64-musl": "11.19.1", + "@oxc-resolver/binding-linux-ppc64-gnu": "11.19.1", + "@oxc-resolver/binding-linux-riscv64-gnu": "11.19.1", + "@oxc-resolver/binding-linux-riscv64-musl": "11.19.1", + "@oxc-resolver/binding-linux-s390x-gnu": "11.19.1", + "@oxc-resolver/binding-linux-x64-gnu": "11.19.1", + "@oxc-resolver/binding-linux-x64-musl": "11.19.1", + "@oxc-resolver/binding-openharmony-arm64": "11.19.1", + "@oxc-resolver/binding-wasm32-wasi": "11.19.1", + "@oxc-resolver/binding-win32-arm64-msvc": "11.19.1", + "@oxc-resolver/binding-win32-ia32-msvc": "11.19.1", + "@oxc-resolver/binding-win32-x64-msvc": "11.19.1" } }, "node_modules/p-cancelable": { @@ -33968,15 +36594,15 @@ } }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.0.tgz", + "integrity": "sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==", "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^1.2.1" }, "engines": { - "node": ">=6" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -33994,6 +36620,21 @@ "node": ">=8" } }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", @@ -34093,6 +36734,17 @@ "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", "license": "(MIT AND Zlib)" }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -34130,6 +36782,21 @@ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", "license": "MIT" }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -34195,6 +36862,17 @@ "node": ">= 0.8" } }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/patch-package": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", @@ -34379,6 +37057,17 @@ "node": ">= 6" } }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -34412,6 +37101,29 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "license": "MIT" }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", @@ -34543,21 +37255,21 @@ } }, "node_modules/pino-pretty": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.1.2.tgz", - "integrity": "sha512-3cN0tCakkT4f3zo9RXDIhy6GTvtYD6bK4CRBLN9j3E/ePqN1tugAXD5rGVfoChW6s0hiek+eyYlLNqc/BG7vBQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.1.3.tgz", + "integrity": "sha512-ttXRkkOz6WWC95KeY9+xxWL6AtImwbyMHrL1mSwqwW9u+vLp/WIElvHvCSDg0xO/Dzrggz1zv3rN5ovTRVowKg==", "dev": true, "license": "MIT", "dependencies": { "colorette": "^2.0.7", "dateformat": "^4.6.3", - "fast-copy": "^3.0.2", + "fast-copy": "^4.0.0", "fast-safe-stringify": "^2.1.1", "help-me": "^5.0.0", "joycon": "^3.1.1", "minimist": "^1.2.6", "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^2.0.0", + "pino-abstract-transport": "^3.0.0", "pump": "^3.0.0", "secure-json-parse": "^4.0.0", "sonic-boom": "^4.0.1", @@ -34567,6 +37279,16 @@ "pino-pretty": "bin.js" } }, + "node_modules/pino-pretty/node_modules/pino-abstract-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz", + "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, "node_modules/pino-pretty/node_modules/strip-json-comments": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz", @@ -34796,9 +37518,9 @@ "license": "MIT" }, "node_modules/preact": { - "version": "10.27.2", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.27.2.tgz", - "integrity": "sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==", + "version": "10.29.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.0.tgz", + "integrity": "sha512-wSAGyk2bYR1c7t3SZ3jHcM6xy0lcBcDel6lODcs9ME6Th++Dx2KU+6D3HD8wMMKGA8Wpw7OMd3/4RGzYRpzwRg==", "license": "MIT", "funding": { "type": "opencollective", @@ -34825,9 +37547,9 @@ } }, "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", "bin": { @@ -34841,9 +37563,9 @@ } }, "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, "license": "MIT", "dependencies": { @@ -34868,34 +37590,6 @@ "node": "^14.15.0 || >=16.0.0" } }, - "node_modules/prettier-plugin-solidity": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.4.3.tgz", - "integrity": "sha512-Mrr/iiR9f9IaeGRMZY2ApumXcn/C5Gs3S7B7hWB3gigBFML06C0yEyW86oLp0eqiA0qg+46FaChgLPJCj/pIlg==", - "dev": true, - "dependencies": { - "@solidity-parser/parser": "^0.20.1", - "semver": "^7.7.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "prettier": ">=2.3.0" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -34931,15 +37625,6 @@ "node": ">=6" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/process-warning": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", @@ -35179,10 +37864,13 @@ } }, "node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, "engines": { "node": ">=0.6" }, @@ -35497,15 +38185,15 @@ } }, "node_modules/react-instantsearch": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/react-instantsearch/-/react-instantsearch-7.20.0.tgz", - "integrity": "sha512-I7luR9MstQSe0olLqZj+DB5+U0P9Gd8mcNTWhqr0e+mKIWize6le+/BoGgvp8yJhBlXCSLLpbU9SvE0UilYcqQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/react-instantsearch/-/react-instantsearch-7.27.0.tgz", + "integrity": "sha512-j8UbK7c5Khd5hwNA5xcQdQqYPQbYb8i7n42UunQZxRoNTsLj1a8T8k4IcyVqwAjDxqNVnXJKL5qzb05ARRvcbQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6", - "instantsearch-ui-components": "0.15.0", - "instantsearch.js": "4.84.0", - "react-instantsearch-core": "7.20.0" + "@swc/helpers": "0.5.18", + "instantsearch-ui-components": "0.21.0", + "instantsearch.js": "4.91.0", + "react-instantsearch-core": "7.27.0" }, "peerDependencies": { "algoliasearch": ">= 3.1 < 6", @@ -35514,15 +38202,14 @@ } }, "node_modules/react-instantsearch-core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-7.20.0.tgz", - "integrity": "sha512-awTPtAEozGWNVcZ969fMBO1S61QPDT13NdIlDjtoeg6GF4ZN9TXH+B/kjK5OxN0WzdbWxrE1nPGNfH9lHS7ZMg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-7.27.0.tgz", + "integrity": "sha512-z2lkd2BNeKDF3OIRAPcJ4jiXIHAB2mY0paAcyRE/qQvDvKGTpkXe4/3GhMpnxv6vO+WontDlGaDrZBKVy/Ie4g==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6", - "ai": "^5.0.18", - "algoliasearch-helper": "3.26.1", - "instantsearch.js": "4.84.0", + "@swc/helpers": "0.5.18", + "algoliasearch-helper": "3.28.0", + "instantsearch.js": "4.91.0", "use-sync-external-store": "^1.0.0", "zod": "^3.25.76 || ^4", "zod-to-json-schema": "3.24.6" @@ -36010,9 +38697,9 @@ "peer": true }, "node_modules/regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", - "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" @@ -36096,23 +38783,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rehackt": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz", - "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", - "peerDependencies": { - "@types/react": "*", - "react": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - } - } - }, "node_modules/rehype": { "version": "13.0.2", "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", @@ -36457,6 +39127,30 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/remedial": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", + "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "engines": { + "node": "*" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true, + "license": "ISC" + }, + "node_modules/remove-trailing-spaces": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.9.tgz", + "integrity": "sha512-xzG7w5IRijvIkHIjDk65URsJJ7k4J95wmcArY5PRcmjldIOl7oTvG8+X2Ag690R7SfwiOcHrWZKVc1Pp5WIOzA==", + "dev": true, + "license": "MIT" + }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -36612,12 +39306,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restructure": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", - "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", - "license": "MIT" - }, "node_modules/ret": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", @@ -37118,6 +39806,18 @@ "node": ">= 0.8" } }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "node_modules/serialize-error": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", @@ -37336,7 +40036,6 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4" }, @@ -37345,17 +40044,17 @@ } }, "node_modules/shiki": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.15.0.tgz", - "integrity": "sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.21.0.tgz", + "integrity": "sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==", "license": "MIT", "dependencies": { - "@shikijs/core": "3.15.0", - "@shikijs/engine-javascript": "3.15.0", - "@shikijs/engine-oniguruma": "3.15.0", - "@shikijs/langs": "3.15.0", - "@shikijs/themes": "3.15.0", - "@shikijs/types": "3.15.0", + "@shikijs/core": "3.21.0", + "@shikijs/engine-javascript": "3.21.0", + "@shikijs/engine-oniguruma": "3.21.0", + "@shikijs/langs": "3.21.0", + "@shikijs/themes": "3.21.0", + "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } @@ -37374,7 +40073,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -37394,7 +40092,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -37411,7 +40108,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -37430,7 +40126,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -37474,28 +40169,37 @@ "license": "MIT" }, "node_modules/sitemap": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.2.tgz", - "integrity": "sha512-LwktpJcyZDoa0IL6KT++lQ53pbSrx2c9ge41/SeLTyqy2XUNA6uR4+P9u5IVo5lPeL2arAcOKn1aZAxoYbCKlQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-9.0.1.tgz", + "integrity": "sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==", "license": "MIT", "dependencies": { - "@types/node": "^17.0.5", + "@types/node": "^24.9.2", "@types/sax": "^1.2.1", "arg": "^5.0.0", "sax": "^1.4.1" }, "bin": { - "sitemap": "dist/cli.js" + "sitemap": "dist/esm/cli.js" }, "engines": { - "node": ">=14.0.0", - "npm": ">=6.0.0" + "node": ">=20.19.5", + "npm": ">=10.8.2" } }, "node_modules/sitemap/node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "version": "24.12.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz", + "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/sitemap/node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "license": "MIT" }, "node_modules/slash": { @@ -37538,9 +40242,9 @@ } }, "node_modules/smol-toml": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.5.2.tgz", - "integrity": "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz", + "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==", "license": "BSD-3-Clause", "engines": { "node": ">= 18" @@ -37566,16 +40270,15 @@ "license": "MIT" }, "node_modules/solhint": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/solhint/-/solhint-6.0.1.tgz", - "integrity": "sha512-Lew5nhmkXqHPybzBzkMzvvWkpOJSSLTkfTZwRriWvfR2naS4YW2PsjVGaoX9tZFmHh7SuS+e2GEGo5FPYYmJ8g==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/solhint/-/solhint-6.0.3.tgz", + "integrity": "sha512-LYiy1bN8X9eUsti13mbS4fY6ILVxhP6VoOgqbHxCsHl5VPnxOWf7U1V9ZvgizxdInKBMW82D1FNJO+daAcWHbA==", "dev": true, "license": "MIT", "dependencies": { "@solidity-parser/parser": "^0.20.2", "ajv": "^6.12.6", "ajv-errors": "^1.0.1", - "antlr4": "^4.13.1-patch-1", "ast-parents": "^0.0.1", "better-ajv-errors": "^2.0.2", "chalk": "^4.1.2", @@ -37605,20 +40308,6 @@ "resolved": "git+ssh://git@github.com/smartcontractkit/chainlink-solhint-rules.git#2f0a3a6c3475607bb0cf8ab1a1df979534453ba9", "dev": true }, - "node_modules/solhint-plugin-prettier": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/solhint-plugin-prettier/-/solhint-plugin-prettier-0.1.0.tgz", - "integrity": "sha512-SDOTSM6tZxZ6hamrzl3GUgzF77FM6jZplgL2plFBclj/OjKP8Z3eIPojKU73gRr0MvOS8ACZILn8a5g0VTz/Gw==", - "dev": true, - "dependencies": { - "@prettier/sync": "^0.3.0", - "prettier-linter-helpers": "^1.0.0" - }, - "peerDependencies": { - "prettier": "^3.0.0", - "prettier-plugin-solidity": "^1.0.0" - } - }, "node_modules/solhint/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -37816,6 +40505,16 @@ "node": ">= 10.x" } }, + "node_modules/sponge-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", + "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -37931,7 +40630,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "peer": true, "engines": { "node": ">=10.0.0" } @@ -37955,6 +40653,13 @@ "node": ">=0.6.19" } }, + "node_modules/string-env-interpolation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz", + "integrity": "sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==", + "dev": true, + "license": "MIT" + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -38199,7 +40904,6 @@ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", "license": "MIT", - "peer": true, "dependencies": { "client-only": "0.0.1" }, @@ -38325,18 +41029,19 @@ } }, "node_modules/swagger-client": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.36.0.tgz", - "integrity": "sha512-9fkjxGHXuKy20jj8zwE6RwgFSOGKAyOD5U7aKgW/+/futtHZHOdZeqiEkb97sptk2rdBv7FEiUQDNlWZR186RA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.37.0.tgz", + "integrity": "sha512-pzU+B+DkUbrSwlj4/E8sGeP1w84/CFgDJAt80fHu650TxnOHbqFLGQjiE6luvpRxTPdfK2zRHJP7I6CgUkI8yA==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.22.15", "@scarf/scarf": "=1.4.0", - "@swagger-api/apidom-core": "^1.0.0-rc.1", - "@swagger-api/apidom-error": "^1.0.0-rc.1", - "@swagger-api/apidom-json-pointer": "^1.0.0-rc.1", - "@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-rc.1", - "@swagger-api/apidom-reference": "^1.0.0-rc.1", + "@swagger-api/apidom-core": "^1.6.0", + "@swagger-api/apidom-error": "^1.6.0", + "@swagger-api/apidom-json-pointer": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.6.0", + "@swagger-api/apidom-ns-openapi-3-2": "^1.6.0", + "@swagger-api/apidom-reference": "^1.6.0", "@swaggerexpert/cookie": "^2.0.2", "deepmerge": "~4.3.0", "fast-json-patch": "^3.0.0-1", @@ -38351,18 +41056,18 @@ } }, "node_modules/swagger-ui-dist": { - "version": "5.30.2", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.30.2.tgz", - "integrity": "sha512-HWCg1DTNE/Nmapt+0m2EPXFwNKNeKK4PwMjkwveN/zn1cV2Kxi9SURd+m0SpdcSgWEK/O64sf8bzXdtUhigtHA==", + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.32.0.tgz", + "integrity": "sha512-nKZB0OuDvacB0s/lC2gbge+RigYvGRGpLLMWMFxaTUwfM+CfndVk9Th2IaTinqXiz6Mn26GK2zriCpv6/+5m3Q==", "license": "Apache-2.0", "dependencies": { "@scarf/scarf": "=1.4.0" } }, "node_modules/swagger-ui-react": { - "version": "5.30.2", - "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-5.30.2.tgz", - "integrity": "sha512-0tS9GOcswKuQrIpCyvDoCDs6xS8B6MRC+iE7P99WfVXDhAIU+U7iFHuS4e7zucSh9qXvcL7KsXs623c+4oBe6w==", + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-5.32.0.tgz", + "integrity": "sha512-2mmrtvfp0EA90pdT8qXTMu26ex03TG2bsjvDAwXhdfCm+9foyadYJN+nEvDHM6/c6/xtXbdAsb6cVxBvbltnpw==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.27.1", @@ -38376,7 +41081,7 @@ "ieee754": "^1.2.1", "immutable": "^3.x.x", "js-file-download": "^0.4.12", - "js-yaml": "=4.1.0", + "js-yaml": "=4.1.1", "lodash": "^4.17.21", "prop-types": "^15.8.1", "randexp": "^0.5.3", @@ -38394,7 +41099,7 @@ "reselect": "^5.1.1", "serialize-error": "^8.1.0", "sha.js": "^2.4.12", - "swagger-client": "^3.36.0", + "swagger-client": "^3.37.0", "url-parse": "^1.5.10", "xml": "=1.0.1", "xml-but-prettier": "^1.0.1", @@ -38414,30 +41119,54 @@ "@types/trusted-types": "^2.0.7" } }, - "node_modules/swagger-ui-react/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/swap-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", + "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", + "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "tslib": "^2.0.3" + } + }, + "node_modules/sync-fetch": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/sync-fetch/-/sync-fetch-0.6.0.tgz", + "integrity": "sha512-IELLEvzHuCfc1uTsshPK58ViSdNqXxlml1U+fmwJIKLYKOr/rAtBrorE2RYm5IHaMpDNlmC0fr1LAvdXvyheEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "^3.3.2", + "timeout-signal": "^2.0.0", + "whatwg-mimetype": "^4.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=18" } }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "node_modules/sync-fetch/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, "engines": { - "node": ">=0.10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -38451,9 +41180,9 @@ } }, "node_modules/tabbable": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.3.0.tgz", - "integrity": "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", + "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", "license": "MIT" }, "node_modules/table": { @@ -38541,6 +41270,7 @@ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.18.tgz", "integrity": "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==", "license": "MIT", + "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -38600,6 +41330,7 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "license": "MIT", + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -38623,6 +41354,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -38806,6 +41538,16 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "license": "MIT" }, + "node_modules/timeout-signal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/timeout-signal/-/timeout-signal-2.0.0.tgz", + "integrity": "sha512-YBGpG4bWsHoPvofT6y/5iqulfXIiIErl5B0LdtHT1mGXDFTAhhRrbUpTvBgYbovr+3cKblya2WAOcpoy90XguA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, "node_modules/tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", @@ -38872,6 +41614,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -39011,21 +41763,10 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "license": "Apache-2.0" }, - "node_modules/ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ts-jest": { - "version": "29.4.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz", - "integrity": "sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==", + "version": "29.4.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz", + "integrity": "sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==", "dev": true, "license": "MIT", "dependencies": { @@ -39088,6 +41829,13 @@ "node": ">=10" } }, + "node_modules/ts-log": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.7.tgz", + "integrity": "sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==", + "dev": true, + "license": "MIT" + }, "node_modules/ts-mixer": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", @@ -39175,13 +41923,13 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.20.6", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", - "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "devOptional": true, "license": "MIT", "dependencies": { - "esbuild": "~0.25.0", + "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" }, "bin": { @@ -39194,6 +41942,464 @@ "fsevents": "~2.3.3" } }, + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.0.tgz", + "integrity": "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.0.tgz", + "integrity": "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.0.tgz", + "integrity": "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.0.tgz", + "integrity": "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz", + "integrity": "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.0.tgz", + "integrity": "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.0.tgz", + "integrity": "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.0.tgz", + "integrity": "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.0.tgz", + "integrity": "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.0.tgz", + "integrity": "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.0.tgz", + "integrity": "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.0.tgz", + "integrity": "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.0.tgz", + "integrity": "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.0.tgz", + "integrity": "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.0.tgz", + "integrity": "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.0.tgz", + "integrity": "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.0.tgz", + "integrity": "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.0.tgz", + "integrity": "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.0.tgz", + "integrity": "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.0.tgz", + "integrity": "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.0.tgz", + "integrity": "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.0.tgz", + "integrity": "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.0.tgz", + "integrity": "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.0.tgz", + "integrity": "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.0.tgz", + "integrity": "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.0.tgz", + "integrity": "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/esbuild": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.0.tgz", + "integrity": "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==", + "devOptional": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.0", + "@esbuild/android-arm": "0.27.0", + "@esbuild/android-arm64": "0.27.0", + "@esbuild/android-x64": "0.27.0", + "@esbuild/darwin-arm64": "0.27.0", + "@esbuild/darwin-x64": "0.27.0", + "@esbuild/freebsd-arm64": "0.27.0", + "@esbuild/freebsd-x64": "0.27.0", + "@esbuild/linux-arm": "0.27.0", + "@esbuild/linux-arm64": "0.27.0", + "@esbuild/linux-ia32": "0.27.0", + "@esbuild/linux-loong64": "0.27.0", + "@esbuild/linux-mips64el": "0.27.0", + "@esbuild/linux-ppc64": "0.27.0", + "@esbuild/linux-riscv64": "0.27.0", + "@esbuild/linux-s390x": "0.27.0", + "@esbuild/linux-x64": "0.27.0", + "@esbuild/netbsd-arm64": "0.27.0", + "@esbuild/netbsd-x64": "0.27.0", + "@esbuild/openbsd-arm64": "0.27.0", + "@esbuild/openbsd-x64": "0.27.0", + "@esbuild/openharmony-arm64": "0.27.0", + "@esbuild/sunos-x64": "0.27.0", + "@esbuild/win32-arm64": "0.27.0", + "@esbuild/win32-ia32": "0.27.0", + "@esbuild/win32-x64": "0.27.0" + } + }, "node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", @@ -39334,9 +42540,9 @@ } }, "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", "license": "MIT" }, "node_modules/uglify-js": { @@ -39359,6 +42565,16 @@ "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", "license": "MIT" }, + "node_modules/unbash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unbash/-/unbash-2.2.0.tgz", + "integrity": "sha512-X2wH19RAPZE3+ldGicOkoj/SIA83OIxcJ6Cuaw23hf8Xc6fQpvZXY0SftE2JgS0QhYLUG4uwodSI3R53keyh7w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + } + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -39378,6 +42594,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/uncrypto": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", @@ -39385,35 +42611,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "license": "MIT" - }, - "node_modules/unicode-properties": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", - "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.0", - "unicode-trie": "^2.0.0" - } - }, - "node_modules/unicode-trie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", - "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", - "license": "MIT", - "dependencies": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, - "node_modules/unicode-trie/node_modules/pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.20.0.tgz", + "integrity": "sha512-PZDAAlMkNw5ZzN/ebfyrwzrMWfIf7Jbn9iM/I6SF456OKrb2wnfqVowaxEY/cMAM8MjFu1zhdpJyA0L+rTYwNw==", "license": "MIT" }, "node_modules/unified": { @@ -39436,14 +42636,14 @@ } }, "node_modules/unifont": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.6.0.tgz", - "integrity": "sha512-5Fx50fFQMQL5aeHyWnZX9122sSLckcDvcfFiBf3QYeHa7a1MKJooUy52b67moi2MJYkrfo/TWY+CoLdr/w0tTA==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.3.tgz", + "integrity": "sha512-b0GtQzKCyuSHGsfj5vyN8st7muZ6VCI4XD4vFlr7Uy1rlWVYxC3npnfk8MyreHxJYrz1ooLDqDzFe9XqQTlAhA==", "license": "MIT", "dependencies": { - "css-tree": "^3.0.0", - "ofetch": "^1.4.1", - "ohash": "^2.0.0" + "css-tree": "^3.1.0", + "ofetch": "^1.5.1", + "ohash": "^2.0.11" } }, "node_modules/unist-util-filter": { @@ -39552,9 +42752,9 @@ } }, "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", @@ -39602,6 +42802,32 @@ "node": ">= 4.0.0" } }, + "node_modules/unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "normalize-path": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unixify/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -39655,9 +42881,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", - "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "funding": [ { "type": "opencollective", @@ -39684,6 +42910,26 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -39703,6 +42949,13 @@ "requires-port": "^1.0.0" } }, + "node_modules/urlpattern-polyfill": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", + "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==", + "dev": true, + "license": "MIT" + }, "node_modules/use-callback-ref": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", @@ -40104,6 +43357,16 @@ "license": "MIT", "peer": true }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -40389,9 +43652,9 @@ } }, "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -40444,7 +43707,6 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "license": "ISC", - "peer": true, "engines": { "node": ">=10" } @@ -40456,15 +43718,18 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", - "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yargs": { @@ -40472,7 +43737,6 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "license": "MIT", - "peer": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -40499,15 +43763,13 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -40517,7 +43779,6 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", - "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -40566,17 +43827,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "node_modules/zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "dependencies": { - "zen-observable": "0.8.15" + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/zenscroll": { @@ -40595,9 +43856,9 @@ } }, "node_modules/zod-to-json-schema": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz", - "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==", + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", + "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", "license": "ISC", "peerDependencies": { "zod": "^3.25 || ^4" diff --git a/package.json b/package.json index 9da1a0bf9eb..36924aff58f 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,14 @@ "astro": "astro", "dev": "astro dev", "start": "astro dev", - "build": "astro build && npm run pin-sol-version", + "build": "astro build && npm run pin-sol-version && node scripts/cleanup-vercel-function.mjs", "preview": "astro preview", "pin-sol-version": "tsx --require tsconfig-paths/register src/scripts/helper/pin-solver-dist.ts", "linkcheckWrapper": "tsx --require tsconfig-paths/register src/scripts/link-check/linkcheckWrapper.ts", "linkcheck-internal": "tsx --require tsconfig-paths/register src/scripts/link-check/linkcheck.ts", "linkcheck-external": "tsx --require tsconfig-paths/register src/scripts/link-check/linkcheck.ts --mode=external", "compare-chains-metadata": "tsx --require tsconfig-paths/register src/scripts/chains-metadata.ts", + "graphql:schema": "graphql-codegen --config codegen.ts && prettier --write src/lib/ccip/graphql/__generated__/ src/lib/ccip/graphql/schema.graphql.json", "fetch-selectors": "npx tsx --require tsconfig-paths/register src/scripts/ccip/fetch-selectors.ts", "detect-new-tokens": "npx tsx --require tsconfig-paths/register src/scripts/ccip/detect-new-tokens.ts", "generate-token-report": "npx tsx --require tsconfig-paths/register src/scripts/ccip/generate-token-report.ts", @@ -55,18 +56,16 @@ }, "dependencies": { "@11ty/eleventy-fetch": "^4.0.1", - "@algolia/client-search": "^5.41.0", - "@apollo/client": "^3.14.0", - "@astro-community/astro-embed-youtube": "^0.5.9", - "@astrojs/mdx": "^4.3.12", - "@astrojs/partytown": "^2.1.4", + "@astro-community/astro-embed-youtube": "^0.5.10", + "@astrojs/mdx": "^4.3.14", + "@astrojs/partytown": "^2.1.5", "@astrojs/preact": "^4.1.3", "@astrojs/prism": "^3.3.0", "@astrojs/react": "^4.4.2", - "@astrojs/sitemap": "^3.6.0", + "@astrojs/sitemap": "^3.7.1", "@astrojs/tailwind": "^6.0.2", - "@chainlink/blocks": "^1.3.1", "@astrojs/vercel": "^8.2.11", + "@chainlink/blocks": "^1.3.4", "@chainlink/cl-search-frontend": "^0.12.1", "@chainlink/components": "^0.4.18", "@chainlink/contracts": "1.5.0", @@ -76,57 +75,66 @@ "@chainlink/local": "0.2.7-beta", "@chainlink/solana-sdk": "^0.2.2", "@metamask/providers": "^22.1.1", - "@nanostores/persistent": "^1.1.0", + "@nanostores/persistent": "^1.3.3", "@nanostores/preact": "^0.5.2", "@nanostores/react": "^0.8.4", - "@openzeppelin/contracts": "5.4.0", - "@solana-program/compute-budget": "^0.11.0", + "@openzeppelin/contracts": "5.6.1", + "@solana-program/compute-budget": "^0.12.0", "@solana-program/system": "^0.10.0", "@solana-program/token": "^0.9.0", - "@solana-program/token-2022": "^0.6.1", - "@solana/kit": "^5.0.0", - "@solana/react": "^5.0.0", + "@solana-program/token-2022": "^0.8.0", + "@solana/kit": "^5.5.1", + "@solana/react": "^5.5.1", "@solana/wallet-adapter-base": "^0.9.27", "@solana/wallet-adapter-coinbase": "^0.1.23", "@solana/wallet-adapter-react": "^0.15.39", "@solana/wallet-adapter-react-ui": "^0.9.39", "@solana/wallet-adapter-solflare": "^0.6.32", "@solana/wallet-adapter-trust": "^0.1.17", - "@supabase/supabase-js": "^2.84.0", - "astro": "^5.16.0", + "@supabase/supabase-js": "^2.99.1", + "astro": "^5.18.1", "bignumber.js": "^9.3.1", "bs58": "^6.0.0", "clipboard": "^2.0.11", "dotenv": "^16.6.1", - "ethers": "^6.15.0", - "focus-trap-react": "^11.0.4", + "ethers": "^6.16.0", + "focus-trap-react": "^11.0.6", + "fuse.js": "^7.1.0", "github-slugger": "^2.0.0", - "lodash": "^4.17.21", + "graphql": "^16.13.1", + "graphql-request": "^7.4.0", + "lodash": "^4.17.23", + "lru-cache": "^11.2.7", "marked": "^15.0.12", "nanostores": "^0.11.4", + "next": "14.2.35", + "p-limit": "^7.3.0", "pino": "^9.14.0", - "preact": "^10.27.2", - "react-instantsearch": "^7.20.0", + "preact": "^10.29.0", + "react-instantsearch": "^7.27.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "rehype-wrap-all": "^1.1.0", "remark-directive": "^3.0.1", - "swagger-ui-dist": "^5.30.1", - "swagger-ui-react": "^5.30.1", + "swagger-ui-dist": "^5.32.0", + "swagger-ui-react": "^5.32.0", "tweetnacl": "^1.0.3", "uuid": "^11.1.0" }, "devDependencies": { "@apidevtools/swagger-parser": "^10.1.1", + "@graphql-codegen/cli": "^6.2.1", + "@graphql-codegen/client-preset": "^5.2.4", + "@graphql-codegen/introspection": "^5.0.1", "@jest/globals": "^29.7.0", "@project-serum/anchor": "^0.26.0", "@rollup/plugin-yaml": "^4.1.2", "@types/jest": "^29.5.14", - "@types/lodash": "^4.17.21", - "@types/node": "^20.19.25", + "@types/lodash": "^4.17.24", + "@types/node": "^20.19.37", "@types/node-fetch": "^2.6.13", - "@types/prismjs": "^1.26.5", - "@types/react": "^19.2.7", + "@types/prismjs": "^1.26.6", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/swagger-ui-dist": "^3.30.6", "@types/swagger-ui-react": "^5.18.0", @@ -137,31 +145,28 @@ "eslint-config-standard": "^17.1.0", "eslint-plugin-import": "^2.32.0", "eslint-plugin-n": "^15.7.0", - "eslint-plugin-prettier": "^5.5.0", + "eslint-plugin-prettier": "^5.5.5", "eslint-plugin-promise": "^6.1.1", "husky": "^9.1.7", "jest-yaml-transform": "^0.2.0", - "knip": "^5.70.1", + "knip": "^5.86.0", "lint-staged": "^15.5.2", "openapi-types": "^12.1.3", - "pino-pretty": "^13.1.2", - "prettier": "^3.5.3", + "pino-pretty": "^13.1.3", + "prettier": "^3.8.1", "prettier-plugin-astro": "^0.14.1", "remark-gfm": "^4.0.0", "remark-mdx": "^3.1.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", - "solhint": "^6.0.1", + "solhint": "^6.0.3", "solhint-plugin-chainlink-solidity": "github:smartcontractkit/chainlink-solhint-rules#v1.3.0", - "ts-jest": "^29.4.5", - "prettier-plugin-solidity": "^1.4.3", - "solhint-plugin-prettier": "^0.1.0", - "tailwindcss": "^3.4.18", + "ts-jest": "^29.4.6", "tsconfig-paths": "^4.2.0", - "tsx": "^4.20.6", + "tsx": "^4.21.0", "typescript": "^5.9.3", "unified": "^11.0.4", - "unist-util-visit": "^5.0.0", + "unist-util-visit": "^5.1.0", "vite": "^6.4.1" }, "lint-staged": { diff --git a/public/api/ccip/v1/openapi.json b/public/api/ccip/v1/openapi.json index 8cf38841257..f0987066527 100644 --- a/public/api/ccip/v1/openapi.json +++ b/public/api/ccip/v1/openapi.json @@ -2,8 +2,8 @@ "openapi": "3.0.0", "info": { "title": "CCIP Docs config API", - "description": "API for retrieving CCIP chain, token, and lane information.\n\nTo get started quickly, you can download our [Postman Collection](/api/ccip/v1/postman-collection.json) which includes all endpoints and example requests.", - "version": "1.5.0", + "description": "API for retrieving CCIP chain, token, lane, and rate limits information.\n\nTo get started quickly, you can download our [Postman Collection](/api/ccip/v1/postman-collection.json) which includes all endpoints and example requests.", + "version": "1.16.0", "contact": { "name": "File issues", "url": "https://github.com/smartcontractkit/documentation/issues/new/choose" @@ -34,7 +34,7 @@ }, { "name": "lanes", - "description": "Cross-chain lane information endpoints" + "description": "Cross-chain lane information endpoints with rate limits" } ], "paths": { @@ -101,6 +101,35 @@ "default": "false" }, "description": "When set to 'true', returns detailed fee token information including addresses, names, and decimals instead of just symbol strings" + }, + { + "name": "search", + "in": "query", + "schema": { + "type": "string", + "maxLength": 100 + }, + "description": "Unified search query. Automatically detects query type: selector (>17 digits), chainId (≤17 digits or Solana base58 hash), internalId (kebab-case), or displayName (fuzzy text search). Cannot be combined with chainId, selector, or internalId filters.", + "example": "ethereum" + }, + { + "name": "family", + "in": "query", + "schema": { + "type": "string", + "enum": ["evm", "solana", "aptos", "sui", "tron", "canton", "ton", "stellar", "starknet"] + }, + "description": "Filter results by chain family. Only effective when using the search parameter." + }, + { + "name": "internalIdFormat", + "in": "query", + "schema": { + "type": "string", + "enum": ["directory", "selector"], + "default": "selector" + }, + "description": "Format for internal IDs in the response. 'selector' uses canonical selector names (e.g., 'ethereum-mainnet'), 'directory' uses chains.json keys (e.g., 'mainnet'). Only applies when outputKey=internalId." } ], "responses": { @@ -136,10 +165,11 @@ "tokenAdminRegistry": "0xb22764f98dD05c789929716D677382Df22C05Cb6", "tokenPoolFactory": "0x17D8a409fE2ceF2d3808bcB61F14aBEFfc28876e", "chainType": "evm", - "chainFamily": "evm" + "chainFamily": "evm", + "supported": true } }, - "svm": { + "solana": { "solana-devnet": { "chainId": "solana-devnet", "displayName": "Solana Devnet", @@ -150,7 +180,52 @@ "rmn": "CRmNVnB7S6SqEPFG6m9dVp9fJJCjr3TC2TiAWB3RqNod", "feeQuoter": "FqbCVbS7a4ndxs9xZ8UmfL6LQsUhAJNkWxW3duJRrCWD", "chainType": "solana", - "chainFamily": "svm" + "chainFamily": "solana", + "supported": true + } + } + }, + "ignored": [] + } + }, + "search": { + "summary": "Search response (includes both supported and unsupported chains)", + "value": { + "metadata": { + "environment": "testnet", + "timestamp": "2024-03-14T12:00:00Z", + "requestId": "123e4567-e89b-12d3-a456-426614174000", + "ignoredChainCount": 0, + "validChainCount": 2, + "searchQuery": "solana", + "searchType": "displayName" + }, + "data": { + "solana": { + "solana-devnet": { + "chainId": "EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG", + "displayName": "Solana Devnet", + "selector": "16015286601757825753", + "internalId": "solana-devnet", + "feeTokens": ["LINK", "SOL"], + "router": "CCiPv7hcmEqNdMdJgmHDJmEJyCkBgLqxmcf87R1Gho6H", + "rmn": "CRmNVnB7S6SqEPFG6m9dVp9fJJCjr3TC2TiAWB3RqNod", + "feeQuoter": "FqbCVbS7a4ndxs9xZ8UmfL6LQsUhAJNkWxW3duJRrCWD", + "chainType": "solana", + "chainFamily": "solana", + "supported": true + }, + "solana-testnet": { + "chainId": "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z", + "displayName": "Solana Testnet", + "selector": "6302590918974934319", + "internalId": "solana-testnet", + "feeTokens": [], + "router": "", + "rmn": "", + "chainType": "solana", + "chainFamily": "solana", + "supported": false } } }, @@ -200,7 +275,8 @@ "tokenAdminRegistry": "0xb22764f98dD05c789929716D677382Df22C05Cb6", "tokenPoolFactory": "0x17D8a409fE2ceF2d3808bcB61F14aBEFfc28876e", "chainType": "evm", - "chainFamily": "evm" + "chainFamily": "evm", + "supported": true } } }, @@ -278,6 +354,16 @@ "default": "chainId" }, "description": "Key to use for organizing the response data" + }, + { + "name": "internalIdFormat", + "in": "query", + "schema": { + "type": "string", + "enum": ["directory", "selector"], + "default": "selector" + }, + "description": "Format for internal IDs in the response. 'selector' uses canonical selector names (e.g., 'ethereum-mainnet'), 'directory' uses chains.json keys (e.g., 'mainnet'). Only applies when outputKey=internalId." } ], "responses": { @@ -361,6 +447,474 @@ } } }, + "/tokens/{tokenCanonicalSymbol}": { + "get": { + "tags": ["tokens"], + "summary": "Retrieve detailed token information with custom finality data", + "description": "Returns detailed information about a specific CCIP token, including chain-specific configurations and custom finality settings (minBlockConfirmation and hasCustomFinality).", + "operationId": "getTokenDetail", + "parameters": [ + { + "name": "tokenCanonicalSymbol", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "The canonical symbol for the token (e.g., LINK, USDC, BETS)", + "example": "BETS" + }, + { + "name": "environment", + "in": "query", + "required": true, + "schema": { + "type": "string", + "enum": ["mainnet", "testnet"] + }, + "description": "The network environment to query" + }, + { + "name": "outputKey", + "in": "query", + "schema": { + "type": "string", + "enum": ["chainId", "selector", "internalId"], + "default": "chainId" + }, + "description": "Key to use for organizing the response data by chain" + }, + { + "name": "internalIdFormat", + "in": "query", + "schema": { + "type": "string", + "enum": ["directory", "selector"], + "default": "selector" + }, + "description": "Format for internal IDs in the response. 'selector' uses canonical selector names (e.g., 'ethereum-mainnet'), 'directory' uses chains.json keys (e.g., 'mainnet'). Only applies when outputKey=internalId." + } + ], + "responses": { + "200": { + "description": "Successful response with token detail data", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenDetailApiResponse" + }, + "examples": { + "v2Pool": { + "summary": "v2.0 pool (BETS) with CCV features enabled", + "description": "For v2.0+ pools (supportsV2Features=true), ccvConfig contains thresholdAmount and customFinality shows block confirmation settings. Different chains may show different scenarios: customFinality enabled (minBlockConfirmation > 0), disabled (minBlockConfirmation = 0), or downstream API error (both null).", + "value": { + "metadata": { + "environment": "mainnet", + "timestamp": "2025-12-10T12:00:00Z", + "requestId": "123e4567-e89b-12d3-a456-426614174000", + "tokenSymbol": "BETS", + "chainCount": 3 + }, + "data": { + "1": { + "chainId": 1, + "chainName": "Ethereum", + "decimals": 18, + "destinations": ["56", "137"], + "name": "BetSwirl Token", + "poolAddress": "0x1B7492C3bD23A4aDB448710e4275FF14A5288932", + "poolType": "lockRelease", + "symbol": "BETS", + "tokenAddress": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "customFinality": { + "hasCustomFinality": false, + "minBlockConfirmation": 0 + }, + "ccvConfig": { + "thresholdAmount": "10000000000000000000000" + }, + "pool": { + "address": "0x1B7492C3bD23A4aDB448710e4275FF14A5288932", + "rawType": "LockReleaseTokenPool", + "type": "lockRelease", + "version": "2.0.0", + "advancedPoolHooks": null, + "supportsV2Features": true + } + }, + "137": { + "chainId": 137, + "chainName": "Polygon", + "decimals": 18, + "destinations": ["1"], + "name": "BetSwirl Token", + "poolAddress": "0x5678...9ABC", + "poolType": "burnMint", + "symbol": "BETS", + "tokenAddress": "0xDEF0...1234", + "customFinality": { + "hasCustomFinality": true, + "minBlockConfirmation": 5 + }, + "ccvConfig": { + "thresholdAmount": "5000000000000000000000" + }, + "pool": { + "address": "0x5678...9ABC", + "rawType": "BurnMintTokenPool", + "type": "burnMint", + "version": "2.0.0", + "advancedPoolHooks": null, + "supportsV2Features": true + } + }, + "56": { + "chainId": 56, + "chainName": "BNB Smart Chain", + "decimals": 18, + "destinations": ["1"], + "name": "BetSwirl Token", + "poolAddress": "0xABCD...1234", + "poolType": "burnMint", + "symbol": "BETS", + "tokenAddress": "0x9876...FEDC", + "customFinality": { + "hasCustomFinality": null, + "minBlockConfirmation": null + }, + "ccvConfig": { + "thresholdAmount": null + }, + "pool": { + "address": "0xABCD...1234", + "rawType": "BurnMintTokenPool", + "type": "burnMint", + "version": "2.0.0", + "advancedPoolHooks": null, + "supportsV2Features": true + } + } + } + } + }, + "v1Pool": { + "summary": "v1.x pool (GHO) with CCV features not supported", + "description": "For v1.x pools (supportsV2Features=false), both ccvConfig and customFinality are null because these features are not supported by v1.x pools.", + "value": { + "metadata": { + "environment": "mainnet", + "timestamp": "2025-12-10T12:00:00Z", + "requestId": "456e7890-e89b-12d3-a456-426614174000", + "tokenSymbol": "GHO", + "chainCount": 1 + }, + "data": { + "1": { + "chainId": 1, + "chainName": "Ethereum", + "decimals": 18, + "destinations": ["42161"], + "name": "Gho Token", + "poolAddress": "0xGHO1...5678", + "poolType": "lockRelease", + "symbol": "GHO", + "tokenAddress": "0x40D1...2C2f", + "customFinality": null, + "ccvConfig": null, + "pool": { + "address": "0xGHO1...5678", + "rawType": "LockReleaseTokenPool", + "type": "lockRelease", + "version": "1.6.0", + "advancedPoolHooks": null, + "supportsV2Features": false + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Invalid request parameters", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Token not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + }, + "example": { + "error": "NOT_FOUND", + "message": "Token 'INVALID' not found" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/tokens/{tokenCanonicalSymbol}/chains/{chain}": { + "get": { + "tags": ["tokens"], + "summary": "Retrieve token directory data for a specific chain", + "description": "Returns detailed token configuration for a specific chain, including pool information, CCV (Cross-Chain Verifier) configuration, and lane-specific verifiers and rate limits. This endpoint provides the data needed for cross-chain token transfer interfaces.", + "operationId": "getTokenDirectory", + "parameters": [ + { + "name": "tokenCanonicalSymbol", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "The canonical symbol for the token (e.g., LINK, USDC, LBTC)", + "example": "LBTC" + }, + { + "name": "chain", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "The source chain identifier (e.g., mainnet, ethereum-testnet-sepolia)", + "example": "mainnet" + }, + { + "name": "environment", + "in": "query", + "required": true, + "schema": { + "type": "string", + "enum": ["mainnet", "testnet"] + }, + "description": "The network environment to query" + }, + { + "name": "outputKey", + "in": "query", + "schema": { + "type": "string", + "enum": ["chainId", "selector", "internalId"], + "default": "chainId" + }, + "description": "Key format to use for lane keys in the response" + }, + { + "name": "internalIdFormat", + "in": "query", + "schema": { + "type": "string", + "enum": ["directory", "selector"], + "default": "selector" + }, + "description": "Format for internalId values in the response. 'selector' uses canonical selector names (e.g., 'ethereum-mainnet'), 'directory' uses chains.json keys (e.g., 'mainnet')." + } + ], + "responses": { + "200": { + "description": "Successful response with token directory data", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenDirectoryApiResponse" + }, + "examples": { + "v2Pool": { + "summary": "v2.0 pool (LBTC) with CCV features enabled", + "description": "For v2.0+ pools (supportsV2Features=true), ccvConfig contains thresholdAmount and verifiers include additional threshold verifiers in aboveThreshold array. customFinality shows block confirmation settings.", + "value": { + "metadata": { + "environment": "mainnet", + "timestamp": "2025-12-10T12:00:00Z", + "requestId": "123e4567-e89b-12d3-a456-426614174000", + "symbol": "LBTC", + "sourceChain": "ethereum-mainnet" + }, + "data": { + "internalId": "ethereum-mainnet", + "chainId": 1, + "selector": "5009297550715157269", + "token": { + "address": "0x8236a87084f8B84306f72007F36F2618A5634494", + "decimals": 8 + }, + "pool": { + "address": "0x88E18636EfFC3b3cd520FC72B710eb99C0017BC7", + "rawType": "BurnMintTokenPool", + "type": "burnMint", + "version": "2.0.0", + "advancedPoolHooks": null, + "supportsV2Features": true + }, + "ccvConfig": { + "thresholdAmount": "100000000000" + }, + "customFinality": { + "hasCustomFinality": true, + "minBlockConfirmation": 5 + }, + "outboundLanes": { + "8453": { + "internalId": "ethereum-mainnet-base-1", + "chainId": 8453, + "selector": "15971525489660198786", + "rateLimits": { + "standard": { + "capacity": "3490000000", + "rate": "323148", + "isEnabled": true + }, + "custom": { + "capacity": "6980000000", + "rate": "646296", + "isEnabled": true + } + }, + "fees": { + "standardTransferFeeBps": 10, + "customTransferFeeBps": 25 + }, + "verifiers": { + "belowThreshold": ["0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D"], + "aboveThreshold": [ + "0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D", + "0xF4c7E640EdA248ef95972845a62bdC74237805dB" + ] + } + } + }, + "inboundLanes": { + "8453": { + "internalId": "ethereum-mainnet-base-1", + "chainId": 8453, + "selector": "15971525489660198786", + "rateLimits": { + "standard": null, + "custom": null + }, + "fees": null, + "verifiers": { + "belowThreshold": ["0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D"], + "aboveThreshold": ["0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D"] + } + } + } + } + } + }, + "v1Pool": { + "summary": "v1.x pool (GHO) with CCV features not supported", + "description": "For v1.x pools (supportsV2Features=false), both ccvConfig and customFinality are null because these features are not supported. Verifiers in lanes are also null.", + "value": { + "metadata": { + "environment": "mainnet", + "timestamp": "2025-12-10T12:00:00Z", + "requestId": "456e7890-e89b-12d3-a456-426614174000", + "symbol": "GHO", + "sourceChain": "ethereum-mainnet" + }, + "data": { + "internalId": "ethereum-mainnet", + "chainId": 1, + "selector": "5009297550715157269", + "token": { + "address": "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f", + "decimals": 18 + }, + "pool": { + "address": "0xGhoPool123...", + "rawType": "LockReleaseTokenPool", + "type": "lockRelease", + "version": "1.6.0", + "advancedPoolHooks": null, + "supportsV2Features": false + }, + "ccvConfig": null, + "customFinality": null, + "outboundLanes": { + "42161": { + "internalId": "arbitrum-mainnet", + "chainId": 42161, + "selector": "4949039107694359620", + "rateLimits": { + "standard": { + "capacity": "5000000000000000000000", + "rate": "1670000000000000000", + "isEnabled": true + }, + "custom": null + }, + "fees": null, + "verifiers": null + } + }, + "inboundLanes": {} + } + } + } + } + } + } + }, + "400": { + "description": "Invalid request parameters", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "404": { + "description": "Token or chain not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + }, + "example": { + "error": "NOT_FOUND", + "message": "Token 'INVALID' not found on chain 'mainnet'" + } + } + } + }, + "500": { + "description": "Internal server error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, "/lanes": { "get": { "tags": ["lanes"], @@ -450,6 +1004,16 @@ "default": "chainId" }, "description": "Key format to use for organizing the lane keys in the response" + }, + { + "name": "internalIdFormat", + "in": "query", + "schema": { + "type": "string", + "enum": ["directory", "selector"], + "default": "selector" + }, + "description": "Format for internal IDs in the response. 'selector' uses canonical selector names (e.g., 'ethereum-mainnet'), 'directory' uses chains.json keys (e.g., 'mainnet'). Only applies when outputKey=internalId." } ], "responses": { @@ -576,9 +1140,22 @@ "type": "integer", "minimum": 0, "description": "Number of valid chains in the response" + }, + "searchQuery": { + "type": "string", + "description": "The search query that was used (only present when search parameter was provided)" + }, + "searchType": { + "$ref": "#/components/schemas/SearchType", + "description": "The detected type of search query (only present when search parameter was provided)" } } }, + "SearchType": { + "type": "string", + "enum": ["selector", "chainId", "internalId", "displayName"], + "description": "The detected type of search query. 'selector' for CCIP selectors (>17 digits), 'chainId' for chain IDs (≤17 digits or Solana base58), 'internalId' for kebab-case identifiers, 'displayName' for fuzzy text search." + }, "FeeTokenEnriched": { "type": "object", "required": ["symbol", "name", "address", "decimals"], @@ -614,7 +1191,8 @@ "router", "rmn", "chainType", - "chainFamily" + "chainFamily", + "supported" ], "properties": { "chainId": { @@ -623,7 +1201,7 @@ }, "displayName": { "type": "string", - "description": "Human-readable name of the chain" + "description": "Human-readable name of the chain. For supported chains, this comes from configuration. For unsupported chains, it is derived from the internalId." }, "selector": { "type": "string", @@ -650,25 +1228,29 @@ "description": "Detailed fee token information (when enrichFeeTokens=true)" } ], - "description": "Fee tokens - either as string symbols or enriched objects with addresses" + "description": "Fee tokens - either as string symbols or enriched objects with addresses. Empty array for unsupported chains." }, "router": { "type": "string", - "description": "CCIP Router contract address" + "description": "CCIP Router contract address. Empty string for unsupported chains." }, "rmn": { "type": "string", - "description": "Risk Management Network contract address" + "description": "Risk Management Network contract address. Empty string for unsupported chains." }, "chainType": { "type": "string", - "enum": ["evm", "solana", "aptos"], + "enum": ["evm", "solana", "aptos", "sui", "canton", "ton", "tron", "stellar", "starknet"], "description": "Type of blockchain" }, "chainFamily": { "type": "string", - "enum": ["evm", "svm", "mvm"], - "description": "Blockchain family (EVM, Solana VM, Move VM)" + "enum": ["evm", "solana", "aptos", "sui", "tron", "canton", "ton", "stellar", "starknet"], + "description": "Blockchain family grouping" + }, + "supported": { + "type": "boolean", + "description": "Whether this chain is fully supported with complete configuration. Unsupported chains have minimal details (empty router, rmn, feeTokens)." }, "registryModule": { "type": "string", @@ -676,7 +1258,7 @@ }, "tokenAdminRegistry": { "type": "string", - "description": "Token Admin Registry contract address (EVM chains only)" + "description": "Token Admin Registry contract address (EVM and Aptos chains)" }, "tokenPoolFactory": { "type": "string", @@ -685,6 +1267,10 @@ "feeQuoter": { "type": "string", "description": "Fee Quoter address (Solana chains only)" + }, + "mcms": { + "type": "string", + "description": "MCMS (Multi-Chain Management Service) address (Aptos chains only)" } } }, @@ -730,19 +1316,61 @@ }, "description": "EVM chain details keyed by the specified output key" }, - "svm": { + "solana": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ChainDetails" + }, + "description": "Solana chain details keyed by the specified output key" + }, + "aptos": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ChainDetails" + }, + "description": "Aptos chain details keyed by the specified output key" + }, + "sui": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ChainDetails" + }, + "description": "Sui chain details keyed by the specified output key" + }, + "tron": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ChainDetails" + }, + "description": "Tron chain details keyed by the specified output key" + }, + "canton": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ChainDetails" + }, + "description": "Canton chain details keyed by the specified output key" + }, + "ton": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ChainDetails" }, - "description": "Solana VM chain details keyed by the specified output key" + "description": "TON chain details keyed by the specified output key" }, - "mvm": { + "stellar": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ChainDetails" }, - "description": "Move VM (Aptos) chain details keyed by the specified output key" + "description": "Stellar chain details keyed by the specified output key" + }, + "starknet": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ChainDetails" + }, + "description": "Starknet chain details keyed by the specified output key" } }, "description": "Chain details grouped by chain family" @@ -789,7 +1417,8 @@ }, "ChainInfo": { "type": "object", - "required": ["chainId", "displayName", "selector", "internalId", "chainType", "chainFamily"], + "description": "Chain information used in lane endpoints. Note: chainType and chainFamily are intentionally excluded from this schema for API responses.", + "required": ["chainId", "displayName", "selector", "internalId"], "properties": { "chainId": { "oneOf": [{ "type": "integer" }, { "type": "string" }], @@ -806,16 +1435,6 @@ "internalId": { "type": "string", "description": "Internal identifier used in configuration" - }, - "chainType": { - "type": "string", - "enum": ["evm", "solana", "aptos", "sui"], - "description": "Type of blockchain" - }, - "chainFamily": { - "type": "string", - "enum": ["evm", "mvm", "svm"], - "description": "Family of blockchain virtual machine" } } }, @@ -931,6 +1550,11 @@ "message": { "type": "string", "description": "Human-readable error message" + }, + "requestId": { + "type": "string", + "format": "uuid", + "description": "Unique identifier for the request, useful for debugging and support" } } }, @@ -989,7 +1613,7 @@ }, "poolType": { "type": "string", - "enum": ["lockRelease", "burnMint", "usdc", "feeTokenOnly"], + "enum": ["lockRelease", "burnMint", "usdc"], "description": "Type of pool for this token" }, "poolAddress": { @@ -1022,7 +1646,7 @@ }, "poolType": { "type": "string", - "enum": ["lockRelease", "burnMint", "usdc", "feeTokenOnly"], + "enum": ["lockRelease", "burnMint", "usdc"], "description": "Type of pool for this token" }, "poolAddress": { @@ -1046,6 +1670,108 @@ } } }, + "TokenDetailChainData": { + "type": "object", + "description": "Extended token chain data with custom finality and CCV information", + "allOf": [ + { + "$ref": "#/components/schemas/TokenChainData" + }, + { + "type": "object", + "properties": { + "customFinality": { + "nullable": true, + "allOf": [{ "$ref": "#/components/schemas/CustomFinalityConfig" }], + "description": "Custom finality configuration for v2.0+ pools. Null for v1.x pools (check pool.supportsV2Features). When present with hasCustomFinality=null and minBlockConfirmation=null, indicates downstream API error." + }, + "ccvConfig": { + "nullable": true, + "allOf": [{ "$ref": "#/components/schemas/CCVConfig" }], + "description": "CCV configuration for v2.0+ pools. Null for v1.x pools (check pool.supportsV2Features). When present with thresholdAmount=null, indicates downstream API error." + }, + "pool": { + "nullable": true, + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Pool contract address" + }, + "rawType": { + "type": "string", + "description": "Raw pool type from configuration (e.g., 'LockReleaseTokenPool', 'BurnMintTokenPool', 'USDCTokenPool')" + }, + "type": { + "type": "string", + "enum": ["lockRelease", "burnMint", "usdc"], + "description": "Normalized pool type" + }, + "version": { + "type": "string", + "description": "Pool contract version" + }, + "advancedPoolHooks": { + "type": "string", + "nullable": true, + "description": "Address of advanced pool hooks contract, or null if not configured" + }, + "supportsV2Features": { + "type": "boolean", + "description": "Whether this pool supports v2 features (customFinality, ccvConfig). When true and these fields have null values inside, it indicates a downstream API error rather than feature not supported." + } + }, + "description": "Pool information including version, hooks, and v2 feature support flag" + } + } + } + ] + }, + "TokenDetailMetadata": { + "type": "object", + "required": ["environment", "timestamp", "requestId", "tokenSymbol", "chainCount"], + "properties": { + "environment": { + "type": "string", + "enum": ["mainnet", "testnet"], + "description": "Network environment" + }, + "timestamp": { + "type": "string", + "format": "date-time", + "description": "Timestamp of the response" + }, + "requestId": { + "type": "string", + "format": "uuid", + "description": "Unique identifier for this request" + }, + "tokenSymbol": { + "type": "string", + "description": "Canonical symbol of the requested token" + }, + "chainCount": { + "type": "integer", + "description": "Number of chains this token is available on" + } + } + }, + "TokenDetailApiResponse": { + "type": "object", + "required": ["metadata", "data"], + "properties": { + "metadata": { + "$ref": "#/components/schemas/TokenDetailMetadata" + }, + "data": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TokenDetailChainData" + }, + "description": "Token data indexed by chain ID/selector, including custom finality information" + } + } + }, "TokenDetails": { "type": "object", "required": ["symbol", "lanes", "chains"], @@ -1120,6 +1846,304 @@ "description": "List of tokens that were ignored due to configuration issues" } } + }, + "TokenDirectoryMetadata": { + "type": "object", + "required": ["environment", "timestamp", "requestId", "symbol", "sourceChain"], + "properties": { + "environment": { + "type": "string", + "enum": ["mainnet", "testnet"], + "description": "Network environment" + }, + "timestamp": { + "type": "string", + "format": "date-time", + "description": "Timestamp of the response" + }, + "requestId": { + "type": "string", + "format": "uuid", + "description": "Unique identifier for this request" + }, + "symbol": { + "type": "string", + "description": "Canonical symbol of the requested token" + }, + "sourceChain": { + "type": "string", + "description": "Source chain identifier" + } + } + }, + "LaneVerifiers": { + "type": "object", + "description": "Pre-computed verifier sets for different transfer amounts. Only present for v2.0+ pools (supportsV2Features=true). For v1.x pools, the entire verifiers field is null. Values: empty array [] = no verifiers configured, [addr1, ...] = verifiers configured, null = downstream API error.", + "required": ["belowThreshold", "aboveThreshold"], + "properties": { + "belowThreshold": { + "nullable": true, + "type": "array", + "items": { + "type": "string" + }, + "description": "Verifier addresses used when transfer amount is below the threshold. Empty array [] if no verifiers configured, null if downstream API error." + }, + "aboveThreshold": { + "nullable": true, + "type": "array", + "items": { + "type": "string" + }, + "description": "Verifier addresses used when transfer amount is at or above the threshold (includes all belowThreshold verifiers plus additional threshold verifiers). Empty array [] if no verifiers configured, null if downstream API error." + } + } + }, + "RateLimiterConfig": { + "type": "object", + "description": "Rate limit configuration for a single direction (in or out)", + "required": ["capacity", "rate", "isEnabled"], + "properties": { + "capacity": { + "type": "string", + "description": "Maximum capacity of the rate limiter bucket (in token's smallest unit)" + }, + "rate": { + "type": "string", + "description": "Rate at which the bucket refills (tokens per second in smallest unit)" + }, + "isEnabled": { + "type": "boolean", + "description": "Whether rate limiting is enabled" + } + } + }, + "DirectionalRateLimits": { + "type": "object", + "description": "Rate limits for both directions (in and out) on a lane", + "properties": { + "in": { + "nullable": true, + "allOf": [{ "$ref": "#/components/schemas/RateLimiterConfig" }], + "description": "Inbound rate limit configuration" + }, + "out": { + "nullable": true, + "allOf": [{ "$ref": "#/components/schemas/RateLimiterConfig" }], + "description": "Outbound rate limit configuration" + } + } + }, + "TokenRateLimits": { + "type": "object", + "description": "Rate limits for both standard and custom transfers, each with in/out directions", + "required": ["standard", "custom"], + "properties": { + "standard": { + "nullable": true, + "allOf": [{ "$ref": "#/components/schemas/DirectionalRateLimits" }], + "description": "Standard transfer rate limit configuration" + }, + "custom": { + "nullable": true, + "allOf": [{ "$ref": "#/components/schemas/DirectionalRateLimits" }], + "description": "Custom (custom block confirmation) transfer rate limit configuration" + } + } + }, + "LaneFees": { + "type": "object", + "description": "Transfer fees for a lane in basis points (1 bps = 0.01%)", + "required": ["standardTransferFeeBps", "customTransferFeeBps"], + "properties": { + "standardTransferFeeBps": { + "type": "integer", + "description": "Standard transfer fee in basis points" + }, + "customTransferFeeBps": { + "type": "integer", + "description": "custom (custom block confirmation) transfer fee in basis points" + } + } + }, + "TokenDirectoryLane": { + "type": "object", + "description": "Lane configuration for outbound or inbound transfers. Use pool.supportsV2Features to interpret verifiers: false + null = v1.x pool (not supported), true + {null, null} = downstream error, true + {[], []} = not configured, true + {[...], [...]} = configured.", + "required": ["internalId", "chainId", "selector", "rateLimits", "fees", "verifiers"], + "properties": { + "internalId": { + "type": "string", + "description": "Internal identifier of the remote chain (destination for outbound, source for inbound)" + }, + "chainId": { + "oneOf": [{ "type": "integer" }, { "type": "string" }], + "description": "Chain ID of the remote chain" + }, + "selector": { + "type": "string", + "description": "CCIP chain selector of the remote chain" + }, + "rateLimits": { + "$ref": "#/components/schemas/TokenRateLimits", + "description": "Rate limits for both standard and custom transfers, with in/out directions" + }, + "fees": { + "nullable": true, + "allOf": [{ "$ref": "#/components/schemas/LaneFees" }], + "description": "Transfer fees in basis points, or null if not configured" + }, + "verifiers": { + "nullable": true, + "allOf": [{ "$ref": "#/components/schemas/LaneVerifiers" }], + "description": "Verifier configuration. For v1.x pools (pool.supportsV2Features=false): null. For v2.x pools: object with arrays or null values." + } + } + }, + "CCVConfig": { + "type": "object", + "description": "Cross-Chain Verifier (CCV) configuration for a pool. Only present for v2.0+ pools (check pool.supportsV2Features). For v1.x pools, the entire ccvConfig field is null.", + "required": ["thresholdAmount"], + "properties": { + "thresholdAmount": { + "type": "string", + "nullable": true, + "description": "Amount threshold (in token's smallest unit) above which additional threshold verifiers are required. Values: '0' = CCV not configured for this pool, 'N' (positive number) = CCV configured with threshold N, null = downstream API error fetching CCV config." + } + } + }, + "TokenDirectoryTokenInfo": { + "type": "object", + "required": ["address", "decimals"], + "properties": { + "address": { + "type": "string", + "description": "Token contract address" + }, + "decimals": { + "type": "integer", + "description": "Token decimals" + } + } + }, + "TokenDirectoryPoolInfo": { + "type": "object", + "required": ["address", "rawType", "type", "version", "advancedPoolHooks", "supportsV2Features"], + "properties": { + "address": { + "type": "string", + "description": "Pool contract address" + }, + "rawType": { + "type": "string", + "description": "Raw pool type from configuration (e.g., 'LockReleaseTokenPool', 'BurnMintTokenPool', 'USDCTokenPool')" + }, + "type": { + "type": "string", + "enum": ["lockRelease", "burnMint", "usdc"], + "description": "Normalized pool type" + }, + "version": { + "type": "string", + "description": "Pool contract version" + }, + "advancedPoolHooks": { + "type": "string", + "nullable": true, + "description": "Address of advanced pool hooks contract, or null if not configured" + }, + "supportsV2Features": { + "type": "boolean", + "description": "Whether this pool supports v2 features (customFinality, ccvConfig). When true and these fields have null values inside, it indicates a downstream API error rather than feature not supported." + } + } + }, + "CustomFinalityConfig": { + "type": "object", + "description": "Custom finality configuration for the token on this chain. Only present for v2.0+ pools (check pool.supportsV2Features). For v1.x pools, the entire customFinality field is null. When both hasCustomFinality and minBlockConfirmation are null inside the object, it indicates a downstream API error for a v2.x pool.", + "required": ["hasCustomFinality", "minBlockConfirmation"], + "properties": { + "hasCustomFinality": { + "type": "boolean", + "nullable": true, + "description": "Whether custom finality is enabled (derived from minBlockConfirmation > 0). Null indicates downstream API error." + }, + "minBlockConfirmation": { + "type": "integer", + "nullable": true, + "description": "Minimum block confirmations required. Null indicates downstream API error." + } + } + }, + "TokenDirectoryData": { + "type": "object", + "description": "Token directory data for a specific chain", + "required": [ + "internalId", + "chainId", + "selector", + "token", + "pool", + "ccvConfig", + "customFinality", + "outboundLanes", + "inboundLanes" + ], + "properties": { + "internalId": { + "type": "string", + "description": "Internal chain identifier" + }, + "chainId": { + "oneOf": [{ "type": "integer" }, { "type": "string" }], + "description": "Chain ID" + }, + "selector": { + "type": "string", + "description": "CCIP chain selector" + }, + "token": { + "$ref": "#/components/schemas/TokenDirectoryTokenInfo" + }, + "pool": { + "$ref": "#/components/schemas/TokenDirectoryPoolInfo" + }, + "ccvConfig": { + "nullable": true, + "allOf": [{ "$ref": "#/components/schemas/CCVConfig" }], + "description": "CCV configuration for v2.0+ pools. Null for v1.x pools (check pool.supportsV2Features). When present with thresholdAmount=null, indicates downstream API error." + }, + "customFinality": { + "nullable": true, + "allOf": [{ "$ref": "#/components/schemas/CustomFinalityConfig" }], + "description": "Custom finality configuration for v2.0+ pools. Null for v1.x pools (check pool.supportsV2Features). When present with hasCustomFinality=null and minBlockConfirmation=null, indicates downstream API error." + }, + "outboundLanes": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TokenDirectoryLane" + }, + "description": "Outbound lanes indexed by destination chain ID" + }, + "inboundLanes": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TokenDirectoryLane" + }, + "description": "Inbound lanes indexed by source chain ID" + } + } + }, + "TokenDirectoryApiResponse": { + "type": "object", + "required": ["metadata", "data"], + "properties": { + "metadata": { + "$ref": "#/components/schemas/TokenDirectoryMetadata" + }, + "data": { + "$ref": "#/components/schemas/TokenDirectoryData" + } + } } } } diff --git a/public/assets/chains/adi-network.svg b/public/assets/chains/adi-network.svg new file mode 100644 index 00000000000..42db03f813c --- /dev/null +++ b/public/assets/chains/adi-network.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/assets/chains/arc.svg b/public/assets/chains/arc.svg new file mode 100644 index 00000000000..f5e0184260d --- /dev/null +++ b/public/assets/chains/arc.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/assets/chains/canton.svg b/public/assets/chains/canton.svg new file mode 100644 index 00000000000..e746fe39023 --- /dev/null +++ b/public/assets/chains/canton.svg @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/chains/dogeos.svg b/public/assets/chains/dogeos.svg new file mode 100644 index 00000000000..6ab4d7411d9 --- /dev/null +++ b/public/assets/chains/dogeos.svg @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/chains/edge.svg b/public/assets/chains/edge.svg new file mode 100644 index 00000000000..34bd3e50cac --- /dev/null +++ b/public/assets/chains/edge.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/assets/chains/giwa.svg b/public/assets/chains/giwa.svg new file mode 100644 index 00000000000..52af31d5868 --- /dev/null +++ b/public/assets/chains/giwa.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/assets/chains/morph.svg b/public/assets/chains/morph.svg new file mode 100644 index 00000000000..fed6187a96d --- /dev/null +++ b/public/assets/chains/morph.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/assets/chains/perennial.svg b/public/assets/chains/perennial.svg new file mode 100644 index 00000000000..63d548c3a79 --- /dev/null +++ b/public/assets/chains/perennial.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/assets/chains/robinhood-chain.svg b/public/assets/chains/robinhood-chain.svg new file mode 100644 index 00000000000..32639552681 --- /dev/null +++ b/public/assets/chains/robinhood-chain.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/assets/chains/robinhood.svg b/public/assets/chains/robinhood.svg new file mode 100644 index 00000000000..32639552681 --- /dev/null +++ b/public/assets/chains/robinhood.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/assets/chains/seismic.svg b/public/assets/chains/seismic.svg new file mode 100644 index 00000000000..e0680143a15 --- /dev/null +++ b/public/assets/chains/seismic.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/chains/stable.svg b/public/assets/chains/stable.svg new file mode 100644 index 00000000000..f4b2e783bb9 --- /dev/null +++ b/public/assets/chains/stable.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/assets/chains/tempo.svg b/public/assets/chains/tempo.svg new file mode 100644 index 00000000000..cee91482315 --- /dev/null +++ b/public/assets/chains/tempo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/assets/chains/ton.svg b/public/assets/chains/ton.svg new file mode 100644 index 00000000000..46593c13c53 --- /dev/null +++ b/public/assets/chains/ton.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/assets/icons/add.svg b/public/assets/icons/add.svg new file mode 100644 index 00000000000..690aad5bb2f --- /dev/null +++ b/public/assets/icons/add.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/icons/generic-verifier.svg b/public/assets/icons/generic-verifier.svg new file mode 100644 index 00000000000..275f1c8400c --- /dev/null +++ b/public/assets/icons/generic-verifier.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/changelog.json b/public/changelog.json index de6336e6eb0..188e5fcf5a3 100644 --- a/public/changelog.json +++ b/public/changelog.json @@ -16,6 +16,10 @@ "displayName": "Apechain", "iconUrl": "https://docs.chain.link/assets/chains/apechain.svg" }, + "adi-network": { + "displayName": "ADI Network", + "iconUrl": "https://docs.chain.link/assets/chains/adi-network.svg" + }, "aptos": { "displayName": "Aptos", "iconUrl": "https://docs.chain.link/assets/chains/aptos.svg" @@ -24,6 +28,10 @@ "displayName": "Arbitrum", "iconUrl": "https://docs.chain.link/assets/chains/arbitrum.svg" }, + "arc": { + "displayName": "Arc", + "iconUrl": "https://docs.chain.link/assets/chains/arc.svg" + }, "astar": { "displayName": "Astar", "iconUrl": "https://docs.chain.link/assets/chains/astar.svg" @@ -68,6 +76,10 @@ "displayName": "B²", "iconUrl": "https://docs.chain.link/assets/chains/bsquared.svg" }, + "canton": { + "displayName": "Canton", + "iconUrl": "https://docs.chain.link/assets/chains/canton.svg" + }, "celo": { "displayName": "Celo", "iconUrl": "https://docs.chain.link/assets/chains/celo.svg" @@ -88,6 +100,14 @@ "displayName": "Cronos zkEVM", "iconUrl": "https://docs.chain.link/assets/chains/cronoszkevm.svg" }, + "dogeos": { + "displayName": "DogeOS", + "iconUrl": "https://docs.chain.link/assets/chains/dogeos.svg" + }, + "edge": { + "displayName": "Edge", + "iconUrl": "https://docs.chain.link/assets/chains/edge.svg" + }, "ethereum": { "displayName": "Ethereum", "iconUrl": "https://docs.chain.link/assets/chains/ethereum.svg" @@ -108,6 +128,10 @@ "displayName": "Fraxtal", "iconUrl": "https://docs.chain.link/assets/chains/fraxtal.svg" }, + "giwa": { + "displayName": "Giwa", + "iconUrl": "https://docs.chain.link/assets/chains/giwa.svg" + }, "gnosis-chain": { "displayName": "Gnosis Chain", "iconUrl": "https://docs.chain.link/assets/chains/gnosis-chain.svg" @@ -148,6 +172,10 @@ "displayName": "Janction", "iconUrl": "https://docs.chain.link/assets/chains/janction.svg" }, + "jovay": { + "displayName": "Jovay", + "iconUrl": "https://docs.chain.link/assets/chains/jovay.svg" + }, "kaia": { "displayName": "Kaia", "iconUrl": "https://docs.chain.link/assets/chains/kaia.svg" @@ -220,6 +248,10 @@ "displayName": "Moonriver", "iconUrl": "https://docs.chain.link/assets/chains/moonriver.svg" }, + "morph": { + "displayName": "Morph", + "iconUrl": "https://docs.chain.link/assets/chains/morph.svg" + }, "neox": { "displayName": "Neo X", "iconUrl": "https://docs.chain.link/assets/chains/neox.svg" @@ -232,6 +264,14 @@ "displayName": "OP", "iconUrl": "https://docs.chain.link/assets/chains/optimism.svg" }, + "perennial": { + "displayName": "Perennial", + "iconUrl": "https://docs.chain.link/assets/chains/perennial.svg" + }, + "pharos": { + "displayName": "Pharos", + "iconUrl": "https://docs.chain.link/assets/chains/pharos.svg" + }, "plasma": { "displayName": "Plasma", "iconUrl": "https://docs.chain.link/assets/chains/plasma.svg" @@ -252,6 +292,10 @@ "displayName": "Polygon zkEVM", "iconUrl": "https://docs.chain.link/assets/chains/polygonzkevm.svg" }, + "robinhood": { + "displayName": "Robinhood Chain", + "iconUrl": "https://docs.chain.link/assets/chains/robinhood-chain.svg" + }, "ronin": { "displayName": "Ronin", "iconUrl": "https://docs.chain.link/assets/chains/ronin.svg" @@ -268,6 +312,10 @@ "displayName": "Sei Network", "iconUrl": "https://docs.chain.link/assets/chains/sei.svg" }, + "seismic": { + "displayName": "Seismic", + "iconUrl": "https://docs.chain.link/assets/chains/seismic.svg" + }, "shibarium": { "displayName": "Shibarium", "iconUrl": "https://docs.chain.link/assets/chains/shibarium.svg" @@ -284,6 +332,10 @@ "displayName": "Sonic", "iconUrl": "https://docs.chain.link/assets/chains/sonic.svg" }, + "stable": { + "displayName": "Stable", + "iconUrl": "https://docs.chain.link/assets/chains/stable.svg" + }, "starknet": { "displayName": "Starknet", "iconUrl": "https://docs.chain.link/assets/chains/starknet.svg" @@ -304,6 +356,10 @@ "displayName": "Treasure", "iconUrl": "https://docs.chain.link/assets/chains/treasure.svg" }, + "tempo": { + "displayName": "Tempo", + "iconUrl": "https://docs.chain.link/assets/chains/tempo.svg" + }, "tron": { "displayName": "TRON", "iconUrl": "https://docs.chain.link/assets/chains/tron.svg" @@ -320,28 +376,3263 @@ "displayName": "World Chain", "iconUrl": "https://docs.chain.link/assets/chains/worldchain.svg" }, - "xdc": { - "displayName": "XDC", - "iconUrl": "https://docs.chain.link/assets/chains/xdc.svg" + "xdc": { + "displayName": "XDC", + "iconUrl": "https://docs.chain.link/assets/chains/xdc.svg" + }, + "xlayer": { + "displayName": "X Layer", + "iconUrl": "https://docs.chain.link/assets/chains/xlayer.svg" + }, + "zircuit": { + "displayName": "Zircuit", + "iconUrl": "https://docs.chain.link/assets/chains/zircuit.svg" + }, + "zksync": { + "displayName": "ZKsync", + "iconUrl": "https://docs.chain.link/assets/chains/zksync.svg" + }, + "zora": { + "displayName": "Zora", + "iconUrl": "https://docs.chain.link/assets/chains/zora.svg" + } + }, + "data": [ + { + "category": "integration", + "date": "2026-03-20", + "description": "Chainlink Data Streams is available for Robinhood Chain Testnet. The verifier proxy addresses and stream IDs are available on the [Stream Addresses](https://docs.chain.link/data-streams/supported-networks?streamsNetwork=robinhood) page.", + "relatedNetworks": ["robinhood"], + "title": "Data Streams Expands to Robinhood Chain Testnet", + "topic": "Data Streams" + }, + { + "category": "release", + "date": "2026-03-20", + "description": "To give developers more choice in how certain asset classes are priced onchain, we have introduced Bounded Market Price Feeds, which include predefined bounds on reported values. This approach is intended to provide guardrails during edge cases where structural deviations can introduce higher risk. If your use case requires the use of a non-Bounded Market Price Feed and one does not exist, reach out and we’ll be happy to support. See the docs for how these feeds work and associated considerations: [Bounded Market Price Feeds](https://docs.chain.link/data-feeds/price-feeds/bounded-market-price-feeds).", + "title": "Bounded Market Price Feeds", + "topic": "Data Feeds" + }, + { + "category": "release", + "date": "2026-03-20", + "description": "CRE CLI version 1.6.0 is now available. This release adds a `--limits` flag to `cre workflow simulate`, letting you simulate workflows under specific resource constraints to better reflect production behavior. It also includes improvements to the `cre init` experience, a binding bug fix, and improved WASM debug symbol retention during simulation.\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-cli/compare/v1.5.0...v1.6.0)", + "title": "CRE CLI v1.6.0 — Simulation Limits and Init Improvements", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-03-17", + "description": "CRE CLI version 1.5.0 is now available. This release adds support for 9 new mainnets (Celo, Gnosis Chain, Ink, Linea, Mantle, MegaETH, Plasma, Scroll, and Sonic) and 8 new testnets (Cronos, Mantle Sepolia, MegaETH Testnet 2, Scroll Sepolia, Sonic Testnet, TAC Testnet, Unichain Sepolia, and XLayer Testnet), introduces the `cre hash` command to display content hashes for workflow artifacts, adds `${VAR}` environment variable resolution in RPC URLs, JSON ABI support in `cre generate-bindings`, and `.env` file support across all commands.\n\n**Required versions for new networks:** CLI v1.5.0+, Go SDK v1.6.0+, TS SDK v1.3.0+\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-cli/compare/v1.4.0...v1.5.0)", + "title": "CRE CLI v1.5.0 — New Networks, Hash Command, and Developer Tools", + "topic": "CRE" + }, + { + "category": "integration", + "date": "2026-03-17", + "description": "CRE now supports 9 new mainnets and 8 new testnets for workflow simulation and production deployment.\n\nNew mainnets: Celo, Gnosis Chain, Ink, Linea, Mantle, MegaETH, Plasma, Scroll, and Sonic.\n\nNew testnets: Cronos, Mantle Sepolia, MegaETH Testnet 2, Scroll Sepolia, Sonic Testnet, TAC Testnet, Unichain Sepolia, and XLayer Testnet.\n\n**Required versions:** CLI v1.5.0+, Go SDK v1.6.0+, TS SDK v1.3.0+\n\nSee the [Supported Networks](https://docs.chain.link/cre/supported-networks) page for chain names and version requirements.", + "relatedNetworks": [ + "celo", + "gnosis-chain", + "ink", + "linea", + "mantle", + "megaeth", + "plasma", + "scroll", + "sonic", + "cronos", + "tac", + "unichain", + "xlayer" + ], + "title": "CRE Expands to New Mainnets and Testnets", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-03-16", + "description": "Go SDK version 1.6.0 updates EVM capabilities to support the new networks added in CLI v1.5.0.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-go/compare/v1.5.0...v1.6.0)", + "title": "CRE Go SDK v1.6.0 — New Network Support", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-03-16", + "description": "TypeScript SDK version 1.3.0 updates EVM capabilities to support the new networks added in CLI v1.5.0.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-typescript/compare/v1.2.0...v1.3.0)", + "title": "CRE TS SDK v1.3.0 — New Network Support", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-03-12", + "description": "CRE CLI version 1.4.0 is now available. This release enables `cre workflow build`, `cre workflow upload`, and `cre workflow deploy` to run as independent steps for better CI/CD pipeline integration. The HTTP capability now supports sending multiple headers per request.\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-cli/compare/v1.3.0...v1.4.0)", + "title": "CRE CLI v1.4.0 — CI/CD Pipeline Support and MultiHeaders", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-03-12", + "description": "TypeScript SDK version 1.2.0 adds a `logTriggerConfig` helper for configuring EVM log triggers in workflows and improves error messages with field-level context in `encodeCallMsg`.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-typescript/compare/v1.1.0...v1.2.0)", + "title": "CRE TS SDK v1.2.0 — logTriggerConfig Helper and Improved Errors", + "topic": "CRE" + }, + { + "category": "integration", + "date": "2026-03-15", + "description": "New Data Streams available on all [supported networks](https://docs.chain.link/data-streams/crypto-streams):", + "relatedNetworks": [ + "0g", + "apechain", + "adi", + "aptos", + "arbitrum", + "arc", + "avalanche", + "base", + "berachain", + "bitlayer", + "blast", + "bnb-chain", + "bob", + "botanix", + "celo", + "dogeos", + "ethereum", + "giwa", + "gnosis-chain", + "gravity", + "hashkey", + "hedera", + "hyperliquid", + "injective", + "ink", + "jovay", + "katana", + "lens", + "linea", + "mantle", + "metis", + "monad", + "opbnb", + "optimism", + "polygon", + "perennial", + "pharos", + "plasma", + "ronin", + "scroll", + "shibarium", + "sei", + "seismic", + "soneium", + "sonic", + "solana", + "stable", + "xlayer", + "taiko", + "unichain", + "worldchain", + "zksync" + ], + "relatedTokens": [ + { + "assetName": "ADI Token", + "baseAsset": "ADI", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/adi-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/adi.webp" + }, + { + "assetName": "Oklo Inc", + "baseAsset": "OKLO", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/oklo-usd-overnighthoursequityprice-streams", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/oklo.webp" + }, + { + "assetName": "Oklo Inc", + "baseAsset": "OKLO", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/oklo-usd-regularhoursequityprice-streams", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/oklo.webp" + }, + { + "assetName": "Oklo Inc", + "baseAsset": "OKLO", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/oklo-usd-extendedhoursequityprice-streams", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/oklo.webp" + }, + { + "assetName": "OpenDelta NX8", + "baseAsset": "NX8", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/nx8-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/nx8.webp" + }, + { + "assetName": "SanDisk Corp", + "baseAsset": "SNDK", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/sndk-usd-regularhoursequityprice-streams", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/sndk.webp" + }, + { + "assetName": "SanDisk Corp", + "baseAsset": "SNDK", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/sndk-usd-extendedhoursequityprice-streams", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/sndk.webp" + }, + { + "assetName": "SanDisk Corp", + "baseAsset": "SNDK", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/sndk-usd-overnighthoursequityprice-streams", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/sndk.webp" + }, + { + "assetName": "Strategy Variable Rate Perpetual xStock", + "baseAsset": "STRCx", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/strcx-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/strcx.webp" + }, + { + "assetName": "Tessera tKalshi", + "baseAsset": "tKalshi", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/tkalshi-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/tkalshi.webp" + }, + { + "assetName": "Tessera tSpaceX", + "baseAsset": "tSpaceX", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/tspacex-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/tspacex.webp" + }, + { + "assetName": "Unitas USDu", + "baseAsset": "USDu", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/usdu-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdu.webp" + } + ], + "title": "Added support to Data Streams", + "topic": "Data Streams" + }, + { + "category": "integration", + "date": "2026-03-15", + "description": "New SmartData Feeds available:", + "relatedNetworks": ["ethereum"], + "relatedTokens": [ + { + "assetName": "Treasury+", + "baseAsset": "Treasury+", + "network": "ethereum", + "productTypeCode": "NAV", + "url": "https://data.chain.link/feeds/ethereum/mainnet/treasuryplus-nav", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/treasury+.webp" + } + ], + "title": "Added support to SmartData", + "topic": "SmartData" + }, + { + "category": "integration", + "date": "2026-03-15", + "description": "New Data Feeds available:", + "relatedNetworks": ["ethereum", "tron", "bnb-chain", "sonic"], + "relatedTokens": [ + { + "assetName": "AUSD", + "baseAsset": "AUSD", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/ausd-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/ausd.webp" + }, + { + "assetName": "HTX DAO", + "baseAsset": "HTX", + "quoteAsset": "USD", + "network": "tron", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&network=tron&search=htx", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/htx.webp" + }, + { + "assetName": "RLP / USD Exchange Rate", + "baseAsset": "RLP", + "quoteAsset": "USD", + "network": "bnb-chain", + "url": "https://data.chain.link/feeds/bsc/mainnet/rlp-usd-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/rlp.webp" + }, + { + "assetName": "stGLD / tGLD Exchange Rate", + "baseAsset": "stGLD", + "quoteAsset": "tGLD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/stgld-tgld-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/stgld.webp" + }, + { + "assetName": "sUSDD / USDD Exchange Rate", + "baseAsset": "sUSDD", + "quoteAsset": "sUSDD", + "network": "tron", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&network=tron&search=susdd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/susdd.webp" + }, + { + "assetName": "US Sonic Dollar", + "baseAsset": "USSD", + "quoteAsset": "USD", + "network": "sonic", + "url": "https://data.chain.link/feeds/sonic/sonic/ussd-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/ussd.webp" + }, + { + "assetName": "USDD / USDC Exchange Rate", + "baseAsset": "USDD", + "quoteAsset": "USDC", + "network": "tron", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&network=tron&search=usdd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdd.webp" + }, + { + "assetName": "USDD / USDT Exchange Rate", + "baseAsset": "USDD", + "quoteAsset": "USDT", + "network": "tron", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&network=tron&search=usdd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdd.webp" + }, + { + "assetName": "Wrapped Bitcoin", + "baseAsset": "WBTC", + "quoteAsset": "USD", + "network": "tron", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&network=tron&search=wbtc", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/wbtc.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2026-03-13", + "description": "Chainlink CCIP expands support to new networks:", + "newNetworks": [ + { + "displayName": "Robinhood Chain Testnet", + "network": "robinhood", + "url": "https://docs.chain.link/ccip/directory/testnet/chain/robinhood-testnet" + }, + { + "displayName": "Ronin Saigon Testnet", + "network": "ronin", + "url": "https://docs.chain.link/ccip/directory/testnet/chain/ronin-testnet-saigon" + } + ], + "relatedNetworks": ["robinhood", "ronin"], + "title": "CCIP on Robinhood Chain Testnet and Ronin Saigon Testnet", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2026-03-08", + "description": "New Data Streams available on all [supported networks](https://docs.chain.link/data-streams/crypto-streams):", + "relatedNetworks": [ + "0g", + "apechain", + "adi-network", + "aptos", + "arbitrum", + "arc", + "avalanche", + "base", + "berachain", + "bitlayer", + "blast", + "bnb-chain", + "bob", + "botanix", + "celo", + "dogeos", + "ethereum", + "giwa", + "gnosis-chain", + "gravity", + "hashkey", + "hedera", + "hyperliquid", + "injective", + "ink", + "jovay", + "katana", + "lens", + "linea", + "mantle", + "metis", + "monad", + "opbnb", + "optimism", + "polygon", + "perennial", + "pharos", + "plasma", + "ronin", + "scroll", + "shibarium", + "sei", + "seismic", + "soneium", + "sonic", + "solana", + "stable", + "xlayer", + "taiko", + "unichain", + "worldchain", + "zksync" + ], + "relatedTokens": [ + { + "assetName": "DeFi Janus Henderson Anemoy AAA CLO Fund", + "baseAsset": "deJAAA", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/dejaaa-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/dejaaa.webp" + }, + { + "assetName": "DeFi Janus Henderson Anemoy Treasury Fund", + "baseAsset": "deJTRSY", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/dejtrsy-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/dejtrsy.webp" + }, + { + "assetName": "Saakuru", + "baseAsset": "SKR", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/skr-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/skr.webp" + } + ], + "title": "Added support to Data Streams", + "topic": "Data Streams" + }, + { + "category": "deprecation", + "date": "2026-03-11", + "description": "We have announced the deprecation of select Data Feeds, scheduled for shutdown on March 25th, 2026. Check [the list of Deprecating Data Feeds to learn more](https://docs.chain.link/data-feeds/deprecating-feeds).", + "title": "Deprecating Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2026-03-08", + "description": "New Data Feeds available:", + "relatedNetworks": ["ethereum", "unichain", "xlayer"], + "relatedTokens": [ + { + "assetName": "Alphabet Inc - A", + "baseAsset": "GOOGL", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/googl-usd-kalman-24-5", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/googl.webp" + }, + { + "assetName": "Bitcoin", + "baseAsset": "BTC", + "quoteAsset": "USD", + "network": "unichain", + "url": "https://data.chain.link/feeds/unichain/mainnet/btc-usd-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/btc.webp" + }, + { + "assetName": "Chainlink", + "baseAsset": "LINK", + "quoteAsset": "USD", + "network": "unichain", + "url": "https://data.chain.link/feeds/unichain/mainnet/link-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/link.webp" + }, + { + "assetName": "Circle USD", + "baseAsset": "USDC", + "quoteAsset": "USD", + "network": "unichain", + "url": "https://data.chain.link/feeds/unichain/mainnet/usdc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdc.webp" + }, + { + "assetName": "Circle USD", + "baseAsset": "USDC", + "quoteAsset": "USD", + "network": "unichain", + "url": "https://data.chain.link/feeds/unichain/mainnet/usdc-usd-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdc.webp" + }, + { + "assetName": "Ethereum", + "baseAsset": "ETH", + "quoteAsset": "USD", + "network": "unichain", + "url": "https://data.chain.link/feeds/unichain/mainnet/eth-usd-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/eth.webp" + }, + { + "assetName": "Invesco QQQ", + "baseAsset": "QQQ", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/qqq-usd-kalman-24-5", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/qqq.webp" + }, + { + "assetName": "Kelp DAO Restaked ETH", + "baseAsset": "RSETH", + "quoteAsset": "ETH", + "network": "unichain", + "url": "https://data.chain.link/feeds/unichain/mainnet/rseth-eth-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/rseth.webp" + }, + { + "assetName": "NVIDIA Corporation", + "baseAsset": "NVDA", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/nvda-usd-kalman-24-5", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/nvda.webp" + }, + { + "assetName": "Renzo Restaked ETH", + "baseAsset": "EZETH", + "quoteAsset": "ETH", + "network": "unichain", + "url": "https://data.chain.link/feeds/unichain/mainnet/ezeth-eth-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/ezeth.webp" + }, + { + "assetName": "Solana", + "baseAsset": "SOL", + "quoteAsset": "USD", + "network": "xlayer", + "url": "https://data.chain.link/feeds/xlayer/xlayer/sol-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/sol.webp" + }, + { + "assetName": "SPDR S&P 500 ETF", + "baseAsset": "SPY", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/spy-usd-kalman-24-5", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/spy.webp" + }, + { + "assetName": "Tesla Inc", + "baseAsset": "TSLA", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/tsla-usd-kalman-24-5", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/tsla.webp" + }, + { + "assetName": "Uniswap", + "baseAsset": "UNI", + "quoteAsset": "USD", + "network": "unichain", + "url": "https://data.chain.link/feeds/unichain/mainnet/uni-usd-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/uni.webp" + }, + { + "assetName": "Wrapped eETH", + "baseAsset": "weETH", + "quoteAsset": "eETH", + "network": "unichain", + "url": "https://data.chain.link/feeds/unichain/mainnet/weeth-eeth-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/weeth.webp" + }, + { + "assetName": "wstETH / stETH Exchange Rate", + "baseAsset": "wstETH", + "quoteAsset": "stETH", + "network": "unichain", + "url": "https://data.chain.link/feeds/unichain/mainnet/wsteth-steth-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/wsteth.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2026-03-08", + "description": "Newly supported tokens: ZYPTO, cbBTC", + "relatedTokens": [ + { + "assetName": "Zypto Token", + "baseAsset": "ZYPTO", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/ZYPTO", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/zypto.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "Coinbase Wrapped BTC", + "baseAsset": "cbBTC", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/cbBTC", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/cbbtc.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + } + ], + "title": "Cross-chain token (CCT) standard: Added support for new tokens", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2026-03-06", + "description": "Chainlink CCIP expands support to new networks:", + "newNetworks": [ + { + "displayName": "ADI Network Mainnet", + "network": "adi-network", + "url": "https://docs.chain.link/ccip/directory/mainnet/chain/adi-network-mainnet" + }, + { + "displayName": "Edge Mainnet", + "network": "edge-mainnet", + "url": "https://docs.chain.link/ccip/directory/mainnet/chain/edge-mainnet" + }, + { + "displayName": "Edge Testnet", + "network": "edge-testnet", + "url": "https://docs.chain.link/ccip/directory/testnet/chain/edge-testnet" + } + ], + "relatedNetworks": ["adi-network", "edge"], + "title": "CCIP on ADI Network Mainnet, Edge Mainnet and Edge Testnet", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2026-03-06", + "description": "Newly supported tokens: ZYPTO", + "relatedTokens": [ + { + "assetName": "ZYPTO", + "baseAsset": "ZYPTO", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/ZYPTO", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/zypto.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + } + ], + "title": "Cross-chain token (CCT) standard: Added support for new tokens", + "topic": "CCIP" + }, + { + "category": "release", + "date": "2026-03-05", + "description": "CLI version 1.3.0 adds TypeScript EVM binding generation, explicit `--target` prompting, Jovay/Pharos/XLayer mainnet support, and Pharos Atlantic testnet support.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-cli/compare/v1.2.0...v1.3.0)", + "title": "CRE CLI v1.3.0 — TypeScript Bindings and New Networks", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-03-05", + "description": "Go SDK version 1.5.0 adds Pharos Atlantic network support.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-go/compare/v1.4.0...v1.5.0)", + "title": "CRE Go SDK v1.5.0 — Pharos Atlantic Support", + "topic": "CRE" + }, + { + "category": "integration", + "date": "2026-03-03", + "description": "Chainlink Data Feeds is available on Unichain Mainnet. View the available price feed information on the [Price Feed Addresses](https://docs.chain.link/data-feeds/price-feeds/addresses?network=unichain&page=1) page.", + "relatedNetworks": ["unichain"], + "title": "Data Feeds Expands to Unichain Mainnet", + "topic": "Data Feeds" + }, + { + "category": "release", + "date": "2026-03-02", + "description": "Go SDK version 1.4.0 adds Solana LogTrigger SDK generation and Solana workflow bindings, and expands network support to Jovay Testnet, Pharos Testnet, and XLayer. Note: previously generated Solana SDK types have been removed and replaced by the new Solana bindings.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-go/compare/v1.3.0...v1.4.0)", + "title": "CRE Go SDK v1.4.0 — Solana Bindings and New Networks", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-03-02", + "description": "The CCIP SDK, CLI, and REST API are now generally available:\n\n- **CCIP SDK v1.0** ([@chainlink/ccip-sdk](https://www.npmjs.com/package/@chainlink/ccip-sdk)): Programmatic tools for sending messages, transferring tokens, estimating fees, and querying CCIP activity.\n- **CCIP CLI v1.0** ([@chainlink/ccip-cli](https://www.npmjs.com/package/@chainlink/ccip-cli)): Command-line interface for the same capabilities.\n- **CCIP API v2** ([REST API](https://docs.chain.link/ccip/tools/api/)): Endpoints for messages and their details, lane latency, and intents.\n\nSee the [CCIP Tools](https://docs.chain.link/ccip/tools/) documentation for details.", + "title": "CCIP SDK v1.0, CLI v1.0, and API v2", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2026-03-01", + "description": "New Data Streams available on all [supported networks](https://docs.chain.link/data-streams/crypto-streams):", + "relatedNetworks": [ + "0g", + "apechain", + "adi-network", + "aptos", + "arbitrum", + "arc", + "avalanche", + "base", + "berachain", + "bitlayer", + "blast", + "bnb-chain", + "bob", + "botanix", + "celo", + "dogeos", + "ethereum", + "gnosis-chain", + "gravity", + "hashkey", + "hedera", + "hyperliquid", + "injective", + "ink", + "jovay", + "katana", + "lens", + "linea", + "mantle", + "metis", + "monad", + "opbnb", + "optimism", + "polygon", + "perennial", + "pharos", + "plasma", + "ronin", + "scroll", + "shibarium", + "sei", + "soneium", + "sonic", + "solana", + "stable", + "taiko", + "unichain", + "worldchain", + "zksync" + ], + "relatedTokens": [ + { + "assetName": " Rocket Lab Corp", + "baseAsset": "RKLB", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/rklb-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/rklb.webp" + }, + { + "assetName": "Advanced Micro Devices / AMD", + "baseAsset": "AMD", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/amd-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/amd.webp" + }, + { + "assetName": "Alibaba Group Holding Ltd (ADRs)", + "baseAsset": "BABA", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/baba-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/baba.webp" + }, + { + "assetName": "Beyond Meat Inc", + "baseAsset": "BYND", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/bynd-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/bynd.webp" + }, + { + "assetName": "CoreWeave Inc", + "baseAsset": "CRWV", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/crwv-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/crwv.webp" + }, + { + "assetName": "DeFi Janus Henderson Anemoy AAA CLO Fund", + "baseAsset": "deJAAA", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/dejaaa-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/dejaaa.webp" + }, + { + "assetName": "DeFi Janus Henderson Anemoy Treasury Fund", + "baseAsset": "deJTRSY", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/dejtrsy-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/dejtrsy.webp" + }, + { + "assetName": "Global Dollar", + "baseAsset": "USDG", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/usdg-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdg.webp" + }, + { + "assetName": "Global X AI & Tech ETF", + "baseAsset": "AIQ", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/aiq-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/aiq.webp" + }, + { + "assetName": "Global X Robotics & Artificial Intelligence (BOTZ)", + "baseAsset": "BOTZ", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/botz-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/botz.webp" + }, + { + "assetName": "Intel Corp", + "baseAsset": "INTC", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/intc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/intc.webp" + }, + { + "assetName": "iPath Series B S&P 500 VIX Short-Term Futures ETF", + "baseAsset": "VXX", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/vxx-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/vxx.webp" + }, + { + "assetName": "iShares 20+ Year Treasury Bond ETF", + "baseAsset": "TLT", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/tlt-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/tlt.webp" + }, + { + "assetName": "iShares Core MSCI Emerging Mkts ETF", + "baseAsset": "IEMG", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/iemg-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/iemg.webp" + }, + { + "assetName": "iShares Gold Trust", + "baseAsset": "IAU", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/iau-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/iau.webp" + }, + { + "assetName": "iShares MSCI Japan ETF", + "baseAsset": "EWJ", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/ewj-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/ewj.webp" + }, + { + "assetName": "iShares Russell 2000 ETF", + "baseAsset": "IWM", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/iwm-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/iwm.webp" + }, + { + "assetName": "iShares Silver Trust ETF", + "baseAsset": "SLV", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/slv-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/slv.webp" + }, + { + "assetName": "Kraneshares CSI China Internet ETF", + "baseAsset": "KWEB", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/kweb-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/kweb.webp" + }, + { + "assetName": "Micron Technology Inc", + "baseAsset": "MU", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/mu-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/mu.webp" + }, + { + "assetName": "Nebius Group", + "baseAsset": "NBIS", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/nbis-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/nbis.webp" + }, + { + "assetName": "Real Estate Select Sector SPDR Fund ETF", + "baseAsset": "XLRE", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/xlre-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/xlre.webp" + }, + { + "assetName": "Rigetti Computing Inc", + "baseAsset": "RGTI", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/rgti-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/rgti.webp" + }, + { + "assetName": "Roundhill Magnificent Seven ETF", + "baseAsset": "MAGS", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/mags-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/mags.webp" + }, + { + "assetName": "Schwab US REIT", + "baseAsset": "SCHH", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/schh-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/schh.webp" + }, + { + "assetName": "Sentient", + "baseAsset": "SENT", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/sent-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/sent.webp" + }, + { + "assetName": "SPDR DJIA ETF", + "baseAsset": "DIA", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/dia-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/dia.webp" + }, + { + "assetName": "STRC", + "baseAsset": "STRC", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/strc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/strc.webp" + }, + { + "assetName": "TSMC / Taiwan Semiconductor Man Co (ADRs)", + "baseAsset": "TSM", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/tsm-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/tsm.webp" + }, + { + "assetName": "United States Oil Fund LP ETF", + "baseAsset": "USO", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/uso-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/uso.webp" + }, + { + "assetName": "USD", + "baseAsset": "USD", + "quoteAsset": "ARS", + "url": "https://data.chain.link/streams/usd-ars", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usd.webp" + }, + { + "assetName": "USX / USD Redemption Rate", + "baseAsset": "USX", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/usx-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usx.webp" + } + ], + "title": "Added support to Data Streams", + "topic": "Data Streams" + }, + { + "category": "integration", + "date": "2026-03-01", + "description": "New SmartData Feeds available:", + "relatedNetworks": ["ethereum", "bnb-chain"], + "relatedTokens": [ + { + "assetName": "CRDYX NAV", + "baseAsset": "CRDYX", + "network": "ethereum", + "productTypeCode": "NAV", + "url": "https://data.chain.link/feeds/ethereum/mainnet/crdyx-nav", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/crdyx.webp" + }, + { + "assetName": "JAAA NAV", + "baseAsset": "JAAA", + "network": "ethereum", + "productTypeCode": "NAV", + "url": "https://data.chain.link/feeds/ethereum/mainnet/jaaa-nav-v2", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/jaaa.webp" + }, + { + "assetName": "JTRSY NAV", + "baseAsset": "JTRSY", + "network": "ethereum", + "productTypeCode": "NAV", + "url": "https://data.chain.link/feeds/ethereum/mainnet/jtrsy-nav-v2", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/jtrsy.webp" + }, + { + "assetName": "Kinesis Gold (KAU)", + "baseAsset": "KAU", + "network": "ethereum", + "productTypeCode": "PoR", + "url": "https://data.chain.link/feeds/ethereum/mainnet/kau-por", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/kau.webp" + }, + { + "assetName": "Kinesis Silver (KAG)", + "baseAsset": "KAG", + "network": "ethereum", + "productTypeCode": "PoR", + "url": "https://data.chain.link/feeds/ethereum/mainnet/kag-por", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/kag.webp" + }, + { + "assetName": "Renzo Restaked ETH", + "baseAsset": "ezETH", + "network": "ethereum", + "productTypeCode": "PoR", + "url": "https://data.chain.link/feeds/ethereum/mainnet/ezeth-por", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/ezeth.webp" + }, + { + "assetName": "US Dollar (USD) total reserves", + "baseAsset": "C1USD", + "network": "ethereum", + "productTypeCode": "PoR", + "url": "https://data.chain.link/feeds/ethereum/mainnet/c1usd-por", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/c1usd.webp" + }, + { + "assetName": "WTGXX NAV", + "baseAsset": "WTGXX", + "network": "ethereum", + "productTypeCode": "NAV", + "url": "https://data.chain.link/feeds/ethereum/mainnet/wtgxx-nav-24h", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/wtgxx.webp" + }, + { + "assetName": "XAUM Reference Rate", + "baseAsset": "XAUM", + "network": "bnb-chain", + "productTypeCode": "NAV", + "url": "https://data.chain.link/feeds/bsc/mainnet/xaum-reference-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/xaum.webp" + } + ], + "title": "Added support to SmartData", + "topic": "SmartData" + }, + { + "category": "integration", + "date": "2026-03-01", + "description": "New Data Feeds available:", + "relatedNetworks": ["arbitrum", "scroll", "base", "polygonkatana", "optimism", "ethereum"], + "relatedTokens": [ + { + "assetName": "Avant Staked USD", + "baseAsset": "savUSD", + "quoteAsset": "avUSD", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/savusd-avusd-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/savusd.webp" + }, + { + "assetName": "Circle EUR", + "baseAsset": "EURC", + "quoteAsset": "USD", + "network": "scroll", + "url": "https://data.chain.link/feeds/scroll/mainnet/eurc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/eurc.webp" + }, + { + "assetName": "Ripple USD", + "baseAsset": "RLUSD", + "quoteAsset": "USD", + "network": "base", + "url": "https://data.chain.link/feeds/base/base/rlusd-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/rlusd.webp" + }, + { + "assetName": "Silver", + "baseAsset": "XAG", + "quoteAsset": "USD", + "network": "base", + "url": "https://data.chain.link/feeds/base/base/xag-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/xag.webp" + }, + { + "assetName": "Solv Protocol SOLVBTC / BTC Exchange Rate", + "baseAsset": "SOLVBTC", + "quoteAsset": "BTC", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/solvbtc-btc-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/solvbtc.webp" + }, + { + "assetName": "SUSDA / USDA Exchange Rate", + "baseAsset": "SUSDA", + "quoteAsset": "USDA", + "network": "polygonkatana", + "url": "https://data.chain.link/feeds/katana/polygon-mainnet-katana/susda-usda-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/susda.webp" + }, + { + "assetName": "UMA", + "baseAsset": "UMA", + "quoteAsset": "USD", + "network": "optimism", + "url": "https://data.chain.link/feeds/optimism/mainnet/uma-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/uma.webp" + }, + { + "assetName": "Zcash", + "baseAsset": "ZEC", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/zec-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/zec.webp" + }, + { + "assetName": "ZCash", + "baseAsset": "ZEC", + "quoteAsset": "USD", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/zec-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/zec.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2026-02-26", + "description": "Chainlink Data Streams is available for new blockchains:\n\n- Giwa Sepolia Testnet\n- Injective EVM Testnet\n- Seismic Testnet\n- X Layer Mainnet\n- X Layer Testnet\n\nThe verifier proxy addresses and stream IDs are available on the [Stream Addresses](https://docs.chain.link/data-streams/crypto-streams) page.", + "relatedNetworks": ["giwa", "injective", "seismic", "xlayer"], + "title": "Data Streams Expands to New Blockchains", + "topic": "Data Streams" + }, + { + "category": "deprecation", + "date": "2026-02-26", + "description": "We have announced the deprecation of select Data Feeds, scheduled for shutdown on March 12th, 2026. Check [the list of Deprecating Data Feeds to learn more](https://docs.chain.link/data-feeds/deprecating-feeds).", + "title": "Deprecating Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "release", + "date": "2026-02-26", + "description": "CRE CLI version 1.2.0 is now available. This release adds dynamic template fetching, new `cre templates` commands for managing template sources, and a new `cre account access` command for checking and requesting deployment access.\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-cli/compare/v1.1.0...v1.2.0)", + "title": "CRE CLI v1.2.0 — Dynamic Templates and Deploy Access Management", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-02-25", + "description": "CRE now supports the Confidential HTTP capability for production workflows, allowing you to make privacy-preserving API calls with enclave execution. See the [Confidential HTTP](https://docs.chain.link/cre/capabilities/confidential-http) page for more information.", + "title": "CRE supports Confidential HTTP capability for production workflows", + "topic": "CRE" + }, + { + "category": "integration", + "date": "2026-02-25", + "description": "Chainlink Data Streams is available for Canton. See the [Canton Integration](https://docs.chain.link/data-streams/canton-integration) page for more information.", + "relatedNetworks": ["canton"], + "title": "Data Streams Expands to Canton", + "topic": "Data Streams" + }, + { + "category": "integration", + "date": "2026-02-22", + "description": "New Data Feeds available:", + "relatedNetworks": ["ethereum", "arbitrum"], + "relatedTokens": [ + { + "assetName": "Swell Ethereum", + "baseAsset": "SWETH", + "quoteAsset": "ETH", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/sweth-eth", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/sweth.webp" + }, + { + "assetName": "Swell Ethereum", + "baseAsset": "SWETH", + "quoteAsset": "ETH", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/sweth-eth", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/sweth.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2026-02-22", + "description": "Newly supported tokens: USDi", + "relatedTokens": [ + { + "assetName": "USDi Coin", + "baseAsset": "USDi", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/USDi", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdi.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + } + ], + "title": "Cross-chain token (CCT) standard: Added support for new tokens", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2026-02-19", + "description": "Chainlink Data Streams is available for new blockchains:\n\n- ADI Mainnet\n- Arc Testnet\n- DogeOS Chikyu Testnet\n- Perennial Mainnet\n- Stable Mainnet\n- Stable Testnet\n\nThe verifier proxy addresses and stream IDs are available on the [Supported Networks](https://docs.chain.link/data-streams/supported-networks) page.", + "relatedNetworks": ["adi-network", "arc", "dogeos", "perennial", "stable"], + "title": "Data Streams Expands to New Blockchains", + "topic": "Data Streams" + }, + { + "category": "release", + "date": "2026-02-18", + "description": "TypeScript SDK version 1.1.0 includes improved error messages across the runtime and utilities, converts the Confidential HTTP capability to run in DON mode, and adds a descriptive error when `cre-setup` has not been run.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-typescript/compare/v1.0.9...v1.1.0)", + "title": "CRE TS SDK v1.1.0 — Error Improvements and Confidential HTTP DON Mode", + "topic": "CRE" + }, + { + "category": "deprecation", + "date": "2026-02-18", + "description": "We have announced the deprecation of select Data Feeds, scheduled for shutdown on March 4th, 2026. Check [the list of Deprecating Data Feeds to learn more](https://docs.chain.link/data-feeds/deprecating-feeds).", + "title": "Deprecating Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2026-02-20", + "description": "Chainlink CCIP expands support to new networks:", + "newNetworks": [ + { + "displayName": "Pharos Mainnet", + "network": "pharos", + "url": "https://docs.chain.link/ccip/directory/mainnet/chain/pharos-mainnet" + }, + { + "displayName": "ADI Network Testnet", + "network": "adi-network", + "url": "https://docs.chain.link/ccip/directory/mainnet/chain/adi-network-testnet" + } + ], + "relatedNetworks": ["pharos", "adi-network"], + "title": "CCIP on Pharos Mainnet and ADI Network Testnet", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2026-02-20", + "description": "Newly supported tokens: USDi", + "relatedTokens": [ + { + "assetName": "USDi Coin", + "baseAsset": "USDi", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/USDi", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdi.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + } + ], + "title": "Cross-chain token (CCT) standard: Added support for new tokens", + "topic": "CCIP" + }, + { + "category": "release", + "date": "2026-02-19", + "description": "CRE CLI version 1.1.0 is now available. This release adds support for custom WASM builds and an improved CLI interface.\n\n**Required versions:** CLI v1.1.0+, Go SDK v1.2.0+, TS SDK v1.0.9+\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-cli/compare/v1.0.11...v1.1.0)", + "title": "CRE CLI v1.1.0 — Custom WASM Builds and Improved CLI Interface", + "topic": "CRE" + }, + { + "category": "integration", + "date": "2026-02-15", + "description": "Newly supported tokens: FUSD", + "relatedTokens": [ + { + "assetName": "FinChain Dollar", + "baseAsset": "FUSD", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/FUSD", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/fusd.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + } + ], + "title": "Cross-chain token (CCT) standard: Added support for new tokens", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2026-02-15", + "description": "New Data Feeds available:", + "relatedNetworks": ["ethereum", "plasma"], + "relatedTokens": [ + { + "assetName": "Circle Internet Group (Ondo API)", + "baseAsset": "CRCLon", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/crclon-usd-shared-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/crclon.webp" + }, + { + "assetName": "Invesco QQQ (Ondo API)", + "baseAsset": "QQQon", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/qqqon-usd-shared-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/qqqon.webp" + }, + { + "assetName": "Invesco QQQ (Ondo Tokenized ETF)", + "baseAsset": "QQQon", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/qqqon-usd-calculated-kalman-shared-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/qqqon.webp" + }, + { + "assetName": "SNUSD / NUSD Exchange Rate", + "baseAsset": "SNUSD", + "quoteAsset": "NUSD", + "network": "plasma", + "url": "https://data.chain.link/feeds/plasma/mainnet/snusd-nusd-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/snusd.webp" + }, + { + "assetName": "SPDR S&P 500 ETF (Ondo API)", + "baseAsset": "SPYon", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/spyon-usd-shared-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/spyon.webp" + }, + { + "assetName": "SPDR S&P 500 ETF (Ondo Tokenized ETF)", + "baseAsset": "SPYON", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/spyon-usd-calculated-kalman-shared-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/spyon.webp" + }, + { + "assetName": "Tesla (Ondo API)", + "baseAsset": "TSLAon", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/tslaon-usd-shared-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/tslaon.webp" + }, + { + "assetName": "Tesla (Ondo Tokenized Stock)", + "baseAsset": "TSLAon", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/tslaon-usd-calculated-kalman-shared-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/tslaon.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "release", + "date": "2026-02-13", + "description": "CRE CLI version 1.0.11 is now available. This release adds World Chain Mainnet support for workflow simulation and production deployment.\n\n**Required versions:** CLI v1.0.11+, Go SDK v1.2.0+, TS SDK v1.0.9+\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-cli/compare/v1.0.10...v1.0.11)", + "title": "CRE CLI v1.0.11 — World Chain Mainnet Support", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-02-12", + "description": "Go SDK version 1.3.0 updates the Confidential HTTP capability types. The `encrypt_output` field has moved from `ConfidentialHTTPRequest` to `HTTPRequest`. Update workflows that set this field accordingly.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-go/compare/v1.2.0...v1.3.0)", + "title": "CRE Go SDK v1.3.0 — Confidential HTTP Type Update", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-02-11", + "description": "Chainlink introduces Tokenized Equity Feeds, providing continuous 24/5 pricing for tokenized representations of US equities and ETFs across all major trading sessions. Ondo Finance is our first partner, with feeds now available on Ethereum Mainnet. View available feeds and learn more about [Tokenized Equity Feeds](https://docs.chain.link/data-feeds/tokenized-equity-feeds).", + "title": "Tokenized Equity Feeds Launch with Ondo Finance", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2026-02-10", + "description": "Chainlink CCIP expands support to new testnets:", + "newNetworks": [ + { + "displayName": "Arc Network Testnet", + "network": "arc", + "url": "https://docs.chain.link/ccip/directory/testnet/chain/arc-testnet" + }, + { + "displayName": "DogeOS Chikyu Testnet", + "network": "dogeos", + "url": "https://docs.chain.link/ccip/directory/testnet/chain/dogeos-testnet-chikyu" + } + ], + "relatedNetworks": ["arc", "dogeos"], + "title": "CCIP on Arc Network Testnet and DogeOS Chikyu Testnet", + "topic": "CCIP" + }, + { + "category": "release", + "date": "2026-02-09", + "description": "CRE CLI version 1.0.10 is now available. This release fixes secret injection for the Confidential HTTP capability in the simulator — template placeholders now resolve correctly during simulation.\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-cli/compare/v1.0.9...v1.0.10)", + "title": "CRE CLI v1.0.10", + "topic": "CRE" + }, + { + "category": "integration", + "date": "2026-02-09", + "description": "Chainlink Data Feeds is available on MegaETH Mainnet. View the available price feed information on the [Price Feed Addresses](https://docs.chain.link/data-feeds/price-feeds/addresses?network=megaeth&page=1) page.", + "relatedNetworks": ["megaeth"], + "title": "Data Feeds Expands to MegaETH Mainnet", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2026-02-09", + "description": "Chainlink Data Streams is available for MegaETH Mainnet. The verifier proxy addresses and stream IDs are available on the [Stream Addresses](https://docs.chain.link/data-streams/crypto-streams) page.", + "relatedNetworks": ["megaeth"], + "title": "Data Streams Expands to MegaETH Mainnet", + "topic": "Data Streams" + }, + { + "category": "integration", + "date": "2026-02-09", + "description": "Chainlink CCIP expands support to MegaETH Mainnet:", + "newNetworks": [ + { + "displayName": "MegaETH Mainnet", + "network": "megaeth", + "url": "https://docs.chain.link/ccip/directory/mainnet/chain/megaeth-mainnet" + } + ], + "relatedNetworks": ["megaeth"], + "title": "CCIP on MegaETH Mainnet", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2026-02-08", + "description": "New Data Streams available on all [supported networks](https://docs.chain.link/data-streams/crypto-streams):", + "relatedNetworks": [ + "0g", + "apechain", + "aptos", + "arbitrum", + "avalanche", + "base", + "berachain", + "bitlayer", + "blast", + "bnb-chain", + "bob", + "botanix", + "celo", + "ethereum", + "gnosis-chain", + "gravity", + "hashkey", + "hedera", + "hyperliquid", + "injective", + "ink", + "jovay", + "katana", + "lens", + "linea", + "mantle", + "metis", + "monad", + "opbnb", + "optimism", + "polygon", + "pharos", + "plasma", + "ronin", + "scroll", + "shibarium", + "sei", + "soneium", + "sonic", + "solana", + "taiko", + "unichain", + "worldchain", + "zksync" + ], + "relatedTokens": [ + { + "assetName": "AUSD", + "baseAsset": "AUSD", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/ausd-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/ausd.webp" + }, + { + "assetName": "Avalanche Bridged BTC", + "baseAsset": "BTC.B", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/btc.b-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/btc.b.webp" + }, + { + "assetName": "Euro Coin", + "baseAsset": "EURC", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/eurc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/eurc.webp" + }, + { + "assetName": "FBTC / BTC Exchange Rate", + "baseAsset": "FBTC", + "quoteAsset": "BTC", + "url": "https://docs.chain.link/data-streams/exchange-rate-streams?search=FBTC&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/fbtc.webp" + }, + { + "assetName": "Lighter", + "baseAsset": "LIT", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/lit-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/lit.webp" + }, + { + "assetName": "Meteora", + "baseAsset": "MET", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/met-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/met.webp" + }, + { + "assetName": "OpenEden", + "baseAsset": "EDEN", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/eden-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/eden.webp" + }, + { + "assetName": "Resolv", + "baseAsset": "RESOLV", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/resolv-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/resolv.webp" + }, + { + "assetName": "The White Whale", + "baseAsset": "WHITEWHALE", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/whitewhale-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/whitewhale.webp" + }, + { + "assetName": "TRY", + "baseAsset": "TRY", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/try-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/try.webp" + }, + { + "assetName": "Turtle", + "baseAsset": "TURTLE", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/turtle-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/turtle.webp" + }, + { + "assetName": "USDM", + "baseAsset": "USDM", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/usdm-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdm.webp" + } + ], + "title": "Added support to Data Streams", + "topic": "Data Streams" + }, + { + "category": "integration", + "date": "2026-02-08", + "description": "New Data Feeds available:", + "relatedNetworks": ["megaeth", "avalanche"], + "relatedTokens": [ + { + "assetName": "Copper", + "baseAsset": "XCU", + "quoteAsset": "USD", + "network": "avalanche", + "url": "https://data.chain.link/feeds/avalanche/mainnet/xcu-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/xcu.webp" + }, + { + "assetName": "GLV [AVAX-USDC]", + "baseAsset": "GLV", + "quoteAsset": "USD", + "network": "avalanche", + "url": "https://data.chain.link/feeds/avalanche/mainnet/glv-%5Bavax-usdc%5D-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/glv.webp" + }, + { + "assetName": "Mountain Protocol USD", + "baseAsset": "USDM", + "quoteAsset": "USD", + "network": "megaeth", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=MegaETH&page=1&search=USDM", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdm.webp" + }, + { + "assetName": "Splashing Staked SEI", + "baseAsset": "SPSEI", + "quoteAsset": "SEI", + "network": "avalanche", + "url": "https://data.chain.link/feeds/avalanche/mainnet/spsei-sei-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/spsei.webp" + }, + { + "assetName": "WSRUSD / RUSD Exchange Rate", + "baseAsset": "WSRUSD", + "quoteAsset": "RUSD", + "network": "megaeth", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=MegaETH&search=WSR&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/wsrusd.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "release", + "date": "2026-02-06", + "description": "CRE CLI version 1.0.9 is now available. This release adds experimental [Confidential HTTP](https://docs.chain.link/cre/capabilities/confidential-http) capability support in the simulator, allowing you to simulate workflows with privacy-preserving API calls.\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-cli/compare/v1.0.8...v1.0.9)", + "title": "CRE CLI v1.0.9", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-02-06", + "description": "CRE CLI version 1.0.8 is now available. This release changes `chain-id` to `chain-selector` in simulator settings, adds support for longer workflow names, and fixes a logic bug in the template contract MessageEmitter.sol.\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-cli/compare/v1.0.7...v1.0.8)", + "title": "CRE CLI v1.0.8", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-02-02", + "description": "We have updated the Selecting Quality Data Feeds guide to include risk level indicators for Custom Feeds, stablecoin-specific considerations, and clarified developer responsibilities across all feed categories. [Learn more](https://docs.chain.link/data-feeds/selecting-data-feeds).", + "title": "Updated Selecting Quality Data Feeds Guide", + "topic": "Data Feeds" + }, + { + "category": "deprecation", + "date": "2026-02-02", + "description": "Support for select Data Stream feeds have been deprecated due to a lack of active users. Check [the list of Deprecating Data Streams to learn more](https://docs.chain.link/data-streams/deprecating-streams).\n\n**Note:** Teams interested in re-enabling a deprecated Data Stream feed (or requesting a new one) can [reach out to discuss requirements, expected usage, and deployment timelines](https://chain.link/contact).", + "title": "Deprecated Data Stream Feeds", + "topic": "Data Streams" + }, + { + "category": "integration", + "date": "2026-02-01", + "description": "New Data Feeds available:", + "relatedNetworks": ["bnb-chain", "hyperevm", "celo"], + "relatedTokens": [ + { + "assetName": "Aave", + "baseAsset": "AAVE", + "quoteAsset": "USD", + "network": "bnb-chain", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=bnb-chain&search=aave&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/aave.webp" + }, + { + "assetName": "BEHYPE", + "baseAsset": "BEHYPE", + "quoteAsset": "HYPE", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=behype&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/behype.webp" + }, + { + "assetName": "Bitcoin", + "baseAsset": "BTC", + "quoteAsset": "USD", + "network": "bnb-chain", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=bnb-chain&showSvr=true", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/btc.webp" + }, + { + "assetName": "Bitcoin", + "baseAsset": "BTC", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=BTC&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/btc.webp" + }, + { + "assetName": "Circle USD", + "baseAsset": "USDC", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=USDC&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdc.webp" + }, + { + "assetName": "Ethena USDe", + "baseAsset": "USDE", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=Ethena+USDe&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usde.webp" + }, + { + "assetName": "Ethereum", + "baseAsset": "ETH", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=ETH&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/eth.webp" + }, + { + "assetName": "Hyperliquid", + "baseAsset": "HYPE", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://data.chain.link/feeds/hyperliquid/hyperliquid/hype-usd-shared-svr", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/hype.webp" + }, + { + "assetName": "KHYPE", + "baseAsset": "KHYPE", + "quoteAsset": "HYPE", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=HYPE&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/khype.webp" + }, + { + "assetName": "Kinetiq Staked HYPE", + "baseAsset": "KHYPE", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=KHYPE&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/khype.webp" + }, + { + "assetName": "Solana", + "baseAsset": "SOL", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=SOL&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/sol.webp" + }, + { + "assetName": "stCELO / CELO Exchange Rate", + "baseAsset": "stCELO", + "quoteAsset": "CELO", + "network": "celo", + "url": "https://data.chain.link/feeds/celo/mainnet/stcelo-celo-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/stcelo.webp" + }, + { + "assetName": "Tether Gold", + "baseAsset": "XAUT", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=XAUT&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/xaut.webp" + }, + { + "assetName": "Tether USD", + "baseAsset": "USDT", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=USDT&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdt.webp" + }, + { + "assetName": "Theo Short Duration US Treasury Fund", + "baseAsset": "THBILL", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=THBILL&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/thbill.webp" + }, + { + "assetName": "Unit Bitcoin", + "baseAsset": "UBTC", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=UBTC&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/ubtc.webp" + }, + { + "assetName": "Unit Solana", + "baseAsset": "USOL", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=USOL&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usol.webp" + }, + { + "assetName": "USDH", + "baseAsset": "USDH", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=USDH&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdh.webp" + }, + { + "assetName": "WSTHYPE / STHYPE Exchange Rate", + "baseAsset": "WSTHYPE", + "quoteAsset": "STHYPE", + "network": "hyperevm", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=hyperevm&search=WSTHYPE&showSvr=true&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/wsthype.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2026-01-29", + "description": "CRE now supports additional testnets for workflow simulation: Apechain Curtis, Arc Testnet, Hyperliquid Testnet, Ink Sepolia, Jovay Testnet, Linea Sepolia, Plasma Testnet, and World Chain Sepolia.\n\n**Required versions:** CLI v1.0.7+, Go SDK v1.1.4+, TS SDK v1.0.7+\n\nSee the [Supported Networks](https://docs.chain.link/cre/supported-networks) page for chain names and version requirements.", + "relatedNetworks": ["apechain", "arc", "hyperliquid", "ink", "jovay", "linea", "plasma", "worldchain"], + "title": "CRE Expands Testnet Support", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-01-29", + "description": "CRE CLI version 1.0.7 is now available with internal improvements and updates to the bundled TypeScript SDK (now v1.0.7).\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-cli/compare/v1.0.6...v1.0.7)", + "title": "CRE CLI v1.0.7", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-01-29", + "description": "TypeScript SDK version 1.0.7 is now available with internal improvements.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-typescript/compare/v1.0.5...v1.0.7)", + "title": "CRE TS SDK v1.0.7", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-01-28", + "description": "TypeScript SDK version 1.0.5 fixes an issue with `runtime.now()` returning incorrect timestamps. See [Time in CRE](https://docs.chain.link/cre/concepts/time-in-cre) for usage details.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-typescript/compare/v1.0.4...v1.0.5)", + "title": "CRE TS SDK v1.0.5", + "topic": "CRE" + }, + { + "category": "integration", + "date": "2026-01-27", + "description": "Chainlink Data Streams is available for Pharos Mainnet and Testnet. The verifier proxy addresses and stream IDs are available on the [Stream Addresses](https://docs.chain.link/data-streams/crypto-streams) page.", + "relatedNetworks": ["pharos"], + "title": "Data Streams Expands to Pharos Mainnet and Testnet", + "topic": "Data Streams" + }, + { + "category": "integration", + "date": "2026-01-26", + "description": "CRE now supports ZKSync Era mainnet and testnet for workflow simulation and production deployment.\n\n**Required versions:** CLI v1.0.6+, Go SDK v1.1.3+ (mainnet) / v1.1.2+ (testnet), TS SDK v1.0.7+\n\nSee the [Supported Networks](https://docs.chain.link/cre/supported-networks) page for chain names and version requirements.", + "relatedNetworks": ["zksync"], + "title": "CRE Expands to ZKSync Era", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-01-26", + "description": "TypeScript SDK version 1.0.4 is now available with internal improvements.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-typescript/compare/v1.0.3...v1.0.4)", + "title": "CRE TS SDK v1.0.4", + "topic": "CRE" + }, + { + "category": "integration", + "date": "2026-01-25", + "description": "New Data Streams available on all [supported networks](https://docs.chain.link/data-streams/crypto-streams):", + "relatedNetworks": [ + "0g", + "apechain", + "aptos", + "arbitrum", + "avalanche", + "base", + "berachain", + "bitlayer", + "blast", + "bnb-chain", + "bob", + "botanix", + "celo", + "ethereum", + "gnosis-chain", + "gravity", + "hashkey", + "hedera", + "hyperliquid", + "injective", + "ink", + "jovay", + "katana", + "lens", + "linea", + "mantle", + "metis", + "monad", + "opbnb", + "optimism", + "polygon", + "plasma", + "ronin", + "scroll", + "shibarium", + "sei", + "soneium", + "sonic", + "solana", + "taiko", + "unichain", + "worldchain", + "zksync" + ], + "relatedTokens": [ + { + "assetName": "AbbVie Inc", + "baseAsset": "ABBV", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/abbv-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/abbv.webp" + }, + { + "assetName": "Alphabet Inc - A", + "baseAsset": "GOOGL", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/googl-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/googl.webp" + }, + { + "assetName": "Amazon.com Inc", + "baseAsset": "AMZN", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/amzn-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/amzn.webp" + }, + { + "assetName": "Apple Inc", + "baseAsset": "AAPL", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/aapl-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/aapl.webp" + }, + { + "assetName": "Bitmine Immersion Technologies", + "baseAsset": "BMNR", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/bmnr-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/bmnr.webp" + }, + { + "assetName": "BOB (Build on Bitcoin)", + "baseAsset": "BOB", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/bob-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/bob.webp" + }, + { + "assetName": "CBTC Proof of Reserves", + "baseAsset": "CBTC", + "quoteAsset": "POR", + "url": "https://data.chain.link/streams/cbtc-por", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/cbtc.webp" + }, + { + "assetName": "Circle Internet Group Inc", + "baseAsset": "CRCL", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/crcl-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/crcl.webp" + }, + { + "assetName": "Coinbase Global Inc", + "baseAsset": "COIN", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/coin-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/coin.webp" + }, + { + "assetName": "Degen (Base)", + "baseAsset": "DEGEN", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/degen-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/degen.webp" + }, + { + "assetName": "Invesco QQQ Trust Series 1 ETF", + "baseAsset": "QQQ", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/qqq-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/qqq.webp" + }, + { + "assetName": "Merck & Co Inc", + "baseAsset": "MRK", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/mrk-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/mrk.webp" + }, + { + "assetName": "Meta Platforms Inc", + "baseAsset": "META", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/meta-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/meta.webp" + }, + { + "assetName": "Metamask USD", + "baseAsset": "MUSD", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/musd-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/musd.webp" + }, + { + "assetName": "Microsoft Corp", + "baseAsset": "MSFT", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/msft-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/msft.webp" + }, + { + "assetName": "Microstrategy Inc Class A", + "baseAsset": "MSTR", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/mstr-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/mstr.webp" + }, + { + "assetName": "NVIDIA Corp", + "baseAsset": "NVDA", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/nvda-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/nvda.webp" + }, + { + "assetName": "Oracle Corp", + "baseAsset": "ORCL", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/orcl-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/orcl.webp" + }, + { + "assetName": "Palantir Technologies Inc", + "baseAsset": "PLTR", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/pltr-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/pltr.webp" + }, + { + "assetName": "Robinhood Markets Inc", + "baseAsset": "HOOD", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/hood-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/hood.webp" + }, + { + "assetName": "SPDR S&P 500 ETF", + "baseAsset": "SPY", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/spy-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/spy.webp" + }, + { + "assetName": "Superstate Crypto Carry Fund", + "baseAsset": "USCC", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/uscc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/uscc.webp" + }, + { + "assetName": "Superstate Short Duration U.S. Government Securities Fund", + "baseAsset": "USTB", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/ustb-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/ustb.webp" + }, + { + "assetName": "Tesla Inc", + "baseAsset": "TSLA", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/tsla-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/tsla.webp" + }, + { + "assetName": "UnitedHealth Group Inc", + "baseAsset": "UNH", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/unh-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/unh.webp" + }, + { + "assetName": "USDT0", + "baseAsset": "USDT0", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/usdt0-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdt0.webp" + }, + { + "assetName": "USDtb", + "baseAsset": "USDTB", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/usdtb-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdtb.webp" + } + ], + "title": "Added support to Data Streams", + "topic": "Data Streams" + }, + { + "category": "release", + "date": "2026-01-21", + "description": "CRE CLI version 1.0.6 is now available. This release adds ZKSync Era testnet and mainnet support in the simulator, along with various small improvements and bug fixes.\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.", + "title": "CRE CLI v1.0.6", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-01-20", + "description": "Chainlink 24/5 U.S. Equities Streams provide real-time equity pricing data across all major U.S. single-name equities and ETFs spanning regular, pre-market, post-market, and overnight trading sessions.\n\nEach instrument is exposed through three distinct streams for different trading phases: Regular Hours, Extended Hours, and Overnight Hours. Users can dynamically switch between these streams to construct a continuous price feed.\n\n- Complete user guide: [24/5 US Equities User Guide](https://docs.chain.link/data-streams/rwa-streams/24-5-us-equities-user-guide)\n- View available streams: [Stream Table Viewer](https://docs.chain.link/data-streams/stream-ids?network=arbitrum&show24x5=true)\n- Report schema: [RWA Advanced (v11)](https://docs.chain.link/data-streams/reference/report-schema-v11)", + "title": "24/5 US Equities Streams Now Available", + "topic": "Data Streams" + }, + { + "category": "release", + "date": "2026-01-19", + "description": "TypeScript SDK version 1.0.3 is now available. This release fixes an issue where workflows could execute twice during simulation. All workflow examples in the SDK repository now use direct imports.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-typescript/compare/v1.0.2...v1.0.3)", + "title": "CRE TS SDK v1.0.3", + "topic": "CRE" + }, + { + "category": "integration", + "date": "2026-01-18", + "description": "New Data Streams available on all [supported networks](https://docs.chain.link/data-streams/crypto-streams):", + "relatedNetworks": [ + "0g", + "apechain", + "aptos", + "arbitrum", + "avalanche", + "base", + "berachain", + "bitlayer", + "blast", + "bnb-chain", + "bob", + "botanix", + "celo", + "ethereum", + "gnosis-chain", + "gravity", + "hashkey", + "hedera", + "hyperliquid", + "injective", + "ink", + "jovay", + "katana", + "lens", + "linea", + "mantle", + "metis", + "monad", + "opbnb", + "optimism", + "polygon", + "plasma", + "ronin", + "scroll", + "shibarium", + "sei", + "soneium", + "sonic", + "solana", + "taiko", + "unichain", + "worldchain", + "zksync" + ], + "relatedTokens": [ + { + "assetName": "Canton", + "baseAsset": "CC", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/cc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/cc.webp" + }, + { + "assetName": "cUSDO / USDO Exchange Rate", + "baseAsset": "cUSDO", + "quoteAsset": "USDO", + "url": "https://docs.chain.link/data-streams/crypto-streams?search=cUSDO%2FUSDO&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/cusdo.webp" + }, + { + "assetName": "kmHYPE / HYPE Exchange Rate", + "baseAsset": "kmHYPE", + "quoteAsset": "HYPE", + "url": "https://docs.chain.link/data-streams/crypto-streams?search=kmHYPE&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/kmhype.webp" + }, + { + "assetName": "Tea-REX", + "baseAsset": "TREX", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/trex-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/trex.webp" + }, + { + "assetName": "wstETH / stETH Exchange Rate", + "baseAsset": "wstETH", + "quoteAsset": "stETH", + "url": "https://docs.chain.link/data-streams/crypto-streams?search=wstETH%2FstETH&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/wsteth.webp" + } + ], + "title": "Added support to Data Streams", + "topic": "Data Streams" + }, + { + "category": "integration", + "date": "2026-01-18", + "description": "New SmartData Feeds available:", + "relatedNetworks": ["ethereum"], + "relatedTokens": [ + { + "assetName": "Bitcoin (BTC)", + "baseAsset": "LBTC", + "network": "ethereum", + "productTypeCode": "PoR", + "url": "https://data.chain.link/feeds/ethereum/mainnet/lombard-por", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/lbtc.webp" + } + ], + "title": "Added support to SmartData", + "topic": "SmartData" + }, + { + "category": "integration", + "date": "2026-01-18", + "description": "New Data Feeds available:", + "relatedNetworks": ["base", "megaeth", "arbitrum"], + "relatedTokens": [ + { + "assetName": "Anzen USDz", + "baseAsset": "USDz", + "quoteAsset": "USD", + "network": "base", + "url": "https://data.chain.link/feeds/base/base/usdz-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdz.webp" + }, + { + "assetName": "Avalanche Bridged BTC", + "baseAsset": "BTCB", + "quoteAsset": "USD", + "network": "megaeth", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=MegaETH", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/btcb.webp" + }, + { + "assetName": "PayPal USD", + "baseAsset": "PYUSD", + "quoteAsset": "USD", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/pyusd-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/pyusd.webp" + }, + { + "assetName": "USD+", + "baseAsset": "USD+", + "quoteAsset": "USD", + "network": "base", + "url": "https://data.chain.link/feeds/base/base/usd+-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usd+.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2026-01-18", + "description": "Newly supported tokens: BGB, PTjrUSDe, PTsrUSDe", + "relatedTokens": [ + { + "assetName": "BitgetToken", + "baseAsset": "BGB", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/BGB", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/bgb.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "PT Strata Junior USDe 2APR2026", + "baseAsset": "PTjrUSDe", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/PTjrUSDe", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/ptjrusde.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "PT Strata Senior USDe 2APR2026", + "baseAsset": "PTsrUSDe", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/PTsrUSDe", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/ptsrusde.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + } + ], + "title": "Cross-chain token (CCT) standard: Added support for new tokens", + "topic": "CCIP" + }, + { + "category": "release", + "date": "2026-01-16", + "description": "TypeScript SDK version 1.0.2 is now available with improved developer experience: optional `main()` call, automatic error handling, and direct imports for SDK components. Both import styles remain supported for backward compatibility.\n\n[See all changes on GitHub](https://github.com/smartcontractkit/cre-sdk-typescript/compare/v1.0.1...v1.0.2)", + "title": "CRE TS SDK v1.0.2", + "topic": "CRE" + }, + { + "category": "deprecation", + "date": "2026-01-15", + "description": "Support for Data Feeds on Ronin will be deprecated on **February 16th, 2026**. A complete list of Data Feeds designated for deprecation along with their corresponding shutdown dates can be found [here](https://docs.chain.link/data-feeds/deprecating-feeds).", + "title": "Deprecated Ronin Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "release", + "date": "2026-01-13", + "description": "CRE CLI version 1.0.5 is now available with various small improvements and bug fixes.\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.", + "title": "CRE CLI v1.0.5", + "topic": "CRE" + }, + { + "category": "integration", + "date": "2026-01-11", + "description": "New Data Feeds available:", + "relatedNetworks": ["bob", "ethereum", "mantle"], + "relatedTokens": [ + { + "assetName": "BOB (Build on Bitcoin)", + "baseAsset": "BOB", + "quoteAsset": "USD", + "network": "bob", + "url": "https://data.chain.link/feeds/bob/mainnet/bob-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/bob.webp" + }, + { + "assetName": "Ethena USDtb", + "baseAsset": "USDtb", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/usdtb-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdtb.webp" + }, + { + "assetName": "Kelp DAO Restaked ETH", + "baseAsset": "RSETH", + "quoteAsset": "ETH", + "network": "mantle", + "url": "https://data.chain.link/feeds/mantle/mantle/rseth-eth-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/rseth.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "release", + "date": "2026-01-09", + "description": "CRE CLI version 1.0.4 is now available with various small improvements and bug fixes.\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.", + "title": "CRE CLI v1.0.4", + "topic": "CRE" + }, + { + "category": "release", + "date": "2026-01-07", + "description": "We've introduced a new [Very High Market Risk](https://docs.chain.link/data-feeds/selecting-data-feeds#-very-high-market-risk-feeds) category across Chainlink documentation pages and data.chain.link to better distinguish data feeds that are subject to extreme market risk beyond the existing High Market Risk classification. These feeds may reflect assets undergoing significant market events, severe liquidity constraints, or deprecation.\n\nTo improve transparency and consistency, feeds are no longer hidden based on risk level. All feeds are now visible and clearly labeled, allowing developers to make [informed decisions](https://docs.chain.link/data-feeds/selecting-data-feeds#overview) using more granular risk classifications.", + "title": "New risk category and improved feed visibility", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2026-01-04", + "description": "New Data Feeds available:", + "relatedNetworks": ["polygon"], + "relatedTokens": [ + { + "assetName": "Indonesian Rupiah", + "baseAsset": "IDR", + "quoteAsset": "USD", + "network": "polygon", + "url": "https://data.chain.link/feeds/polygon/mainnet/idr-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/idr.webp" + }, + { + "assetName": "South African Rand", + "baseAsset": "ZAR", + "quoteAsset": "USD", + "network": "polygon", + "url": "https://data.chain.link/feeds/polygon/mainnet/zar-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/zar.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "release", + "date": "2025-12-29", + "description": "The Data Streams Candlestick API now offers a new [`/groups` endpoint](https://docs.chain.link/data-streams/reference/candlestick-api#get-list-of-supported-groups) that returns a list of all supported symbol types (crypto, equities, forex, equity) which can be used as a filter in the `/symbol_info` endpoint. Additionally, the `/history` and `/history/rows` endpoints now support [user-specified resolutions](https://docs.chain.link/data-streams/reference/candlestick-api#supported-resolutions) with flexible time units (minutes, hours, days, weeks, months, years).", + "title": "Candlestick API: Groups endpoint and user resolution support", + "topic": "Data Streams" + }, + { + "category": "integration", + "date": "2025-12-21", + "description": "Newly supported tokens: QUICK, RAIN, aprMON", + "relatedTokens": [ + { + "assetName": "QuickSwap", + "baseAsset": "QUICK", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/QUICK", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/quick.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "Rain Coin", + "baseAsset": "RAIN", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/RAIN", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/rain.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "aPriori LST", + "baseAsset": "aprMON", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/aprMON", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/aprmon.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + } + ], + "title": "Cross-chain token (CCT) standard: Added support for new tokens", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2025-12-21", + "description": "New SmartData Feeds available:", + "relatedNetworks": ["polygon"], + "relatedTokens": [ + { + "assetName": "R25 rcUSD+", + "baseAsset": "rcUSD+", + "network": "polygon", + "productTypeCode": "NAV", + "url": "https://data.chain.link/feeds/polygon/mainnet/rcusd+-nav", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/rcusd+.webp" + } + ], + "title": "Added support to SmartData", + "topic": "SmartData" + }, + { + "category": "integration", + "date": "2025-12-21", + "description": "New Data Feeds available:", + "relatedNetworks": ["polygon", "base", "arbitrum", "hyperevm"], + "relatedTokens": [ + { + "assetName": "Bitcoin", + "baseAsset": "BTC", + "quoteAsset": "USD", + "network": "base", + "url": "https://data.chain.link/feeds/base/base/btc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/btc.webp" + }, + { + "assetName": "Circle EUR", + "baseAsset": "EURC", + "quoteAsset": "USD", + "network": "base", + "url": "https://data.chain.link/feeds/base/base/eurc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/eurc.webp" + }, + { + "assetName": "Circle USD", + "baseAsset": "USDC", + "quoteAsset": "USD", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/usdc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdc.webp" + }, + { + "assetName": "Circle USD", + "baseAsset": "USDC", + "quoteAsset": "USD", + "network": "base", + "url": "https://data.chain.link/feeds/base/base/usdc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdc.webp" + }, + { + "assetName": "Ethereum", + "baseAsset": "ETH", + "quoteAsset": "USD", + "network": "base", + "url": "https://data.chain.link/feeds/base/base/eth-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/eth.webp" + }, + { + "assetName": "Tether USD", + "baseAsset": "USDT", + "quoteAsset": "USD", + "network": "base", + "url": "https://data.chain.link/feeds/base/base/usdt-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdt.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2025-12-19", + "description": "Chainlink CCIP expands support to new blockchains:", + "newNetworks": [ + { + "displayName": "Ethereum Hoodi", + "network": "ethereum", + "url": "https://docs.chain.link/ccip/directory/testnet/chain/ethereum-testnet-hoodi" + } + ], + "relatedNetworks": ["ethereum"], + "title": "CCIP Expands to Ethereum Hoodi", + "topic": "CCIP" + }, + { + "category": "deprecation", + "date": "2025-12-16", + "description": "Support for Data Feeds on Fantom will be deprecated on **January 12th, 2026**. A complete list of Data Feeds designated for deprecation along with their corresponding shutdown dates can be found [here](https://docs.chain.link/data-feeds/deprecating-feeds).", + "title": "Deprecated Fantom Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2025-12-14", + "description": "Newly supported tokens: BTC.b, JCT, KNET, POWER, PTsUSDE, SWCH, avBTC, avBTCx, avUSD, avUSDx, pippin", + "relatedTokens": [ + { + "assetName": "Bitcoin", + "baseAsset": "BTC.b", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/BTC.b", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/btcb.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "JANCTION", + "baseAsset": "JCT", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/JCT", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/jct.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "Kingnet AI", + "baseAsset": "KNET", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/KNET", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/knet.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "Power", + "baseAsset": "POWER", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/POWER", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/power.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "PT Ethena sUSDE 5FEB2026", + "baseAsset": "PTsUSDE", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/PTsUSDE", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/ptsusde.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "SwissCheese Token", + "baseAsset": "SWCH", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/SWCH", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/swch.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "avBTC", + "baseAsset": "avBTC", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/avBTC", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/avbtc.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "avBTC MAX", + "baseAsset": "avBTCx", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/avBTCx", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/avbtcx.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "avUSD", + "baseAsset": "avUSD", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/avUSD", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/avusd.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "avUSD MAX", + "baseAsset": "avUSDx", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/avUSDx", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/avusdx.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + }, + { + "assetName": "Pippin", + "baseAsset": "pippin", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/pippin", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/pippin.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + } + ], + "title": "Cross-chain token (CCT) standard: Added support for new tokens", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2025-12-14", + "description": "New SmartData Feeds available:", + "relatedNetworks": ["optimism", "bnb-chain"], + "relatedTokens": [ + { + "assetName": "Virtune Polkadot ETP / PoR", + "baseAsset": "DOT", + "network": "optimism", + "productTypeCode": "PoR", + "url": "https://data.chain.link/feeds/optimism/mainnet/virtune-dot-etp-por", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/dot.webp" + }, + { + "assetName": "Virtune Stellar ETP / PoR", + "baseAsset": "XLM", + "network": "optimism", + "productTypeCode": "PoR", + "url": "https://data.chain.link/feeds/optimism/mainnet/virtune-xlm-etp-por", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/xlm.webp" + }, + { + "assetName": "WisdomTree Bloomberg U.S. Dollar Bullish Fund", + "baseAsset": "USDU", + "network": "bnb-chain", + "productTypeCode": "PoR", + "url": "https://data.chain.link/feeds/bsc/mainnet/usdu-por", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdu.webp" + } + ], + "title": "Added support to SmartData", + "topic": "SmartData" + }, + { + "category": "integration", + "date": "2025-12-14", + "description": "New Data Feeds available:", + "relatedNetworks": [ + "polygon", + "optimism", + "arbitrum", + "ethereum", + "hyperevm", + "solana", + "metis", + "base", + "sonic", + "bnb-chain" + ], + "relatedTokens": [ + { + "assetName": "Arbitrum", + "baseAsset": "ARB", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/arb-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/arb.webp" + }, + { + "assetName": "Avant Staked BTC", + "baseAsset": "savBTC", + "quoteAsset": "avBTC", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/savbtc-avbtc-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/savbtc.webp" + }, + { + "assetName": "Avant Staked USD", + "baseAsset": "savUSD", + "quoteAsset": "avUSD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/savusd-avusd-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/savusd.webp" + }, + { + "assetName": "Bitcoin", + "baseAsset": "BTC", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/btc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/btc.webp" + }, + { + "assetName": "Chainlink", + "baseAsset": "LINK", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/link-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/link.webp" + }, + { + "assetName": "Circle EUR", + "baseAsset": "EURC", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/eurc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/eurc.webp" + }, + { + "assetName": "DAI", + "baseAsset": "DAI", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/dai-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/dai.webp" + }, + { + "assetName": "Ethereum", + "baseAsset": "ETH", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/eth-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/eth.webp" + }, + { + "assetName": "Felix feUSD", + "baseAsset": "FEUSD", + "quoteAsset": "USD", + "network": "hyperevm", + "url": "https://data.chain.link/feeds/hyperliquid/hyperliquid/feusd-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/feusd.webp" + }, + { + "assetName": "FRAX", + "baseAsset": "FRAX", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/frax-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/frax.webp" + }, + { + "assetName": "Jupiter", + "baseAsset": "JUP", + "quoteAsset": "USD", + "network": "solana", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=solana&search=Jupiter&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/jup.webp" + }, + { + "assetName": "Jupiter Perpetuals Liquidity Provider Token", + "baseAsset": "JLP", + "quoteAsset": "USD", + "network": "solana", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=solana&search=Jupiter+Perpetuals&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/jlp.webp" + }, + { + "assetName": "Liquity USD", + "baseAsset": "LUSD", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/lusd-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/lusd.webp" + }, + { + "assetName": "Solv Protocol SolvBTC / BTC Exchange Rate", + "baseAsset": "solvBTC", + "quoteAsset": "BTC", + "network": "solana", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=solana&search=Solv+Protocol+SolvBTC&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/solvbtc.webp" + }, + { + "assetName": "South African Rand", + "baseAsset": "ZAR", + "quoteAsset": "USD", + "network": "sonic", + "url": "https://data.chain.link/feeds/sonic/sonic/zar-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/zar.webp" + }, + { + "assetName": "syrupUSDT-USDT Exchange Rate", + "baseAsset": "syrupUSDT", + "quoteAsset": "USDT", + "network": "bnb-chain", + "url": "https://data.chain.link/feeds/bsc/mainnet/syrupusdt-usdt-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/syrupusdt.webp" + }, + { + "assetName": "Tether USD", + "baseAsset": "USDT", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/usdt-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdt.webp" + }, + { + "assetName": "Wrapped Bitcoin", + "baseAsset": "WBTC", + "quoteAsset": "USD", + "network": "solana", + "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?network=solana&search=WBTC&page=1", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/wbtc.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2025-12-12", + "description": "Chainlink CCIP expands support to new blockchains:", + "newNetworks": [ + { + "displayName": "Tempo Testnet", + "network": "tempo", + "url": "https://docs.chain.link/ccip/directory/testnet/chain/tempo-testnet" + } + ], + "relatedNetworks": ["tempo"], + "title": "CCIP Expands to Tempo Testnet", + "topic": "CCIP" + }, + { + "category": "release", + "date": "2025-12-12", + "description": "CRE CLI version 1.0.3 is now available with various small improvements and bug fixes.\n\nUpdate your CLI by running `cre update` when prompted, or follow the [CLI Installation guide](https://docs.chain.link/cre/getting-started/cli-installation) for fresh installations.", + "title": "CRE CLI v1.0.3", + "topic": "CRE" + }, + { + "category": "release", + "date": "2025-12-11", + "description": "Chainlink Node v2.31.0 is now available. See the [Release Notes](https://github.com/smartcontractkit/chainlink/releases/tag/v2.31.0) for details.", + "title": "Chainlink Node v2.31.0", + "topic": "Nodes" + }, + { + "category": "release", + "date": "2025-12-11", + "description": "Upgraded Time-based Upkeeps. Read more [here](https://docs.chain.link/chainlink-automation/guides/job-scheduler)", + "title": "Upgraded Time-based Upkeeps ", + "topic": "Automation" + }, + { + "category": "integration", + "date": "2025-12-09", + "description": "Chainlink CCIP expands support to new blockchains:", + "newNetworks": [ + { + "displayName": "Morph Hoodi Testnet", + "network": "morph", + "url": "https://docs.chain.link/ccip/directory/testnet/chain/ethereum-testnet-hoodi-morph" + } + ], + "relatedNetworks": ["morph"], + "title": "CCIP Expands to Morph Hoodi Testnet", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2025-12-08", + "description": "Chainlink CCIP expands support to new blockchains:", + "newNetworks": [ + { + "displayName": "Jovay Mainnet", + "network": "jovay", + "url": "https://docs.chain.link/ccip/directory/mainnet/chain/jovay-mainnet" + }, + { + "displayName": "Jovay Testnet", + "network": "jovay", + "url": "https://docs.chain.link/ccip/directory/testnet/chain/jovay-testnet" + }, + { + "displayName": "Morph Mainnet", + "network": "morph", + "url": "https://docs.chain.link/ccip/directory/mainnet/chain/morph-mainnet" + }, + { + "displayName": "Stable Mainnet", + "network": "stable", + "url": "https://docs.chain.link/ccip/directory/mainnet/chain/stable-mainnet" + } + ], + "relatedNetworks": ["jovay", "morph", "stable"], + "title": "CCIP Expands to Jovay Mainnet & Testnet, Morph Mainnet, Stable Mainnet", + "topic": "CCIP" + }, + { + "category": "integration", + "date": "2025-12-07", + "description": "New Data Streams available on all [supported networks](https://docs.chain.link/data-streams/crypto-streams):", + "relatedNetworks": [ + "0g", + "apechain", + "aptos", + "arbitrum", + "avalanche", + "base", + "berachain", + "bitlayer", + "blast", + "bnb-chain", + "bob", + "botanix", + "celo", + "ethereum", + "gnosis-chain", + "gravity", + "hashkey", + "hedera", + "hyperliquid", + "injective", + "ink", + "jovay", + "katana", + "lens", + "linea", + "mantle", + "metis", + "monad", + "opbnb", + "optimism", + "polygon", + "plasma", + "ronin", + "scroll", + "shibarium", + "sei", + "soneium", + "sonic", + "solana", + "taiko", + "unichain", + "worldchain", + "zksync" + ], + "relatedTokens": [ + { + "assetName": "PLTR", + "baseAsset": "PLTR", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/pltr-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/pltr.webp" + }, + { + "assetName": "SOLVBTC / BTC Exchange Rate", + "baseAsset": "SOLVBTC", + "quoteAsset": "BTC", + "url": "https://data.chain.link/streams/solvbtc-btc", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/solvbtc.webp" + } + ], + "title": "Added support to Data Streams", + "topic": "Data Streams" + }, + { + "category": "integration", + "date": "2025-12-07", + "description": "New SmartData Feeds available:", + "relatedNetworks": ["base"], + "relatedTokens": [ + { + "assetName": "ARSx", + "baseAsset": "ARSx", + "network": "base", + "productTypeCode": "PoR", + "url": "https://data.chain.link/feeds/base/base/arsx-base-por", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/arsx.webp" + } + ], + "title": "Added support to SmartData", + "topic": "SmartData" + }, + { + "category": "integration", + "date": "2025-12-07", + "description": "New Data Feeds available:", + "relatedNetworks": ["arbitrum", "optimism", "ethereum", "mantle", "base"], + "relatedTokens": [ + { + "assetName": "Aave", + "baseAsset": "AAVE", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/aave-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/aave.webp" + }, + { + "assetName": "Arbitrum", + "baseAsset": "ARB", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/arb-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/arb.webp" + }, + { + "assetName": "Bitcoin", + "baseAsset": "BTC", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/btc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/btc.webp" + }, + { + "assetName": "Calculated ETH+", + "baseAsset": "ETH+", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/calculated-ethplus-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/eth+.webp" + }, + { + "assetName": "Chainlink", + "baseAsset": "LINK", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/link-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/link.webp" + }, + { + "assetName": "Circle EUR", + "baseAsset": "EURC", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/eurc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/eurc.webp" + }, + { + "assetName": "Circle USD", + "baseAsset": "USDC", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/usdc-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdc.webp" + }, + { + "assetName": "Compounding OpenDollar", + "baseAsset": "CUSDO", + "quoteAsset": "USD", + "network": "ethereum", + "url": "https://data.chain.link/feeds/ethereum/mainnet/cusdo-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/cusdo.webp" + }, + { + "assetName": "DAI", + "baseAsset": "DAI", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/dai-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/dai.webp" + }, + { + "assetName": "Ethena Staked USDe", + "baseAsset": "SUSDE", + "quoteAsset": "USDE", + "network": "mantle", + "url": "https://data.chain.link/feeds/mantle/mantle/susde-usde-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/susde.webp" + }, + { + "assetName": "FRAX", + "baseAsset": "FRAX", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/frax-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/frax.webp" + }, + { + "assetName": "GHO", + "baseAsset": "GHO", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/gho-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/gho.webp" + }, + { + "assetName": "Kelp DAO Restaked ETH", + "baseAsset": "RSETH", + "quoteAsset": "ETH (SVR)", + "network": "base", + "url": "https://data.chain.link/feeds/base/base/rseth-eth-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/rseth.webp" + }, + { + "assetName": "Liquity USD", + "baseAsset": "LUSD", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/lusd-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/lusd.webp" + }, + { + "assetName": "syrupUSDC-USDC Exchange Rate", + "baseAsset": "syrupUSDC", + "quoteAsset": "USDC", + "network": "mantle", + "url": "https://data.chain.link/feeds/mantle/mantle/syrupusdc-usdc-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/syrupusdc.webp" + }, + { + "assetName": "syrupUSDT-USDT Exchange Rate", + "baseAsset": "syrupUSDT", + "quoteAsset": "USDT", + "network": "mantle", + "url": "https://data.chain.link/feeds/mantle/mantle/syrupusdt-usdt-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/syrupusdt.webp" + }, + { + "assetName": "Tether USD", + "baseAsset": "USDT", + "quoteAsset": "USD (SVR)", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/usdt-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/usdt.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" + }, + { + "category": "integration", + "date": "2025-11-30", + "description": "Newly supported tokens: VOOI", + "relatedTokens": [ + { + "assetName": "VOOI", + "baseAsset": "VOOI", + "url": "https://docs.chain.link/ccip/directory/mainnet/token/VOOI", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/vooi.webp?auto=compress%2Cformat&q=60&w=40&h=40&fit=cover" + } + ], + "title": "Cross-chain token (CCT) standard: Added support for new tokens", + "topic": "CCIP" }, - "xlayer": { - "displayName": "X Layer", - "iconUrl": "https://docs.chain.link/assets/chains/xlayer.svg" + { + "category": "integration", + "date": "2025-11-30", + "description": "New Data Streams available on all [supported networks](https://docs.chain.link/data-streams/crypto-streams):", + "relatedNetworks": [ + "0g", + "apechain", + "aptos", + "arbitrum", + "avalanche", + "base", + "berachain", + "bitlayer", + "blast", + "bnb-chain", + "bob", + "botanix", + "celo", + "ethereum", + "gnosis-chain", + "gravity", + "hashkey", + "hedera", + "hyperliquid", + "injective", + "ink", + "jovay", + "katana", + "lens", + "linea", + "mantle", + "metis", + "monad", + "opbnb", + "optimism", + "polygon", + "plasma", + "ronin", + "scroll", + "shibarium", + "sei", + "soneium", + "sonic", + "solana", + "taiko", + "unichain", + "worldchain", + "zksync" + ], + "relatedTokens": [ + { + "assetName": "Monad", + "baseAsset": "MON", + "quoteAsset": "USD", + "url": "https://data.chain.link/streams/mon-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/mon.webp" + } + ], + "title": "Added support to Data Streams", + "topic": "Data Streams" }, - "zircuit": { - "displayName": "Zircuit", - "iconUrl": "https://docs.chain.link/assets/chains/zircuit.svg" + { + "category": "integration", + "date": "2025-11-30", + "description": "New SmartData Feeds available:", + "relatedNetworks": ["linea"], + "relatedTokens": [ + { + "assetName": "M", + "baseAsset": "MN", + "network": "linea", + "productTypeCode": "NAV", + "url": "https://data.chain.link/feeds/linea/mainnet/m-nav-linea", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/mn.webp" + } + ], + "title": "Added support to SmartData", + "topic": "SmartData" }, - "zksync": { - "displayName": "ZKsync", - "iconUrl": "https://docs.chain.link/assets/chains/zksync.svg" + { + "category": "integration", + "date": "2025-11-30", + "description": "New Data Feeds available:", + "relatedNetworks": ["linea", "ethereum"], + "relatedTokens": [ + { + "assetName": "Avant Staked ETH", + "baseAsset": "savETH", + "quoteAsset": "avETH", + "network": "linea", + "url": "https://data.chain.link/feeds/linea/mainnet/saveth-aveth-exchange-rate", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/saveth.webp" + }, + { + "assetName": "Monad", + "baseAsset": "MON", + "quoteAsset": "USD", + "network": "arbitrum", + "url": "https://data.chain.link/feeds/arbitrum/mainnet/mon-usd", + "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/mon.webp" + } + ], + "title": "Added support to Data Feeds", + "topic": "Data Feeds" }, - "zora": { - "displayName": "Zora", - "iconUrl": "https://docs.chain.link/assets/chains/zora.svg" - } - }, - "data": [ { "category": "integration", "date": "2025-11-25", @@ -582,6 +3873,13 @@ "title": "CRE CLI v1.0.2", "topic": "CRE" }, + { + "category": "release", + "date": "2025-11-17", + "description": "Chainlink Node v2.30.0 is now available. See the [Release Notes](https://github.com/smartcontractkit/chainlink/releases/tag/v2.30.0) for details.", + "title": "Chainlink Node v2.30.0", + "topic": "Nodes" + }, { "category": "integration", "date": "2025-11-16", @@ -1343,14 +4641,6 @@ "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&testnetPage=1&network=hyperevm&search=LHYPE#hyperevm-mainnet", "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/lhype.webp" }, - { - "assetName": "LHYPE / STHYPE Exchange Rate", - "baseAsset": "LHYPE", - "quoteAsset": "STHYPE", - "network": "hyperevm", - "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&testnetPage=1&network=hyperevm&search=LHYPE#hyperevm-mainnet", - "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/lhype.webp" - }, { "assetName": "Magic Internet Money", "baseAsset": "MIM", @@ -1649,14 +4939,6 @@ "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&network=hyperevm&search=KHYPE&testnetPage=1#hyperevm-mainnet", "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/khype.webp" }, - { - "assetName": "Kinetiq Staked HYPE", - "baseAsset": "KHYPE", - "quoteAsset": "USD", - "network": "hyperevm", - "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&network=hyperevm&search=KHYPE&testnetPage=1#hyperevm-mainnet", - "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/khype.webp" - }, { "assetName": "lBTC-BTC Exchange Rate", "baseAsset": "lBTC", @@ -2756,14 +6038,6 @@ "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&testnetPage=1&network=plasma&search=cusdo#plasma-mainnet", "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/cusdo.webp" }, - { - "assetName": "Compounding OpenDollar", - "baseAsset": "CUSDO", - "quoteAsset": "USD", - "network": "plasma", - "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&testnetPage=1&network=plasma&search=cusdo#plasma-mainnet", - "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/cusdo.webp" - }, { "assetName": "dForce USD", "baseAsset": "USDX", @@ -2788,14 +6062,6 @@ "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&testnetPage=1&network=plasma&search=susde#plasma-mainnet", "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/susde.webp" }, - { - "assetName": "Ethena Staked USDe", - "baseAsset": "SUSDE", - "quoteAsset": "USD", - "network": "plasma", - "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&testnetPage=1&network=plasma&search=susde#plasma-mainnet", - "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/susde.webp" - }, { "assetName": "Ethena USDe", "baseAsset": "USDE", @@ -2972,14 +6238,6 @@ "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&testnetPage=1&network=plasma&search=weeth#plasma-mainnet", "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/weeth.webp" }, - { - "assetName": "Wrapped eETH", - "baseAsset": "weETH", - "quoteAsset": "eETH", - "network": "plasma", - "url": "https://docs.chain.link/data-feeds/price-feeds/addresses?page=1&testnetPage=1&network=plasma&search=weeth#plasma-mainnet", - "iconUrl": "https://d2f70xi62kby8n.cloudfront.net/tokens/weeth.webp" - }, { "assetName": "Wrapped rsETH", "baseAsset": "wrsETH", @@ -5100,7 +8358,7 @@ { "category": "release", "date": "2025-08-18", - "description": "Backed xStock streams are now available on mainnet and testnet.\n\n- Backed xStock streams use the [V10 report schema](https://docs.chain.link/data-streams/reference/report-schema-v10).\n- Verifier proxy addresses and Backed xStock stream IDs are available on the [Stream Addresses](https://docs.chain.link/data-streams/backed-streams) page.", + "description": "Backed xStock streams are now available on mainnet and testnet.\n\n- Backed xStock streams use the [V10 report schema](https://docs.chain.link/data-streams/reference/report-schema-v10).\n- Verifier proxy addresses and Backed xStock stream IDs are available on the [Stream Addresses](https://docs.chain.link/data-streams/tokenized-asset-streams) page.", "title": "Backed xStock streams", "topic": "Data Streams" }, diff --git a/public/files/json/feeds-tron-mainnet.json b/public/files/json/feeds-tron-mainnet.json deleted file mode 100644 index b0a484320e3..00000000000 --- a/public/files/json/feeds-tron-mainnet.json +++ /dev/null @@ -1,575 +0,0 @@ -[ - { - "compareOffchain": "", - "contractAddress": "TAenee7qFcWpZfxVkASjL52LsWBCUXHaSb", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "ETH / USD", - "pair": ["ETH", "USD"], - "path": "eth-usd", - "proxyAddress": "TBcCSYgSTMQccxgoR7Ct6hTsCm5qdErRyf", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "Ethereum", - "feedCategory": "low", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "baseAsset": "ETH", - "baseAssetClic": "ETH_CR", - "blockchainName": "Tron", - "clicProductName": "ETH/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX" - }, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "TCQsFKRYKjPoxVWw81K2yGuaxRz7VWWDhK", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "1000000000000000000", - "name": "WIN / USD", - "pair": ["WIN", "USD"], - "path": "win-usd", - "proxyAddress": "TGyGnajzAXXxeRdb5Cg18PRmeUWGFazSmP", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "WINkLink", - "feedCategory": "medium", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "baseAsset": "WIN", - "baseAssetClic": "WIN_CR", - "blockchainName": "Tron", - "clicProductName": "WIN/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX" - }, - "decimals": 18 - }, - { - "compareOffchain": "", - "contractAddress": "TG3wSZQKXbKsm44j7AYJ2FhtRbVsooHbn6", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "USDC / USD", - "pair": ["USDC", "USD"], - "path": "usdc-usd", - "proxyAddress": "TA3bQbszj2k6wPSUwo3SjwL4bo6uzMe3h3", - "threshold": 0.3, - "valuePrefix": "", - "assetName": "Circle USD", - "feedCategory": "low", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "assetSubClass": "Stablecoin", - "baseAsset": "USDC", - "baseAssetClic": "USDC_CR", - "blockchainName": "Tron", - "clicProductName": "USDC/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX", - "underlyingAsset": "USD", - "underlyingAssetClic": "USD_FX" - }, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "THNYBB31ZUDmFWsE2sVaffC3tvt4QZuUo8", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "LTC / USD", - "pair": ["LTC", "USD"], - "path": "ltc-usd", - "proxyAddress": "TYGBSY6b3o4SkiifDCZgswm5Nsof55McMu", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "Litecoin", - "feedCategory": "low", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "baseAsset": "LTC", - "baseAssetClic": "LTC_CR", - "blockchainName": "Tron", - "clicProductName": "LTC/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX" - }, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "THSMmCDzCG2jnrACRNa12NcjwGBgU9My1v", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "1000000000000000000", - "name": "NFT / USD", - "pair": ["NFT", "USD"], - "path": "nft-usd", - "proxyAddress": "TLHwakfUnZmz9VLRikKBcQnwRPyBuaUa5d", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "APENFT", - "feedCategory": "medium", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "baseAsset": "NFT", - "baseAssetClic": "NFT_CR", - "blockchainName": "Tron", - "clicProductName": "NFT/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX" - }, - "decimals": 18 - }, - { - "compareOffchain": "", - "contractAddress": "TLYn3X4GDWLVcSeuGakqpPyUp4H1A3njqD", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "TUSD / USD", - "pair": ["TUSD", "USD"], - "path": "tusd-usd", - "proxyAddress": "TW5KxDwPriXcNmCa69cme2zB1e7ZmfjVPs", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "True USD", - "feedCategory": "medium", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "assetSubClass": "Stablecoin", - "baseAsset": "TUSD", - "baseAssetClic": "TUSD_CR", - "blockchainName": "Tron", - "clicProductName": "TUSD/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX", - "underlyingAsset": "USD", - "underlyingAssetClic": "USD_FX" - }, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "TMxQpun1Fb6x72H8cppqwov375CiVnfDuv", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "USDD / USD", - "pair": ["USDD", "USD"], - "path": "usdd-usd", - "proxyAddress": "TVPZBTUnUkg6TuVhnWfWqydhwFoq4P4ik9", - "threshold": 0.3, - "valuePrefix": "", - "assetName": "USDD", - "feedCategory": "medium", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "assetSubClass": "Stablecoin", - "baseAsset": "USDD", - "baseAssetClic": "USDD_CR", - "blockchainName": "Tron", - "clicProductName": "USDD/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX", - "underlyingAsset": "USD", - "underlyingAssetClic": "USD_FX" - }, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "TSpSw3FzvgdSKMzBJUvGuT1PcfLE9vrNzx", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "USDT / USD", - "pair": ["USDT", "USD"], - "path": "usdt-usd", - "proxyAddress": "TH58iiFuwwvsoLxpETQmGDe2kpaNxo3NnW", - "threshold": 0.3, - "valuePrefix": "", - "assetName": "Tether USD", - "feedCategory": "low", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "assetSubClass": "Stablecoin", - "baseAsset": "USDT", - "baseAssetClic": "USDT_CR", - "blockchainName": "Tron", - "clicProductName": "USDT/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX", - "underlyingAsset": "USD", - "underlyingAssetClic": "USD_FX" - }, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "TT6s4JRXrfpUKjYAWQtVK8Li6CWP1yBPQn", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "BTC / USD", - "pair": ["BTC", "USD"], - "path": "btc-usd", - "proxyAddress": "TJTMLr4Szkn5sbywPamgUzrFLCR8vbJ34Y", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "Bitcoin", - "feedCategory": "low", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "baseAsset": "BTC", - "baseAssetClic": "BTC_CR", - "blockchainName": "Tron", - "clicProductName": "BTC/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX" - }, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "TUJY1HT2BMwcGXA6hAaJtCzoUkKWDyFv8K", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "1000000000000000000", - "name": "STRX-TRX Exchange Rate", - "pair": ["STRX", "TRX"], - "path": "strx-trx-exchcange-rate", - "proxyAddress": "TN5JU5qfvudMKbzKBAkeXoGJkBnkw9pdze", - "threshold": 1e-7, - "valuePrefix": "", - "assetName": "Staked TRX", - "feedCategory": "custom", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "assetSubClass": "Pegged Asset", - "baseAsset": "STRX", - "baseAssetClic": "STRX_CR", - "blockchainName": "Tron", - "clicProductName": "STRX/TRX-ExRate-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Exchange Rate", - "productType": "Price", - "productTypeCode": "ExRate", - "quoteAsset": "TRX", - "quoteAssetClic": "TRX_CR", - "underlyingAsset": "TRX", - "underlyingAssetClic": "TRX_CR" - }, - "decimals": 18 - }, - { - "compareOffchain": "", - "contractAddress": "TUdt9Vidjn4roXbJTfUboukruVFyZKi8qj", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "1000000000000000000", - "name": "SUN / USD", - "pair": ["SUN", "USD"], - "path": "sun-usd", - "proxyAddress": "TUWZWzzgyxZ6uu2mStZTtQ8es88cKmyP1Q", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "Sun", - "feedCategory": "medium", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "baseAsset": "SUN", - "baseAssetClic": "SUN_CR", - "blockchainName": "Tron", - "clicProductName": "SUN/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX" - }, - "decimals": 18 - }, - { - "compareOffchain": "", - "contractAddress": "TZGRhuDgwYE3Gd9gt8XkiNxqm4jLtyMZMz", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "1000000000000000000", - "name": "BTT / USD", - "pair": ["BTT", "USD"], - "path": "btt-usd", - "proxyAddress": "TT1rx6zpqmFg3urAGtsnJ21prLUWCUqAkM", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "BitTorrent", - "feedCategory": "medium", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "baseAsset": "BTT", - "baseAssetClic": "BTT_CR", - "blockchainName": "Tron", - "clicProductName": "BTT/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX" - }, - "decimals": 18 - }, - { - "compareOffchain": "", - "contractAddress": "TViQb8UDtSz1s88EUpyngU8jiTNDpiC1Ge", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "TRX / USD", - "pair": ["TRX", "USD"], - "path": "trx-usd", - "proxyAddress": "TC6o8AakUg4Xz9nHY9qXpJNsgF7CQkwBqF", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "Tron", - "feedCategory": "low", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "baseAsset": "TRX", - "baseAssetClic": "TRX_CR", - "blockchainName": "Tron", - "clicProductName": "TRX/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX" - }, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "TWkb1JyPqiSvQZxY1zEx72SkadbSM8Kf2N", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "1000000000000000000", - "name": "JST / USD", - "pair": ["JST", "USD"], - "path": "jst-usd", - "proxyAddress": "TXUVn16dsALw5zLvVDF5r9xzE2Xy6DLumN", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "JUST", - "feedCategory": "medium", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "baseAsset": "JST", - "baseAssetClic": "JST_CR", - "blockchainName": "Tron", - "clicProductName": "JST/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX" - }, - "decimals": 18 - }, - { - "compareOffchain": "", - "contractAddress": "TLixA99kEdH9Fx52iL5nJJobUMQSpU22Sv", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "USD1 / USD", - "pair": ["USD1", "USD"], - "path": "usd1-usd", - "proxyAddress": "TKWUPnc9SLijWKxDAN7CdMmiJr1bXvHUHd", - "threshold": 0.3, - "valuePrefix": "", - "assetName": "World Liberty Financial USD", - "feedCategory": "medium", - "feedType": "Crypto", - "docs": { - "assetClass": "Crypto", - "assetSubClass": "Stablecoin", - "baseAsset": "USD1", - "baseAssetClic": "USD1_CR", - "blockchainName": "Tron", - "clicProductName": "USD1/USD-RefPrice-DF-Tron-001", - "deliveryChannelCode": "DF", - "marketHours": "Crypto", - "productSubType": "Reference", - "productType": "Price", - "productTypeCode": "RefPrice", - "quoteAsset": "USD", - "quoteAssetClic": "USD_FX", - "underlyingAsset": "USD", - "underlyingAssetClic": "USD_FX" - }, - "decimals": 8 - } -] diff --git a/public/files/json/feeds-tron-testnet.json b/public/files/json/feeds-tron-testnet.json deleted file mode 100644 index b4e290db621..00000000000 --- a/public/files/json/feeds-tron-testnet.json +++ /dev/null @@ -1,362 +0,0 @@ -[ - { - "compareOffchain": "", - "contractAddress": "0x02AD1968e785c9A3eB12Df5dfb7deCF8AC97EDfe", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "LINK / USD", - "pair": ["LINK", "USD"], - "path": "link-usd", - "proxyAddress": "TSvmq6pfVaRqnnn3jszndEFcNn6U5SoCgK", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "0x03bE26cFc8eB863d8Ab3ae379d0621539f778887", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "TRX / USD", - "pair": ["TRX", "USD"], - "path": "trx-usd", - "proxyAddress": "TWZ37cpV6LJAoTNuiqEWrEUxQLvvKGmbrm", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "0x04fe49d999DA4A5E97C036b9BBB772d49a01A183", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "ETH / USD", - "pair": ["ETH", "USD"], - "path": "eth-usd", - "proxyAddress": "TYaLVmqGzz33ghKEMTdC64dUnde5LZc6Y3", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "0x0d3B963Ac3c2dd03E6Cd449613cF6ce29A9400c4", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "BTC / USD", - "pair": ["BTC", "USD"], - "path": "btc-usd", - "proxyAddress": "TD3hrfAtPcnkLSsRh4UTgjXBo6KyRfT1AR", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "0x37E89D89BD135674dA31338d281A1A4B58EB63f8", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "1000000000000000000", - "name": "JST / USD", - "pair": ["JST", "USD"], - "path": "jst-usd", - "proxyAddress": "TA4xrS8rQWD7xTWP2mEw3YMCmcVy26GrJY", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 18 - }, - { - "compareOffchain": "", - "contractAddress": "0x3e94F8808a33adE4A7E7CF8517a51f7136920602", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "TUSD / USD", - "pair": ["TUSD", "USD"], - "path": "tusd-usd", - "proxyAddress": "TKvumQmYhc2rbCbbZWc1uChfFQVEf4AmkM", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "0x4A44436e2B2128De539eA4Bf89424A2BEf04b185", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "LTC / USD", - "pair": ["LTC", "USD"], - "path": "ltc-usd", - "proxyAddress": "TCcgXMidBKZPjnzNgoJBtRiNaZUEU6d5Ra", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "0x50831Da70550400949EeB5a306370128C2867309", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "USDD / USD", - "pair": ["USDD", "USD"], - "path": "usdd-usd", - "proxyAddress": "TNuJxt19dkrtfVVUfzWUQurkoVT9dd4nJJ", - "threshold": 0.3, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "0x5ECe9f4236c944e1c00C75955c69ea4B36b992bC", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "1000000000000000000", - "name": "BTT / USD", - "pair": ["BTT", "USD"], - "path": "btt-usd", - "proxyAddress": "TA2842b4owtNzSQzPaRekrSbmaJ4oKccj6", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 18 - }, - { - "compareOffchain": "", - "contractAddress": "0x632a5294e5af96Fad6533D747dbbe35bb64A6714", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "1000000000000000000", - "name": "NFT / USD", - "pair": ["NFT", "USD"], - "path": "nft-usd", - "proxyAddress": "TDwKG5jJ7Nb2xKfBRD2WMBa3iXSxTWrkQx", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 18 - }, - { - "compareOffchain": "", - "contractAddress": "0x7507687303001682C79a7074d044d2153e8edf8f", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "USDT / USD", - "pair": ["USDT", "USD"], - "path": "usdt-usd", - "proxyAddress": "TP2G864A3FEkggdUs7aa4nehxDhs12MQWS", - "threshold": 0.3, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "0xCC1116e0ebef13E7dfc6eF18A2C741d4eC193bfF", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "1000000000000000000", - "name": "WIN / USD", - "pair": ["WIN", "USD"], - "path": "win-usd", - "proxyAddress": "TN7gMhdyFvW1yowNfXGDsdVTcZdvtds5Hs", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 18 - }, - { - "compareOffchain": "", - "contractAddress": "0xdB30Ab08DC6c1C2a261404686a732A298A01cf28", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "USDC / USD", - "pair": ["USDC", "USD"], - "path": "usdc-usd", - "proxyAddress": "TXeicAAdfdaGoVmD8GtVfvqTSbuWYhXe8v", - "threshold": 0.3, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 8 - }, - { - "compareOffchain": "", - "contractAddress": "0xee6C42a163140a25C8Fa0E50dED43675EE6FBC05", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "1000000000000000000", - "name": "SUN / USD", - "pair": ["SUN", "USD"], - "path": "sun-usd", - "proxyAddress": "TR9JZUZdyJiqvFrVM1WpXN9ummbGMXoVzV", - "threshold": 0.5, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 18 - }, - { - "compareOffchain": "", - "contractAddress": "TQWKSBtbcuiWsXaw9cfWZ7zEcWZZHaLe8V", - "contractType": "", - "contractVersion": 6, - "decimalPlaces": null, - "ens": null, - "formatDecimalPlaces": null, - "healthPrice": "", - "heartbeat": 86400, - "history": true, - "multiply": "100000000", - "name": "USD1 / USD", - "pair": ["USD1", "USD"], - "path": "usd1-usd", - "proxyAddress": "TD5ZGYdWgqR4PrJ3pozktD96uxTkLVPyft", - "threshold": 0.3, - "valuePrefix": "", - "assetName": "", - "feedCategory": "", - "feedType": "", - "docs": {}, - "decimals": 8 - } -] diff --git a/public/images/ccip/ccip-hl-v1.7.jpg b/public/images/ccip/ccip-hl-v1.7.jpg new file mode 100644 index 00000000000..b7c06d09c68 Binary files /dev/null and b/public/images/ccip/ccip-hl-v1.7.jpg differ diff --git a/public/images/ccip/tutorials/ccip-getting-started-evm-1.png b/public/images/ccip/tutorials/ccip-getting-started-evm-1.png new file mode 100644 index 00000000000..f3c0edf6016 Binary files /dev/null and b/public/images/ccip/tutorials/ccip-getting-started-evm-1.png differ diff --git a/public/images/ccip/tutorials/ccip-getting-started-evm-2.png b/public/images/ccip/tutorials/ccip-getting-started-evm-2.png new file mode 100644 index 00000000000..6f561bbcd16 Binary files /dev/null and b/public/images/ccip/tutorials/ccip-getting-started-evm-2.png differ diff --git a/public/images/data-feed/tokenized-equity/ondo-tokenized-equity-pause-behavior.png b/public/images/data-feed/tokenized-equity/ondo-tokenized-equity-pause-behavior.png new file mode 100644 index 00000000000..f30bab19be5 Binary files /dev/null and b/public/images/data-feed/tokenized-equity/ondo-tokenized-equity-pause-behavior.png differ diff --git a/public/images/data-feed/tokenized-equity/tokenized-equity-diagram.png b/public/images/data-feed/tokenized-equity/tokenized-equity-diagram.png new file mode 100644 index 00000000000..38342db23ef Binary files /dev/null and b/public/images/data-feed/tokenized-equity/tokenized-equity-diagram.png differ diff --git a/public/images/data-streams/24-5-availability.png b/public/images/data-streams/24-5-availability.png new file mode 100644 index 00000000000..01298dcbe27 Binary files /dev/null and b/public/images/data-streams/24-5-availability.png differ diff --git a/public/images/data-streams/24-5-price-jumps-example.png b/public/images/data-streams/24-5-price-jumps-example.png new file mode 100644 index 00000000000..d38453ea31e Binary files /dev/null and b/public/images/data-streams/24-5-price-jumps-example.png differ diff --git a/public/images/data-streams/calculated-streams-diagram.png b/public/images/data-streams/calculated-streams-diagram.png new file mode 100644 index 00000000000..64b02149cde Binary files /dev/null and b/public/images/data-streams/calculated-streams-diagram.png differ diff --git a/public/images/data-streams/canton-consumer-integration-flow.png b/public/images/data-streams/canton-consumer-integration-flow.png new file mode 100644 index 00000000000..9318461f44d Binary files /dev/null and b/public/images/data-streams/canton-consumer-integration-flow.png differ diff --git a/public/images/language-icons/go.svg b/public/images/language-icons/go.svg new file mode 100644 index 00000000000..9bb5f643118 --- /dev/null +++ b/public/images/language-icons/go.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/public/images/language-icons/json.svg b/public/images/language-icons/json.svg new file mode 100644 index 00000000000..b5c5ada53de --- /dev/null +++ b/public/images/language-icons/json.svg @@ -0,0 +1,17 @@ + + + + + + diff --git a/public/images/language-icons/python.svg b/public/images/language-icons/python.svg new file mode 100644 index 00000000000..5bd72165186 --- /dev/null +++ b/public/images/language-icons/python.svg @@ -0,0 +1,7 @@ + + + + + + python [#ffffff] Created with Sketch. + \ No newline at end of file diff --git a/public/images/language-icons/rust.svg b/public/images/language-icons/rust.svg new file mode 100644 index 00000000000..630595afb26 --- /dev/null +++ b/public/images/language-icons/rust.svg @@ -0,0 +1,7 @@ + + + + + + rust + \ No newline at end of file diff --git a/public/images/language-icons/solidity.svg b/public/images/language-icons/solidity.svg new file mode 100644 index 00000000000..86b9f4995b2 --- /dev/null +++ b/public/images/language-icons/solidity.svg @@ -0,0 +1,27 @@ + + + + +Vector 1 +Created with Sketch. + + + + + + + + + + + + + diff --git a/public/images/language-icons/terminal.svg b/public/images/language-icons/terminal.svg new file mode 100644 index 00000000000..4920153ef58 --- /dev/null +++ b/public/images/language-icons/terminal.svg @@ -0,0 +1,13 @@ + + + diff --git a/public/images/language-icons/toml.svg b/public/images/language-icons/toml.svg new file mode 100644 index 00000000000..de69f153f63 --- /dev/null +++ b/public/images/language-icons/toml.svg @@ -0,0 +1,12 @@ + + + + + + + file_type_toml + + + + + \ No newline at end of file diff --git a/public/images/language-icons/typescript.svg b/public/images/language-icons/typescript.svg new file mode 100644 index 00000000000..025b352d841 --- /dev/null +++ b/public/images/language-icons/typescript.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/public/llms.txt b/public/llms.txt index b9feca983bf..4998fcc16b5 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -170,4 +170,4 @@ This document offers simple, clean, and comprehensive resources for developers t ## Tools - [Chainlink Local Development Environment](https://docs.chain.link/chainlink-local): Set up a local Chainlink node environment. - [Chainlink Functions Toolkit (NPM)](https://www.npmjs.com/package/@chainlink/functions-toolkit): NPM package for working with Chainlink Functions. -- [Chainlink CCIP JavaScript SDK (GitHub)](https://github.com/smartcontractkit/ccip-javascript-sdk): SDK for building applications with CCIP. +- [CCIP Tools (GitHub)](https://github.com/smartcontractkit/ccip-tools-ts): TypeScript SDK and CLI for interacting with CCIP. diff --git a/public/robots.txt b/public/robots.txt index 36804f6fca7..90ebfd40083 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,4 +1,5 @@ User-agent: * Allow: / Disallow: -Sitemap: https://docs.chain.link/sitemap-index.xml \ No newline at end of file +Sitemap: https://docs.chain.link/sitemap-index.xml +Sitemap: https://docs.chain.link/ccip/tools/sitemap.xml \ No newline at end of file diff --git a/public/samples/CCIP/Sender.sol b/public/samples/CCIP/Sender.sol index 0623795b109..595de1de296 100644 --- a/public/samples/CCIP/Sender.sol +++ b/public/samples/CCIP/Sender.sol @@ -4,8 +4,8 @@ pragma solidity 0.8.24; import {IRouterClient} from "@chainlink/contracts-ccip/contracts/interfaces/IRouterClient.sol"; import {Client} from "@chainlink/contracts-ccip/contracts/libraries/Client.sol"; -import {OwnerIsCreator} from "@chainlink/contracts@1.4.0/src/v0.8/shared/access/OwnerIsCreator.sol"; -import {LinkTokenInterface} from "@chainlink/contracts@1.4.0/src/v0.8/shared/interfaces/LinkTokenInterface.sol"; +import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol"; +import {LinkTokenInterface} from "@chainlink/contracts/src/v0.8/shared/interfaces/LinkTokenInterface.sol"; /** * THIS IS AN EXAMPLE CONTRACT THAT USES HARDCODED VALUES FOR CLARITY. diff --git a/public/samples/CRE/BasicConsumer.sol b/public/samples/CRE/BasicConsumer.sol new file mode 100644 index 00000000000..f91431b8646 --- /dev/null +++ b/public/samples/CRE/BasicConsumer.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; +import {ReceiverTemplate} from "./ReceiverTemplate.sol"; + +contract MyConsumer is ReceiverTemplate { + uint256 public s_storedValue; + event ValueUpdated(uint256 newValue); + + // Constructor requires forwarder address + constructor( + address _forwarderAddress + ) ReceiverTemplate(_forwarderAddress) {} + + // Implement your business logic here + function _processReport( + bytes calldata report + ) internal override { + uint256 newValue = abi.decode(report, (uint256)); + s_storedValue = newValue; + emit ValueUpdated(newValue); + } +} diff --git a/public/samples/CRE/CalculatorConsumer.sol b/public/samples/CRE/CalculatorConsumer.sol new file mode 100644 index 00000000000..547296b37e0 --- /dev/null +++ b/public/samples/CRE/CalculatorConsumer.sol @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import {ReceiverTemplate} from "./ReceiverTemplate.sol"; + +/** + * @title CalculatorConsumer (Testing Version) + * @notice This contract receives reports from a CRE workflow and stores the results of a calculation onchain. + * @dev Inherits from ReceiverTemplate which provides security checks. The forwarder address must be + * configured at deployment. Additional security checks (workflowId, workflowName, author) can be enabled via setter + * functions. + */ +contract CalculatorConsumer is ReceiverTemplate { + // Struct to hold the data sent in a report from the workflow + struct CalculatorResult { + uint256 offchainValue; + int256 onchainValue; + uint256 finalResult; + } + + // --- State Variables --- + CalculatorResult public latestResult; + uint256 public resultCount; + mapping(uint256 => CalculatorResult) public results; + + // --- Events --- + event ResultUpdated(uint256 indexed resultId, uint256 finalResult); + + /** + * @notice Constructor requires the forwarder address for security + * @param _forwarderAddress The address of the Chainlink Forwarder contract (for testing: MockForwarder) + * @dev The forwarder address enables the first layer of security - only the forwarder can call onReport. + * Additional security checks can be configured after deployment using setter functions. + */ + constructor( + address _forwarderAddress + ) ReceiverTemplate(_forwarderAddress) {} + + /** + * @notice Implements the core business logic for processing reports. + * @dev This is called automatically by ReceiverTemplate's onReport function after security checks. + */ + function _processReport( + bytes calldata report + ) internal override { + // Decode the report bytes into our CalculatorResult struct + CalculatorResult memory calculatorResult = abi.decode(report, (CalculatorResult)); + + // --- Core Logic --- + // Update contract state with the new result + resultCount++; + results[resultCount] = calculatorResult; + latestResult = calculatorResult; + + emit ResultUpdated(resultCount, calculatorResult.finalResult); + } + + // This function is a "dry-run" utility. It allows an offchain system to check + // if a prospective result is an outlier before submitting it for a real onchain update. + // It is also used to guide the binding generator to create a method that accepts the CalculatorResult struct. + function isResultAnomalous( + CalculatorResult memory _prospectiveResult + ) public view returns (bool) { + // A result is not considered anomalous if it's the first one. + if (resultCount == 0) { + return false; + } + + // Business logic: Define an anomaly as a new result that is more than double the previous result. + // This is just one example of a validation rule you could implement. + return _prospectiveResult.finalResult > (latestResult.finalResult * 2); + } +} diff --git a/public/samples/CRE/IERC165.sol b/public/samples/CRE/IERC165.sol new file mode 100644 index 00000000000..5d28886a8b7 --- /dev/null +++ b/public/samples/CRE/IERC165.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol) + +pragma solidity >=0.4.16; + +/** + * @dev Interface of the ERC-165 standard, as defined in the + * https://eips.ethereum.org/EIPS/eip-165[ERC]. + * + * Implementers can declare support of contract interfaces, which can then be + * queried by others ({ERC165Checker}). + * + * For an implementation, see {ERC165}. + */ +interface IERC165 { + /** + * @dev Returns true if this contract implements the interface defined by + * `interfaceId`. See the corresponding + * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] + * to learn more about how these ids are created. + * + * This function call must use less than 30 000 gas. + */ + function supportsInterface( + bytes4 interfaceId + ) external view returns (bool); +} diff --git a/public/samples/CRE/IReceiver.sol b/public/samples/CRE/IReceiver.sol new file mode 100644 index 00000000000..e7f047b172b --- /dev/null +++ b/public/samples/CRE/IReceiver.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IERC165} from "./IERC165.sol"; + +/// @title IReceiver - receives keystone reports +/// @notice Implementations must support the IReceiver interface through ERC165. +interface IReceiver is IERC165 { + /// @notice Handles incoming keystone reports. + /// @dev If this function call reverts, it can be retried with a higher gas + /// limit. The receiver is responsible for discarding stale reports. + /// @param metadata Report's metadata. + /// @param report Workflow report. + function onReport( + bytes calldata metadata, + bytes calldata report + ) external; +} diff --git a/public/samples/CRE/ReceiverTemplate.sol b/public/samples/CRE/ReceiverTemplate.sol new file mode 100644 index 00000000000..488324dd652 --- /dev/null +++ b/public/samples/CRE/ReceiverTemplate.sol @@ -0,0 +1,242 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IERC165} from "./IERC165.sol"; +import {IReceiver} from "./IReceiver.sol"; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; + +/// @title ReceiverTemplate - Abstract receiver with optional permission controls +/// @notice Provides flexible, updatable security checks for receiving workflow reports +/// @dev The forwarder address is required at construction time for security. +/// Additional permission fields can be configured using setter functions. +abstract contract ReceiverTemplate is IReceiver, Ownable { + // Required permission field at deployment, configurable after + address private s_forwarderAddress; // If set, only this address can call onReport + + // Optional permission fields (all default to zero = disabled) + address private s_expectedAuthor; // If set, only reports from this workflow owner are accepted + bytes10 private s_expectedWorkflowName; // Only validated when s_expectedAuthor is also set + bytes32 private s_expectedWorkflowId; // If set, only reports from this specific workflow ID are accepted + + // Hex character lookup table for bytes-to-hex conversion + bytes private constant HEX_CHARS = "0123456789abcdef"; + + // Custom errors + error InvalidForwarderAddress(); + error InvalidSender(address sender, address expected); + error InvalidAuthor(address received, address expected); + error InvalidWorkflowName(bytes10 received, bytes10 expected); + error InvalidWorkflowId(bytes32 received, bytes32 expected); + error WorkflowNameRequiresAuthorValidation(); + + // Events + event ForwarderAddressUpdated(address indexed previousForwarder, address indexed newForwarder); + event ExpectedAuthorUpdated(address indexed previousAuthor, address indexed newAuthor); + event ExpectedWorkflowNameUpdated(bytes10 indexed previousName, bytes10 indexed newName); + event ExpectedWorkflowIdUpdated(bytes32 indexed previousId, bytes32 indexed newId); + event SecurityWarning(string message); + + /// @notice Constructor sets msg.sender as the owner and configures the forwarder address + /// @param _forwarderAddress The address of the Chainlink Forwarder contract (cannot be address(0)) + /// @dev The forwarder address is required for security - it ensures only verified reports are processed + constructor( + address _forwarderAddress + ) Ownable(msg.sender) { + if (_forwarderAddress == address(0)) { + revert InvalidForwarderAddress(); + } + s_forwarderAddress = _forwarderAddress; + emit ForwarderAddressUpdated(address(0), _forwarderAddress); + } + + /// @notice Returns the configured forwarder address + /// @return The forwarder address (address(0) if disabled) + function getForwarderAddress() external view returns (address) { + return s_forwarderAddress; + } + + /// @notice Returns the expected workflow author address + /// @return The expected author address (address(0) if not set) + function getExpectedAuthor() external view returns (address) { + return s_expectedAuthor; + } + + /// @notice Returns the expected workflow name + /// @return The expected workflow name (bytes10(0) if not set) + function getExpectedWorkflowName() external view returns (bytes10) { + return s_expectedWorkflowName; + } + + /// @notice Returns the expected workflow ID + /// @return The expected workflow ID (bytes32(0) if not set) + function getExpectedWorkflowId() external view returns (bytes32) { + return s_expectedWorkflowId; + } + + /// @inheritdoc IReceiver + /// @dev Performs optional validation checks based on which permission fields are set + function onReport( + bytes calldata metadata, + bytes calldata report + ) external override { + // Security Check 1: Verify caller is the trusted Chainlink Forwarder (if configured) + if (s_forwarderAddress != address(0) && msg.sender != s_forwarderAddress) { + revert InvalidSender(msg.sender, s_forwarderAddress); + } + + // Security Checks 2-4: Verify workflow identity - ID, owner, and/or name (if any are configured) + if (s_expectedWorkflowId != bytes32(0) || s_expectedAuthor != address(0) || s_expectedWorkflowName != bytes10(0)) { + (bytes32 workflowId, bytes10 workflowName, address workflowOwner) = _decodeMetadata(metadata); + + if (s_expectedWorkflowId != bytes32(0) && workflowId != s_expectedWorkflowId) { + revert InvalidWorkflowId(workflowId, s_expectedWorkflowId); + } + if (s_expectedAuthor != address(0) && workflowOwner != s_expectedAuthor) { + revert InvalidAuthor(workflowOwner, s_expectedAuthor); + } + + // ================================================================ + // WORKFLOW NAME VALIDATION - REQUIRES AUTHOR VALIDATION + // ================================================================ + // Do not rely on workflow name validation alone. Workflow names are unique + // per owner, but not across owners. + // Furthermore, workflow names use 40-bit truncation (bytes10), making collisions possible. + // Therefore, workflow name validation REQUIRES author (workflow owner) validation. + // The code enforces this dependency at runtime. + // ================================================================ + if (s_expectedWorkflowName != bytes10(0)) { + // Author must be configured if workflow name is used + if (s_expectedAuthor == address(0)) { + revert WorkflowNameRequiresAuthorValidation(); + } + // Validate workflow name matches (author already validated above) + if (workflowName != s_expectedWorkflowName) { + revert InvalidWorkflowName(workflowName, s_expectedWorkflowName); + } + } + } + + _processReport(report); + } + + /// @notice Updates the forwarder address that is allowed to call onReport + /// @param _forwarder The new forwarder address + /// @dev WARNING: Setting to address(0) disables forwarder validation. + /// This makes your contract INSECURE - anyone can call onReport() with arbitrary data. + /// Only use address(0) if you fully understand the security implications. + function setForwarderAddress( + address _forwarder + ) external onlyOwner { + address previousForwarder = s_forwarderAddress; + + // Emit warning if disabling forwarder check + if (_forwarder == address(0)) { + emit SecurityWarning("Forwarder address set to zero - contract is now INSECURE"); + } + + s_forwarderAddress = _forwarder; + emit ForwarderAddressUpdated(previousForwarder, _forwarder); + } + + /// @notice Updates the expected workflow owner address + /// @param _author The new expected author address (use address(0) to disable this check) + function setExpectedAuthor( + address _author + ) external onlyOwner { + address previousAuthor = s_expectedAuthor; + s_expectedAuthor = _author; + emit ExpectedAuthorUpdated(previousAuthor, _author); + } + + /// @notice Updates the expected workflow name from a plaintext string + /// @param _name The workflow name as a string (use empty string "" to disable this check) + /// @dev IMPORTANT: Workflow name validation REQUIRES author validation to be enabled. + /// The workflow name uses only 40-bit truncation, making collision attacks feasible + /// when used alone. However, since workflow names are unique per owner, validating + /// both the name AND the author address provides adequate security. + /// You must call setExpectedAuthor() before or after calling this function. + /// The name is hashed using SHA256 and truncated to bytes10. + function setExpectedWorkflowName( + string calldata _name + ) external onlyOwner { + bytes10 previousName = s_expectedWorkflowName; + + if (bytes(_name).length == 0) { + s_expectedWorkflowName = bytes10(0); + emit ExpectedWorkflowNameUpdated(previousName, bytes10(0)); + return; + } + + // Convert workflow name to bytes10: + // SHA256 hash → hex encode → take first 10 chars → hex encode those chars + bytes32 hash = sha256(bytes(_name)); + bytes memory hexString = _bytesToHexString(abi.encodePacked(hash)); + bytes memory first10 = new bytes(10); + for (uint256 i = 0; i < 10; i++) { + first10[i] = hexString[i]; + } + s_expectedWorkflowName = bytes10(first10); + emit ExpectedWorkflowNameUpdated(previousName, s_expectedWorkflowName); + } + + /// @notice Updates the expected workflow ID + /// @param _id The new expected workflow ID (use bytes32(0) to disable this check) + function setExpectedWorkflowId( + bytes32 _id + ) external onlyOwner { + bytes32 previousId = s_expectedWorkflowId; + s_expectedWorkflowId = _id; + emit ExpectedWorkflowIdUpdated(previousId, _id); + } + + /// @notice Helper function to convert bytes to hex string + /// @param data The bytes to convert + /// @return The hex string representation + function _bytesToHexString( + bytes memory data + ) private pure returns (bytes memory) { + bytes memory hexString = new bytes(data.length * 2); + + for (uint256 i = 0; i < data.length; i++) { + hexString[i * 2] = HEX_CHARS[uint8(data[i] >> 4)]; + hexString[i * 2 + 1] = HEX_CHARS[uint8(data[i] & 0x0f)]; + } + + return hexString; + } + + /// @notice Extracts all metadata fields from the onReport metadata parameter + /// @param metadata The metadata bytes encoded using abi.encodePacked(workflowId, workflowName, workflowOwner) + /// @return workflowId The unique identifier of the workflow (bytes32) + /// @return workflowName The name of the workflow (bytes10) + /// @return workflowOwner The owner address of the workflow + function _decodeMetadata( + bytes memory metadata + ) internal pure returns (bytes32 workflowId, bytes10 workflowName, address workflowOwner) { + // Metadata structure (encoded using abi.encodePacked by the Forwarder): + // - First 32 bytes: length of the byte array (standard for dynamic bytes) + // - Offset 32, size 32: workflow_id (bytes32) + // - Offset 64, size 10: workflow_name (bytes10) + // - Offset 74, size 20: workflow_owner (address) + assembly { + workflowId := mload(add(metadata, 32)) + workflowName := mload(add(metadata, 64)) + workflowOwner := shr(mul(12, 8), mload(add(metadata, 74))) + } + return (workflowId, workflowName, workflowOwner); + } + + /// @notice Abstract function to process the report data + /// @param report The report calldata containing your workflow's encoded data + /// @dev Implement this function with your contract's business logic + function _processReport( + bytes calldata report + ) internal virtual; + + /// @inheritdoc IERC165 + function supportsInterface( + bytes4 interfaceId + ) public view virtual override returns (bool) { + return interfaceId == type(IReceiver).interfaceId || interfaceId == type(IERC165).interfaceId; + } +} diff --git a/public/samples/CRE/basic-functionality.ts b/public/samples/CRE/basic-functionality.ts new file mode 100644 index 00000000000..5a25e8e51a6 --- /dev/null +++ b/public/samples/CRE/basic-functionality.ts @@ -0,0 +1,18 @@ +import { cre } from "@chainlink/cre-sdk" + +cre.handler( + cron.trigger({ schedule: "0 */5 * * *" }), // Every 5 minutes + (runtime) => { + // Fetch data from API + const price = httpClient.get(url).result() + + // Read from EVM blockchain + const threshold = evmClient.read(contract).result() + + // Make any computation + const shouldUpdate = price > threshold + + // Write result onchain + return evmClient.write(contract, price).result() + } +) diff --git a/public/samples/DataFeeds/SVR/bundle-bid.json b/public/samples/DataFeeds/SVR/bundle-bid.json new file mode 100644 index 00000000000..f59f8e7344d --- /dev/null +++ b/public/samples/DataFeeds/SVR/bundle-bid.json @@ -0,0 +1,22 @@ +{ + "jsonrpc": "2.0", + "method": "mev_sendBundle", + "params": [ + { + "version": "v0.1", + "inclusion": { + "block": "0x01", + "maxBlock": "0x04" + }, + "body": [ + { + "hash": "0x_bundle_event_hash" + }, + { + "tx": "0x0213a...", + "canRevert": false + } + ] + } + ] +} diff --git a/public/samples/DataFeeds/SVR/bundle-transaction-event.json b/public/samples/DataFeeds/SVR/bundle-transaction-event.json new file mode 100644 index 00000000000..e47973374e8 --- /dev/null +++ b/public/samples/DataFeeds/SVR/bundle-transaction-event.json @@ -0,0 +1,15 @@ +{ + "hash": "0x_bundle_event_hash", + "txs": [ + { + "to": "0x45ab36b69e02e59d3c49b863b31f530c991dd554", + "functionSelector": "0x6fadcf72", + "callData": "0x80640b.....................a2354d" + }, + { + "to": "0x45ab36b69e02e59d3c49b863b31f530c991dd554", + "functionSelector": "0x6fadcf72", + "callData": "0x12340b.....................a2354d" + } + ] +} diff --git a/public/samples/DataFeeds/SVR/import-aggregatorV3.sol b/public/samples/DataFeeds/SVR/import-aggregatorV3.sol new file mode 100644 index 00000000000..229601df65f --- /dev/null +++ b/public/samples/DataFeeds/SVR/import-aggregatorV3.sol @@ -0,0 +1,20 @@ +import "@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol"; + +contract SVRConsumer { + AggregatorV3Interface internal svrFeed; + + constructor( + address _svrFeedAddress + ) { + svrFeed = AggregatorV3Interface(_svrFeedAddress); + } + + function getLatestPrice() public view returns (int256) { + (, /* uint80 roundID */ + int256 price, /* uint256 startedAt */ + /* uint256 timeStamp */ + /* uint80 answeredInRound */,, + ) = svrFeed.latestRoundData(); + return price; + } +} diff --git a/public/samples/DataFeeds/SVR/single-transaction-event.json b/public/samples/DataFeeds/SVR/single-transaction-event.json new file mode 100644 index 00000000000..313f36e10a8 --- /dev/null +++ b/public/samples/DataFeeds/SVR/single-transaction-event.json @@ -0,0 +1,10 @@ +{ + "hash": "0x_single_transaction_event_hash", + "txs": [ + { + "to": "0x45ab36b69e02e59d3c49b863b31f530c991dd554", + "functionSelector": "0x6fadcf72", + "callData": "0x80640b.....................a2354d" + } + ] +} diff --git a/public/samples/DataStreams/FetchSingleStream.ts b/public/samples/DataStreams/FetchSingleStream.ts new file mode 100644 index 00000000000..36830885458 --- /dev/null +++ b/public/samples/DataStreams/FetchSingleStream.ts @@ -0,0 +1,55 @@ +import { createClient, decodeReport, LogLevel, getReportVersion, formatReport } from "@chainlink/data-streams-sdk" +import "dotenv/config" + +async function main() { + if (process.argv.length < 3) { + console.error("Please provide a feed ID as an argument") + console.error("Example: npx tsx singleStream.ts 0x000359843a543ee2fe414dc14c7e7920ef10f4372990b79d6361cdc0dd1ba782") + process.exit(1) + } + + const feedId = process.argv[2] + const version = getReportVersion(feedId) + + try { + const config = { + apiKey: process.env.API_KEY || "YOUR_API_KEY", + userSecret: process.env.USER_SECRET || "YOUR_USER_SECRET", + endpoint: "https://api.testnet-dataengine.chain.link", + wsEndpoint: "wss://ws.testnet-dataengine.chain.link", + // Comment to disable SDK logging: + logging: { + logger: console, + logLevel: LogLevel.INFO, + }, + } + + const client = createClient(config) + console.log(`\nFetching latest report for feed ${feedId} (${version})...\n`) + + // Get raw report data + const report = await client.getLatestReport(feedId) + console.log(`Raw Report Blob: ${report.fullReport}`) + + // Decode the report + const decodedData = decodeReport(report.fullReport, report.feedID) + + // Combine decoded data with report metadata + const decodedReport = { + ...decodedData, + feedID: report.feedID, + validFromTimestamp: report.validFromTimestamp, + observationsTimestamp: report.observationsTimestamp, + } + console.log(formatReport(decodedReport, version)) + } catch (error) { + if (error instanceof Error) { + console.error("Error:", error.message) + } else { + console.error("Unknown error:", error) + } + process.exit(1) + } +} + +main() diff --git a/reports/llms-report.json b/reports/llms-report.json deleted file mode 100644 index 23c8ab3522c..00000000000 --- a/reports/llms-report.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "startedAt": "2025-11-25T23:16:10.318Z", - "siteBase": "https://docs.chain.link", - "sections": [ - { - "section": "cre-go", - "pagesProcessed": 83, - "outputPath": "src/content/cre/llms-full-go.txt", - "bytes": 651940, - "prevBytes": 651940, - "deltaBytes": 0 - }, - { - "section": "cre-ts", - "pagesProcessed": 78, - "outputPath": "src/content/cre/llms-full-ts.txt", - "bytes": 607447, - "prevBytes": 607447, - "deltaBytes": 0 - }, - { - "section": "vrf", - "pagesProcessed": 35, - "outputPath": "src/content/vrf/llms-full.txt", - "bytes": 301012, - "prevBytes": 301012, - "deltaBytes": 0 - }, - { - "section": "ccip", - "pagesProcessed": 260, - "outputPath": "src/content/ccip/llms-full.txt", - "bytes": 2849278, - "prevBytes": 2849278, - "deltaBytes": 0 - }, - { - "section": "data-feeds", - "pagesProcessed": 37, - "outputPath": "src/content/data-feeds/llms-full.txt", - "bytes": 302350, - "prevBytes": 302350, - "deltaBytes": 0 - }, - { - "section": "data-streams", - "pagesProcessed": 54, - "outputPath": "src/content/data-streams/llms-full.txt", - "bytes": 477065, - "prevBytes": 477061, - "deltaBytes": 4 - }, - { - "section": "dta-technical-standard", - "pagesProcessed": 7, - "outputPath": "src/content/dta-technical-standard/llms-full.txt", - "bytes": 32397, - "prevBytes": 32397, - "deltaBytes": 0 - }, - { - "section": "datalink", - "pagesProcessed": 20, - "outputPath": "src/content/datalink/llms-full.txt", - "bytes": 136010, - "prevBytes": 136010, - "deltaBytes": 0 - }, - { - "section": "chainlink-functions", - "pagesProcessed": 27, - "outputPath": "src/content/chainlink-functions/llms-full.txt", - "bytes": 299619, - "prevBytes": 299619, - "deltaBytes": 0 - }, - { - "section": "chainlink-automation", - "pagesProcessed": 25, - "outputPath": "src/content/chainlink-automation/llms-full.txt", - "bytes": 196013, - "prevBytes": 196013, - "deltaBytes": 0 - }, - { - "section": "resources", - "pagesProcessed": 12, - "outputPath": "src/content/resources/llms-full.txt", - "bytes": 331970, - "prevBytes": 331970, - "deltaBytes": 0 - }, - { - "section": "architecture-overview", - "pagesProcessed": 4, - "outputPath": "src/content/architecture-overview/llms-full.txt", - "bytes": 13086, - "prevBytes": 13086, - "deltaBytes": 0 - }, - { - "section": "getting-started", - "pagesProcessed": 1, - "outputPath": "src/content/getting-started/llms-full.txt", - "bytes": 10326, - "prevBytes": 10326, - "deltaBytes": 0 - }, - { - "section": "chainlink-nodes", - "pagesProcessed": 37, - "outputPath": "src/content/chainlink-nodes/llms-full.txt", - "bytes": 660645, - "prevBytes": 660645, - "deltaBytes": 0 - }, - { - "section": "chainlink-local", - "pagesProcessed": 55, - "outputPath": "src/content/chainlink-local/llms-full.txt", - "bytes": 297263, - "prevBytes": 297263, - "deltaBytes": 0 - } - ], - "finishedAt": "2025-11-25T23:16:13.816Z" -} diff --git a/scripts/cleanup-vercel-function.mjs b/scripts/cleanup-vercel-function.mjs new file mode 100755 index 00000000000..04eaea1a707 --- /dev/null +++ b/scripts/cleanup-vercel-function.mjs @@ -0,0 +1,50 @@ +#!/usr/bin/env node +/** + * Post-build script to remove unnecessary files from Vercel serverless function + * Reduces function size from 364MB to under 250MB limit + */ + +import { rm } from "fs/promises" +import { existsSync } from "fs" +import { execSync } from "child_process" + +const FUNCTION_DIR = ".vercel/output/functions/_render.func" + +async function cleanup() { + if (!existsSync(FUNCTION_DIR)) { + console.error(`❌ Function directory not found: ${FUNCTION_DIR}`) + process.exit(1) + } + + console.log("🧹 Cleaning up serverless function bundle...") + + const sizeBefore = execSync(`du -sh ${FUNCTION_DIR}`, { encoding: "utf-8" }).trim() + console.log(`📦 Size before: ${sizeBefore}`) + + // Remove large files/directories that are served statically by CDN + // Note: public/samples is kept because the /api/page-markdown endpoint needs to read these files + const itemsToRemove = [ + `${FUNCTION_DIR}/public/images`, + `${FUNCTION_DIR}/public/search-index.json`, + `${FUNCTION_DIR}/public/files`, + `${FUNCTION_DIR}/public/default-og-image.png`, + // `${FUNCTION_DIR}/public/samples`, // Kept for API route access + `${FUNCTION_DIR}/public/changelog.json`, + ] + + for (const item of itemsToRemove) { + if (existsSync(item)) { + await rm(item, { recursive: true, force: true }) + console.log(` ✓ Removed: ${item.replace(FUNCTION_DIR + "/", "")}`) + } + } + + const sizeAfter = execSync(`du -sh ${FUNCTION_DIR}`, { encoding: "utf-8" }).trim() + console.log(`📦 Size after: ${sizeAfter}`) + console.log("✨ Cleanup complete!") +} + +cleanup().catch((error) => { + console.error("❌ Cleanup failed:", error) + process.exit(1) +}) diff --git a/src/__mocks__/rate-limits-mainnet.json b/src/__mocks__/rate-limits-mainnet.json new file mode 100644 index 00000000000..3f90fff496c --- /dev/null +++ b/src/__mocks__/rate-limits-mainnet.json @@ -0,0 +1,55946 @@ +{ + "$PAAL": { + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "1XMM": { + "bsc-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "AISTR": { + "bsc-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 5, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "ANIMA": { + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + } + }, + "APRS": { + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "11910000000000000000000000", + "isEnabled": true, + "rate": "137847213400000000000" + }, + "out": { + "capacity": "18090000000000000000000000", + "isEnabled": true, + "rate": "209375000000000000000" + } + }, + "standard": { + "in": { + "capacity": "30000000000000000000000000", + "isEnabled": true, + "rate": "347222200000000000000" + }, + "out": { + "capacity": "27000000000000000000000000", + "isEnabled": true, + "rate": "312500000000000000000" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "20370000000000000000000000", + "isEnabled": true, + "rate": "235763873800000000000" + }, + "out": { + "capacity": "14931000000000000000000000", + "isEnabled": true, + "rate": "172812500000000000000" + } + }, + "standard": { + "in": { + "capacity": "30000000000000000000000000", + "isEnabled": true, + "rate": "347222200000000000000" + }, + "out": { + "capacity": "27000000000000000000000000", + "isEnabled": true, + "rate": "312500000000000000000" + } + } + } + } + } + }, + "APU": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "30600000000000000000000000", + "isEnabled": true, + "rate": "8499999976200000000000" + }, + "out": { + "capacity": "32900000000000000000000000", + "isEnabled": true, + "rate": "9138888863300000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27777777700000000000000" + }, + "out": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27777777700000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "45700000000000000000000000", + "isEnabled": true, + "rate": "12694444408900000000000" + }, + "out": { + "capacity": "49600000000000000000000000", + "isEnabled": true, + "rate": "13777777739200000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27777777700000000000000" + }, + "out": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27777777700000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "44700000000000000000000000", + "isEnabled": true, + "rate": "12416666631900000000000" + }, + "out": { + "capacity": "34300000000000000000000000", + "isEnabled": true, + "rate": "9527777751100000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27777777700000000000000" + }, + "out": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27777777700000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "56600000000000000000000000", + "isEnabled": true, + "rate": "15722222178200000000000" + }, + "out": { + "capacity": "46200000000000000000000000", + "isEnabled": true, + "rate": "12833333297400000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27777777700000000000000" + }, + "out": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27777777700000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "36000000000000000000000000", + "isEnabled": true, + "rate": "9999999972000000000000" + }, + "out": { + "capacity": "56400000000000000000000000", + "isEnabled": true, + "rate": "15666666622800000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27777777700000000000000" + }, + "out": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27777777700000000000000" + } + } + } + } + } + }, + "avBTC": { + "avalanche-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "avETH": { + "avalanche-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 7, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "avETHx": { + "avalanche-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "avUSD": { + "avalanche-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "avUSDx": { + "avalanche-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "AXS": { + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "BANANA": { + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "1017000000000000000000000", + "isEnabled": true, + "rate": "11770832580000000000" + }, + "out": { + "capacity": "460350000000000000000000", + "isEnabled": true, + "rate": "5328125000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "17361110000000000000" + }, + "out": { + "capacity": "1350000000000000000000000", + "isEnabled": true, + "rate": "15625000000000000000" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "538500000000000000000000", + "isEnabled": true, + "rate": "6232638490000000000" + }, + "out": { + "capacity": "507600000000000000000000", + "isEnabled": true, + "rate": "5875000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "17361110000000000000" + }, + "out": { + "capacity": "1350000000000000000000000", + "isEnabled": true, + "rate": "15625000000000000000" + } + } + } + } + } + }, + "BANK": { + "bsc-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "BARD": { + "bsc-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "beraBTC": { + "berachain-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "BETS": { + "avalanche-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "11970000000000000000000000", + "isEnabled": true, + "rate": "19950000000000000000000" + }, + "out": { + "capacity": "11730000000000000000000000", + "isEnabled": true, + "rate": "19550000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "30000000000000000000000000", + "isEnabled": true, + "rate": "50000000000000000000000" + }, + "out": { + "capacity": "30000000000000000000000000", + "isEnabled": true, + "rate": "50000000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "18810000000000000000000000", + "isEnabled": true, + "rate": "31350000000000000000000" + }, + "out": { + "capacity": "13020000000000000000000000", + "isEnabled": true, + "rate": "21700000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "30000000000000000000000000", + "isEnabled": true, + "rate": "50000000000000000000000" + }, + "out": { + "capacity": "30000000000000000000000000", + "isEnabled": true, + "rate": "50000000000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "19350000000000000000000000", + "isEnabled": true, + "rate": "32250000000000000000000" + }, + "out": { + "capacity": "13260000000000000000000000", + "isEnabled": true, + "rate": "22100000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "30000000000000000000000000", + "isEnabled": true, + "rate": "50000000000000000000000" + }, + "out": { + "capacity": "30000000000000000000000000", + "isEnabled": true, + "rate": "50000000000000000000000" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 10, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 8, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-unichain-1": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": null, + "standard": null + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "BKN": { + "bsc-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "BMX": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "65300000000000000000000", + "isEnabled": true, + "rate": "18133810000000000000" + }, + "out": { + "capacity": "50800000000000000000000", + "isEnabled": true, + "rate": "14107160000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "27770000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "27770000000000000000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "65100000000000000000000", + "isEnabled": true, + "rate": "18078270000000000000" + }, + "out": { + "capacity": "36500000000000000000000", + "isEnabled": true, + "rate": "10136050000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "27770000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "27770000000000000000" + } + } + } + } + }, + "ethereum-mainnet-mode-1": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "35500000000000000000000", + "isEnabled": true, + "rate": "9858350000000000000" + }, + "out": { + "capacity": "55300000000000000000000", + "isEnabled": true, + "rate": "15356810000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "27770000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "27770000000000000000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "BOB": { + "bitcoin-mainnet-bob-1": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "BOLD": { + "avalanche-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "berachain-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 10, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-scroll-1": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "hyperliquid-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-scroll-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "plasma-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "BONE": { + "avalanche-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "celo-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-andromeda-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-blast-1": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-mantle-1": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-mode-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-scroll-1": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-zircuit-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-zksync-1": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": null, + "standard": null + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "celo-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-andromeda-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-blast-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-mantle-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-scroll-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-zircuit-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "polkadot-mainnet-astar": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "xdai-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "polkadot-mainnet-astar": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "wemix-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "xdai-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "BR": { + "berachain-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "2980000000000000000000000", + "isEnabled": true, + "rate": "34568000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "682000000000000000", + "isEnabled": true, + "rate": "68200000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "1000000000000000000", + "isEnabled": true, + "rate": "100000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "326000000000000000", + "isEnabled": true, + "rate": "32600000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "1000000000000000000", + "isEnabled": true, + "rate": "100000000000000000" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "2780000000000000000000000", + "isEnabled": true, + "rate": "32248000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "2865000000000000000000000", + "isEnabled": true, + "rate": "33234000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "2370000000000000000000000", + "isEnabled": true, + "rate": "27492000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "283500000000000", + "isEnabled": true, + "rate": "3288600000" + }, + "out": { + "capacity": "2075000000000000000000000", + "isEnabled": true, + "rate": "24070000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "5800000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 6, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "471000000000000000", + "isEnabled": true, + "rate": "47100000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "1000000000000000000", + "isEnabled": true, + "rate": "100000000000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "2070000000000000000000000", + "isEnabled": true, + "rate": "24012000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "511000000000000000", + "isEnabled": true, + "rate": "51100000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "1000000000000000000", + "isEnabled": true, + "rate": "100000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "676000000000000000", + "isEnabled": true, + "rate": "67600000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "1000000000000000000", + "isEnabled": true, + "rate": "100000000000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "2620000000000000000000000", + "isEnabled": true, + "rate": "30392000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "595000000000000000", + "isEnabled": true, + "rate": "59500000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "1000000000000000000", + "isEnabled": true, + "rate": "100000000000000000" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "347500000000000", + "isEnabled": true, + "rate": "4031000000" + }, + "out": { + "capacity": "273000000000000", + "isEnabled": true, + "rate": "3166800000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "5800000000" + }, + "out": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "5800000000" + } + } + } + } + } + }, + "brBTC": { + "aptos-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "91400000", + "isEnabled": true, + "rate": "1057" + }, + "out": { + "capacity": "113000000", + "isEnabled": true, + "rate": "1307" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "107200000", + "isEnabled": true, + "rate": "1240" + }, + "out": { + "capacity": "113800000", + "isEnabled": true, + "rate": "1317" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "berachain-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "127800000", + "isEnabled": true, + "rate": "1479" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "aptos-mainnet": { + "custom": { + "in": { + "capacity": "94200000", + "isEnabled": true, + "rate": "1090" + }, + "out": { + "capacity": "72600000", + "isEnabled": true, + "rate": "840" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "91600000", + "isEnabled": true, + "rate": "1060" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "120800000", + "isEnabled": true, + "rate": "1398" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "ethereum-mainnet-ink-1": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "73600000", + "isEnabled": true, + "rate": "851" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "ethereum-mainnet-xlayer-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "133600000", + "isEnabled": true, + "rate": "1546" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "hyperliquid-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "80400000", + "isEnabled": true, + "rate": "930" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "aptos-mainnet": { + "custom": { + "in": { + "capacity": "108400000", + "isEnabled": true, + "rate": "1254" + }, + "out": { + "capacity": "118800000", + "isEnabled": true, + "rate": "1375" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "berachain-mainnet": { + "custom": null, + "standard": null + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "135400000", + "isEnabled": true, + "rate": "1567" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "132200000", + "isEnabled": true, + "rate": "1530" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "111800000", + "isEnabled": true, + "rate": "1294" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "ethereum-mainnet-xlayer-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "73000000", + "isEnabled": true, + "rate": "844" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "73200000", + "isEnabled": true, + "rate": "847" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "120600000", + "isEnabled": true, + "rate": "1395" + }, + "out": { + "capacity": "139600000", + "isEnabled": true, + "rate": "1615" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "139400000", + "isEnabled": true, + "rate": "1613" + }, + "out": { + "capacity": "85800000", + "isEnabled": true, + "rate": "993" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + } + }, + "BTR": { + "bitcoin-mainnet-bitlayer-1": { + "minBlockConfirmation": 7, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "BYTES": { + "avalanche-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "CANNED": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 6, + "remote": { + "shibarium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "CGX": { + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "CHEX": { + "bsc-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "CHIKA": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "shibarium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "CKP": { + "bsc-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "44400000000000000000000", + "isEnabled": true, + "rate": "12432000000000000000" + }, + "out": { + "capacity": "30500000000000000000000", + "isEnabled": true, + "rate": "8540000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "28000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "28000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 7, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "56500000000000000000000", + "isEnabled": true, + "rate": "15820000000000000000" + }, + "out": { + "capacity": "62300000000000000000000", + "isEnabled": true, + "rate": "17444000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "28000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "28000000000000000000" + } + } + } + } + } + }, + "clBTC": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "CRTV": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "DAMN": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "shibarium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "DEGEN": { + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "soneium-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "DFX": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "3145000000000000000000000", + "isEnabled": true, + "rate": "35853000000000000000" + }, + "out": { + "capacity": "2865000000000000000000000", + "isEnabled": true, + "rate": "32661000000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "2840000000000000000000000", + "isEnabled": true, + "rate": "32376000000000000000" + }, + "out": { + "capacity": "2025000000000000000000000", + "isEnabled": true, + "rate": "23085000000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "2065000000000000000000000", + "isEnabled": true, + "rate": "23541000000000000000" + }, + "out": { + "capacity": "2795000000000000000000000", + "isEnabled": true, + "rate": "31863000000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "3105000000000000000000000", + "isEnabled": true, + "rate": "35397000000000000000" + }, + "out": { + "capacity": "1705000000000000000000000", + "isEnabled": true, + "rate": "19437000000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "3080000000000000000000000", + "isEnabled": true, + "rate": "35112000000000000000" + }, + "out": { + "capacity": "2095000000000000000000000", + "isEnabled": true, + "rate": "23883000000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1600000000000000000000000", + "isEnabled": true, + "rate": "18240000000000000000" + }, + "out": { + "capacity": "1980000000000000000000000", + "isEnabled": true, + "rate": "22572000000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57000000000000000000" + } + } + } + } + } + }, + "DIP": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "6730000000000000000000000", + "isEnabled": true, + "rate": "1869594000000000000000" + }, + "out": { + "capacity": "3300000000000000000000000", + "isEnabled": true, + "rate": "916740000000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "2778000000000000000000" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "2778000000000000000000" + } + } + } + } + } + }, + "DOBO": { + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "DOLO": { + "berachain-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 4, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "DPI": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "386802000000000000000", + "isEnabled": true, + "rate": "26100000000000000" + }, + "out": { + "capacity": "431262000000000000000", + "isEnabled": true, + "rate": "29100000000000000" + } + }, + "standard": { + "in": { + "capacity": "741000000000000000000", + "isEnabled": true, + "rate": "50000000000000000" + }, + "out": { + "capacity": "741000000000000000000", + "isEnabled": true, + "rate": "50000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1698415000000000000000", + "isEnabled": true, + "rate": "117900000000000000" + }, + "out": { + "capacity": "873841000000000000000", + "isEnabled": true, + "rate": "60660000000000000" + } + }, + "standard": { + "in": { + "capacity": "2593000000000000000000", + "isEnabled": true, + "rate": "180000000000000000" + }, + "out": { + "capacity": "2593000000000000000000", + "isEnabled": true, + "rate": "180000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "245271000000000000000", + "isEnabled": true, + "rate": "16550000000000000" + }, + "out": { + "capacity": "472017000000000000000", + "isEnabled": true, + "rate": "31850000000000000" + } + }, + "standard": { + "in": { + "capacity": "741000000000000000000", + "isEnabled": true, + "rate": "50000000000000000" + }, + "out": { + "capacity": "741000000000000000000", + "isEnabled": true, + "rate": "50000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "469053000000000000000", + "isEnabled": true, + "rate": "31650000000000000" + }, + "out": { + "capacity": "246012000000000000000", + "isEnabled": true, + "rate": "16600000000000000" + } + }, + "standard": { + "in": { + "capacity": "741000000000000000000", + "isEnabled": true, + "rate": "50000000000000000" + }, + "out": { + "capacity": "741000000000000000000", + "isEnabled": true, + "rate": "50000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1571358000000000000000", + "isEnabled": true, + "rate": "109080000000000000" + }, + "out": { + "capacity": "902364000000000000000", + "isEnabled": true, + "rate": "62640000000000000" + } + }, + "standard": { + "in": { + "capacity": "2593000000000000000000", + "isEnabled": true, + "rate": "180000000000000000" + }, + "out": { + "capacity": "2593000000000000000000", + "isEnabled": true, + "rate": "180000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "223041000000000000000", + "isEnabled": true, + "rate": "15050000000000000" + }, + "out": { + "capacity": "312702000000000000000", + "isEnabled": true, + "rate": "21100000000000000" + } + }, + "standard": { + "in": { + "capacity": "741000000000000000000", + "isEnabled": true, + "rate": "50000000000000000" + }, + "out": { + "capacity": "741000000000000000000", + "isEnabled": true, + "rate": "50000000000000000" + } + } + } + } + } + }, + "dsETH": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "6383000000000000000", + "isEnabled": true, + "rate": "441900000000000" + }, + "out": { + "capacity": "5967000000000000000", + "isEnabled": true, + "rate": "413100000000000" + } + }, + "standard": { + "in": { + "capacity": "13000000000000000000", + "isEnabled": true, + "rate": "900000000000000" + }, + "out": { + "capacity": "13000000000000000000", + "isEnabled": true, + "rate": "900000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "11200000000000000000", + "isEnabled": true, + "rate": "761600000000000" + }, + "out": { + "capacity": "11800000000000000000", + "isEnabled": true, + "rate": "802400000000000" + } + }, + "standard": { + "in": { + "capacity": "25000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + }, + "out": { + "capacity": "25000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "5642000000000000000", + "isEnabled": true, + "rate": "390600000000000" + }, + "out": { + "capacity": "6786000000000000000", + "isEnabled": true, + "rate": "469800000000000" + } + }, + "standard": { + "in": { + "capacity": "13000000000000000000", + "isEnabled": true, + "rate": "900000000000000" + }, + "out": { + "capacity": "13000000000000000000", + "isEnabled": true, + "rate": "900000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "5213000000000000000", + "isEnabled": true, + "rate": "360900000000000" + }, + "out": { + "capacity": "6084000000000000000", + "isEnabled": true, + "rate": "421200000000000" + } + }, + "standard": { + "in": { + "capacity": "13000000000000000000", + "isEnabled": true, + "rate": "900000000000000" + }, + "out": { + "capacity": "13000000000000000000", + "isEnabled": true, + "rate": "900000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "8175000000000000000", + "isEnabled": true, + "rate": "555900000000000" + }, + "out": { + "capacity": "10575000000000000000", + "isEnabled": true, + "rate": "719100000000000" + } + }, + "standard": { + "in": { + "capacity": "25000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + }, + "out": { + "capacity": "25000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "6981000000000000000", + "isEnabled": true, + "rate": "483300000000000" + }, + "out": { + "capacity": "5317000000000000000", + "isEnabled": true, + "rate": "368100000000000" + } + }, + "standard": { + "in": { + "capacity": "13000000000000000000", + "isEnabled": true, + "rate": "900000000000000" + }, + "out": { + "capacity": "13000000000000000000", + "isEnabled": true, + "rate": "900000000000000" + } + } + } + } + } + }, + "EARNM": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "240000000000000000000000", + "isEnabled": true, + "rate": "66662400000000000000" + }, + "out": { + "capacity": "359375000000000000000000", + "isEnabled": true, + "rate": "99820000000000000000" + } + }, + "standard": { + "in": { + "capacity": "625000000000000000000000", + "isEnabled": true, + "rate": "173600000000000000000" + }, + "out": { + "capacity": "625000000000000000000000", + "isEnabled": true, + "rate": "173600000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "311250000000000000000000", + "isEnabled": true, + "rate": "86452800000000000000" + }, + "out": { + "capacity": "340000000000000000000000", + "isEnabled": true, + "rate": "94438400000000000000" + } + }, + "standard": { + "in": { + "capacity": "625000000000000000000000", + "isEnabled": true, + "rate": "173600000000000000000" + }, + "out": { + "capacity": "625000000000000000000000", + "isEnabled": true, + "rate": "173600000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "60000000000000000000000000", + "isEnabled": true, + "rate": "16666800000000000000000" + }, + "out": { + "capacity": "50000000000000000000000000", + "isEnabled": true, + "rate": "13889000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27778000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27778000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": null, + "standard": null + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "36800000000000000000000000", + "isEnabled": true, + "rate": "10222304000000000000000" + }, + "out": { + "capacity": "58400000000000000000000000", + "isEnabled": true, + "rate": "16222352000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27778000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27778000000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "410625000000000000000000", + "isEnabled": true, + "rate": "114055200000000000000" + }, + "out": { + "capacity": "219375000000000000000000", + "isEnabled": true, + "rate": "60933600000000000000" + } + }, + "standard": { + "in": { + "capacity": "625000000000000000000000", + "isEnabled": true, + "rate": "173600000000000000000" + }, + "out": { + "capacity": "625000000000000000000000", + "isEnabled": true, + "rate": "173600000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "195000000000000000000000", + "isEnabled": true, + "rate": "54163200000000000000" + }, + "out": { + "capacity": "266250000000000000000000", + "isEnabled": true, + "rate": "73953600000000000000" + } + }, + "standard": { + "in": { + "capacity": "625000000000000000000000", + "isEnabled": true, + "rate": "173600000000000000000" + }, + "out": { + "capacity": "625000000000000000000000", + "isEnabled": true, + "rate": "173600000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "23300000000000000000000000", + "isEnabled": true, + "rate": "6472274000000000000000" + }, + "out": { + "capacity": "29750000000000000000000000", + "isEnabled": true, + "rate": "8263955000000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000000", + "isEnabled": true, + "rate": "13889000000000000000000" + }, + "out": { + "capacity": "50000000000000000000000000", + "isEnabled": true, + "rate": "13889000000000000000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "50000000000000000000000000", + "isEnabled": true, + "rate": "13889000000000000000000" + }, + "out": { + "capacity": "45700000000000000000000000", + "isEnabled": true, + "rate": "12694546000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27778000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27778000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "62700000000000000000000000", + "isEnabled": true, + "rate": "17416806000000000000000" + }, + "out": { + "capacity": "63100000000000000000000000", + "isEnabled": true, + "rate": "17527918000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27778000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000000", + "isEnabled": true, + "rate": "27778000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "29250000000000000000000000", + "isEnabled": true, + "rate": "8125065000000000000000" + }, + "out": { + "capacity": "29350000000000000000000000", + "isEnabled": true, + "rate": "8152843000000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000000", + "isEnabled": true, + "rate": "13889000000000000000000" + }, + "out": { + "capacity": "50000000000000000000000000", + "isEnabled": true, + "rate": "13889000000000000000000" + } + } + } + } + } + }, + "EDEN": { + "bsc-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "egETH": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "62400000000000000000", + "isEnabled": true, + "rate": "5778240000000000" + }, + "out": { + "capacity": "61200000000000000000", + "isEnabled": true, + "rate": "5667120000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "55200000000000000000", + "isEnabled": true, + "rate": "5111520000000000" + }, + "out": { + "capacity": "69200000000000000000", + "isEnabled": true, + "rate": "6407920000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + } + } + }, + "sonic-mainnet": { + "custom": null, + "standard": null + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "65500000000000000000", + "isEnabled": true, + "rate": "6065300000000000" + }, + "out": { + "capacity": "64400000000000000000", + "isEnabled": true, + "rate": "5963440000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + } + } + } + } + } + }, + "elizaOS": { + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "EmCH": { + "avalanche-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "enzoBTC": { + "bsc-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-hashkey-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-hashkey-1": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "ETHx": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "598000000000000000000", + "isEnabled": true, + "rate": "33488000000000000" + }, + "out": { + "capacity": "578000000000000000000", + "isEnabled": true, + "rate": "32368000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "56000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "56000000000000000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "464000000000000000000", + "isEnabled": true, + "rate": "25984000000000000" + }, + "out": { + "capacity": "572000000000000000000", + "isEnabled": true, + "rate": "32032000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "56000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "56000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "469000000000000000000", + "isEnabled": true, + "rate": "26264000000000000" + }, + "out": { + "capacity": "603000000000000000000", + "isEnabled": true, + "rate": "33768000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "56000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "56000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "632000000000000000000", + "isEnabled": true, + "rate": "35392000000000000" + }, + "out": { + "capacity": "668000000000000000000", + "isEnabled": true, + "rate": "37408000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "56000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "56000000000000000" + } + } + } + } + } + }, + "eUSX": { + "plasma-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "FEED": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": null, + "remote": { + "shibarium-mainnet": { + "custom": null, + "standard": null + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "FF": { + "bsc-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "FHE": { + "bsc-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mind-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mind-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mind-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "FLUID": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1254000000000000000000000", + "isEnabled": true, + "rate": "14513888888888888888" + }, + "out": { + "capacity": "802000000000000000000000", + "isEnabled": true, + "rate": "9282407407407407407" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1292000000000000000000000", + "isEnabled": true, + "rate": "14953703703703703703" + }, + "out": { + "capacity": "828000000000000000000000", + "isEnabled": true, + "rate": "9583333333333333333" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "186500000000000000000000", + "isEnabled": true, + "rate": "2158551000000000000" + }, + "out": { + "capacity": "317500000000000000000000", + "isEnabled": true, + "rate": "3674745000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "216000000000000000000000", + "isEnabled": true, + "rate": "2499999999999999999" + }, + "out": { + "capacity": "215000000000000000000000", + "isEnabled": true, + "rate": "2488425925925925925" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787037037037037037" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787037037037037037" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1202000000000000000000000", + "isEnabled": true, + "rate": "13912037037037037036" + }, + "out": { + "capacity": "1250000000000000000000000", + "isEnabled": true, + "rate": "14467592592592592592" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "668000000000000000000000", + "isEnabled": true, + "rate": "7731481481481481481" + }, + "out": { + "capacity": "840000000000000000000000", + "isEnabled": true, + "rate": "9722222222222222222" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "341000000000000000000000", + "isEnabled": true, + "rate": "3946734000000000000" + }, + "out": { + "capacity": "286500000000000000000000", + "isEnabled": true, + "rate": "3315951000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "315500000000000000000000", + "isEnabled": true, + "rate": "3651620370370370370" + }, + "out": { + "capacity": "260000000000000000000000", + "isEnabled": true, + "rate": "3009259259259259259" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787037037037037037" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787037037037037037" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "864000000000000000000000", + "isEnabled": true, + "rate": "9999999999999999999" + }, + "out": { + "capacity": "1066000000000000000000000", + "isEnabled": true, + "rate": "12337962962962962962" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "762000000000000000000000", + "isEnabled": true, + "rate": "8819444444444444444" + }, + "out": { + "capacity": "902000000000000000000000", + "isEnabled": true, + "rate": "10439814814814814814" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148148148148148148" + } + } + }, + "plasma-mainnet": { + "custom": null, + "standard": null + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314814814814814814" + }, + "out": { + "capacity": "336500000000000000000000", + "isEnabled": true, + "rate": "3894675925925925925" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787037037037037037" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787037037037037037" + } + } + } + } + }, + "plasma-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "152500000000000000000000", + "isEnabled": true, + "rate": "1765035000000000000" + }, + "out": { + "capacity": "206500000000000000000000", + "isEnabled": true, + "rate": "2390031000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "239000000000000000000000", + "isEnabled": true, + "rate": "2766186000000000000" + }, + "out": { + "capacity": "312000000000000000000000", + "isEnabled": true, + "rate": "3611088000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "206000000000000000000000", + "isEnabled": true, + "rate": "2384244000000000000" + }, + "out": { + "capacity": "159000000000000000000000", + "isEnabled": true, + "rate": "1840266000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "208500000000000", + "isEnabled": true, + "rate": "2413179000" + }, + "out": { + "capacity": "302500000000000000000000", + "isEnabled": true, + "rate": "3501135000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "5787000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "315500000000000", + "isEnabled": true, + "rate": "14606451100" + }, + "out": { + "capacity": "288000000000000", + "isEnabled": true, + "rate": "13333305600" + } + }, + "standard": { + "in": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "23148100000" + }, + "out": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "23148100000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "200500000000000", + "isEnabled": true, + "rate": "9282388100" + }, + "out": { + "capacity": "264500000000000", + "isEnabled": true, + "rate": "12245344900" + } + }, + "standard": { + "in": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "23148100000" + }, + "out": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "23148100000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "333000000000000", + "isEnabled": true, + "rate": "15416634600" + }, + "out": { + "capacity": "262500000000000", + "isEnabled": true, + "rate": "12152752500" + } + }, + "standard": { + "in": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "23148100000" + }, + "out": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "23148100000" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "235500000000000", + "isEnabled": true, + "rate": "2725677000" + }, + "out": { + "capacity": "268000000000000", + "isEnabled": true, + "rate": "3101832000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "5787000000" + }, + "out": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "5787000000" + } + } + } + } + } + }, + "GEN": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "GHO": { + "avalanche-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "798000000000000000000000", + "isEnabled": true, + "rate": "159600000000000000000" + }, + "out": { + "capacity": "961500000000000000000000", + "isEnabled": true, + "rate": "192300000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "462000000000000000000000", + "isEnabled": true, + "rate": "92400000000000000000" + }, + "out": { + "capacity": "1026000000000000000000000", + "isEnabled": true, + "rate": "205200000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "973500000000000000000000", + "isEnabled": true, + "rate": "194700000000000000000" + }, + "out": { + "capacity": "645000000000000000000000", + "isEnabled": true, + "rate": "129000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "690000000000000000000000", + "isEnabled": true, + "rate": "138000000000000000000" + }, + "out": { + "capacity": "901500000000000000000000", + "isEnabled": true, + "rate": "180300000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "693000000000000000000000", + "isEnabled": true, + "rate": "138600000000000000000" + }, + "out": { + "capacity": "760500000000000000000000", + "isEnabled": true, + "rate": "152100000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "xdai-mainnet": { + "custom": { + "in": { + "capacity": "897000000000000000000000", + "isEnabled": true, + "rate": "179400000000000000000" + }, + "out": { + "capacity": "646500000000000000000000", + "isEnabled": true, + "rate": "129300000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "555000000000000000000000", + "isEnabled": true, + "rate": "111000000000000000000" + }, + "out": { + "capacity": "618000000000000000000000", + "isEnabled": true, + "rate": "123600000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1038000000000000000000000", + "isEnabled": true, + "rate": "207600000000000000000" + }, + "out": { + "capacity": "888000000000000000000000", + "isEnabled": true, + "rate": "177600000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "853500000000000000000000", + "isEnabled": true, + "rate": "170700000000000000000" + }, + "out": { + "capacity": "1035000000000000000000000", + "isEnabled": true, + "rate": "207000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "912000000000000000000000", + "isEnabled": true, + "rate": "182400000000000000000" + }, + "out": { + "capacity": "1005000000000000000000000", + "isEnabled": true, + "rate": "201000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "xdai-mainnet": { + "custom": { + "in": { + "capacity": "559500000000000000000000", + "isEnabled": true, + "rate": "111900000000000000000" + }, + "out": { + "capacity": "825000000000000000000000", + "isEnabled": true, + "rate": "165000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "643500000000000000000000", + "isEnabled": true, + "rate": "128700000000000000000" + }, + "out": { + "capacity": "744000000000000000000000", + "isEnabled": true, + "rate": "148800000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "864000000000000000000000", + "isEnabled": true, + "rate": "172800000000000000000" + }, + "out": { + "capacity": "496500000000000000000000", + "isEnabled": true, + "rate": "99300000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "769500000000000000000000", + "isEnabled": true, + "rate": "153900000000000000000" + }, + "out": { + "capacity": "601500000000000000000000", + "isEnabled": true, + "rate": "120300000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "808500000000000000000000", + "isEnabled": true, + "rate": "161700000000000000000" + }, + "out": { + "capacity": "714000000000000000000000", + "isEnabled": true, + "rate": "142800000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "1000500000000000000000000", + "isEnabled": true, + "rate": "200100000000000000000" + }, + "out": { + "capacity": "856500000000000000000000", + "isEnabled": true, + "rate": "171300000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "xdai-mainnet": { + "custom": { + "in": { + "capacity": "460500000000000000000000", + "isEnabled": true, + "rate": "92100000000000000000" + }, + "out": { + "capacity": "672000000000000000000000", + "isEnabled": true, + "rate": "134400000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-ink-1": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "907500000000000000000000", + "isEnabled": true, + "rate": "181500000000000000000" + }, + "out": { + "capacity": "936000000000000000000000", + "isEnabled": true, + "rate": "187200000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "906000000000000000000000", + "isEnabled": true, + "rate": "181200000000000000000" + }, + "out": { + "capacity": "754500000000000000000000", + "isEnabled": true, + "rate": "150900000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "811500000000000000000000", + "isEnabled": true, + "rate": "162300000000000000000" + }, + "out": { + "capacity": "655500000000000000000000", + "isEnabled": true, + "rate": "131100000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "561000000000000000000000", + "isEnabled": true, + "rate": "112200000000000000000" + }, + "out": { + "capacity": "894000000000000000000000", + "isEnabled": true, + "rate": "178800000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "xdai-mainnet": { + "custom": { + "in": { + "capacity": "829500000000000000000000", + "isEnabled": true, + "rate": "165900000000000000000" + }, + "out": { + "capacity": "519000000000000000000000", + "isEnabled": true, + "rate": "103800000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "997500000000000000000000", + "isEnabled": true, + "rate": "199500000000000000000" + }, + "out": { + "capacity": "981000000000000000000000", + "isEnabled": true, + "rate": "196200000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "861000000000000000000000", + "isEnabled": true, + "rate": "172200000000000000000" + }, + "out": { + "capacity": "933000000000000000000000", + "isEnabled": true, + "rate": "186600000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "852000000000000000000000", + "isEnabled": true, + "rate": "170400000000000000000" + }, + "out": { + "capacity": "751500000000000000000000", + "isEnabled": true, + "rate": "150300000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "616500000000000000000000", + "isEnabled": true, + "rate": "123300000000000000000" + }, + "out": { + "capacity": "1006500000000000000000000", + "isEnabled": true, + "rate": "201300000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "766500000000000000000000", + "isEnabled": true, + "rate": "153300000000000000000" + }, + "out": { + "capacity": "540000000000000000000000", + "isEnabled": true, + "rate": "108000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "xdai-mainnet": { + "custom": { + "in": { + "capacity": "541500000000000000000000", + "isEnabled": true, + "rate": "108300000000000000000" + }, + "out": { + "capacity": "708000000000000000000000", + "isEnabled": true, + "rate": "141600000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + } + } + }, + "plasma-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "574500000000000000000000", + "isEnabled": true, + "rate": "114900000000000000000" + }, + "out": { + "capacity": "583500000000000000000000", + "isEnabled": true, + "rate": "116700000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "936000000000000000000000", + "isEnabled": true, + "rate": "187200000000000000000" + }, + "out": { + "capacity": "487500000000000000000000", + "isEnabled": true, + "rate": "97500000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "846000000000000000000000", + "isEnabled": true, + "rate": "169200000000000000000" + }, + "out": { + "capacity": "783000000000000000000000", + "isEnabled": true, + "rate": "156600000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "865500000000000000000000", + "isEnabled": true, + "rate": "173100000000000000000" + }, + "out": { + "capacity": "951000000000000000000000", + "isEnabled": true, + "rate": "190200000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "xdai-mainnet": { + "custom": { + "in": { + "capacity": "642000000000000000000000", + "isEnabled": true, + "rate": "128400000000000000000" + }, + "out": { + "capacity": "604500000000000000000000", + "isEnabled": true, + "rate": "120900000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + } + } + }, + "xdai-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "847500000000000000000000", + "isEnabled": true, + "rate": "169500000000000000000" + }, + "out": { + "capacity": "1026000000000000000000000", + "isEnabled": true, + "rate": "205200000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "654000000000000000000000", + "isEnabled": true, + "rate": "130800000000000000000" + }, + "out": { + "capacity": "492000000000000000000000", + "isEnabled": true, + "rate": "98400000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "666000000000000000000000", + "isEnabled": true, + "rate": "133200000000000000000" + }, + "out": { + "capacity": "642000000000000000000000", + "isEnabled": true, + "rate": "128400000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "478500000000000000000000", + "isEnabled": true, + "rate": "95700000000000000000" + }, + "out": { + "capacity": "508500000000000000000000", + "isEnabled": true, + "rate": "101700000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "808500000000000000000000", + "isEnabled": true, + "rate": "161700000000000000000" + }, + "out": { + "capacity": "525000000000000000000000", + "isEnabled": true, + "rate": "105000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "822000000000000000000000", + "isEnabled": true, + "rate": "164400000000000000000" + }, + "out": { + "capacity": "924000000000000000000000", + "isEnabled": true, + "rate": "184800000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "300000000000000000000" + } + } + } + } + } + }, + "GRT": { + "avalanche-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "302000000000000000000000", + "isEnabled": true, + "rate": "3495370369140000000" + }, + "out": { + "capacity": "587000000000000000000000", + "isEnabled": true, + "rate": "6793981479090000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11574074070000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11574074070000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "554000000000000000000000", + "isEnabled": true, + "rate": "6412037034780000000" + }, + "out": { + "capacity": "534000000000000000000000", + "isEnabled": true, + "rate": "6180555553380000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11574074070000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11574074070000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "316000000000000000000000", + "isEnabled": true, + "rate": "3657407406120000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "5787037035000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11574074070000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11574074070000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "611000000000000000000000", + "isEnabled": true, + "rate": "7071759256770000000" + }, + "out": { + "capacity": "466000000000000000000000", + "isEnabled": true, + "rate": "5393518516620000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11574074070000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11574074070000000000" + } + } + } + } + } + }, + "hyETH": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "15120000000000000000", + "isEnabled": true, + "rate": "1080000000000000" + }, + "out": { + "capacity": "16436000000000000000", + "isEnabled": true, + "rate": "1174000000000000" + } + }, + "standard": { + "in": { + "capacity": "28000000000000000000", + "isEnabled": true, + "rate": "2000000000000000" + }, + "out": { + "capacity": "28000000000000000000", + "isEnabled": true, + "rate": "2000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "272000000000000000000", + "isEnabled": true, + "rate": "18876800000000000" + }, + "out": { + "capacity": "189000000000000000000", + "isEnabled": true, + "rate": "13116600000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000", + "isEnabled": true, + "rate": "34700000000000000" + }, + "out": { + "capacity": "500000000000000000000", + "isEnabled": true, + "rate": "34700000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "10612000000000000000", + "isEnabled": true, + "rate": "758000000000000" + }, + "out": { + "capacity": "13692000000000000000", + "isEnabled": true, + "rate": "978000000000000" + } + }, + "standard": { + "in": { + "capacity": "28000000000000000000", + "isEnabled": true, + "rate": "2000000000000000" + }, + "out": { + "capacity": "28000000000000000000", + "isEnabled": true, + "rate": "2000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "11452000000000000000", + "isEnabled": true, + "rate": "818000000000000" + }, + "out": { + "capacity": "12572000000000000000", + "isEnabled": true, + "rate": "898000000000000" + } + }, + "standard": { + "in": { + "capacity": "28000000000000000000", + "isEnabled": true, + "rate": "2000000000000000" + }, + "out": { + "capacity": "28000000000000000000", + "isEnabled": true, + "rate": "2000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": null, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + } + } + } + }, + "IBTC": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "189450000", + "isEnabled": true, + "rate": "35069" + }, + "out": { + "capacity": "266400000", + "isEnabled": true, + "rate": "49313" + } + }, + "standard": { + "in": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + }, + "out": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "210150000", + "isEnabled": true, + "rate": "38901" + }, + "out": { + "capacity": "135900000", + "isEnabled": true, + "rate": "25156" + } + }, + "standard": { + "in": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + }, + "out": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "202050000", + "isEnabled": true, + "rate": "37401" + }, + "out": { + "capacity": "184950000", + "isEnabled": true, + "rate": "34236" + } + }, + "standard": { + "in": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + }, + "out": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "225450000", + "isEnabled": true, + "rate": "41733" + }, + "out": { + "capacity": "265050000", + "isEnabled": true, + "rate": "49063" + } + }, + "standard": { + "in": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + }, + "out": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "243450000", + "isEnabled": true, + "rate": "45065" + }, + "out": { + "capacity": "266850000", + "isEnabled": true, + "rate": "49396" + } + }, + "standard": { + "in": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + }, + "out": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "267300000", + "isEnabled": true, + "rate": "49480" + }, + "out": { + "capacity": "204300000", + "isEnabled": true, + "rate": "37818" + } + }, + "standard": { + "in": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + }, + "out": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "220950000", + "isEnabled": true, + "rate": "40900" + }, + "out": { + "capacity": "170100000", + "isEnabled": true, + "rate": "31487" + } + }, + "standard": { + "in": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + }, + "out": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "264600000", + "isEnabled": true, + "rate": "48980" + }, + "out": { + "capacity": "156150000", + "isEnabled": true, + "rate": "28905" + } + }, + "standard": { + "in": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + }, + "out": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "295650000", + "isEnabled": true, + "rate": "54728" + }, + "out": { + "capacity": "173250000", + "isEnabled": true, + "rate": "32070" + } + }, + "standard": { + "in": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + }, + "out": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "231750000", + "isEnabled": true, + "rate": "42899" + }, + "out": { + "capacity": "278100000", + "isEnabled": true, + "rate": "51479" + } + }, + "standard": { + "in": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + }, + "out": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "167400000", + "isEnabled": true, + "rate": "30987" + }, + "out": { + "capacity": "234900000", + "isEnabled": true, + "rate": "43482" + } + }, + "standard": { + "in": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + }, + "out": { + "capacity": "450000000", + "isEnabled": true, + "rate": "83300" + } + } + } + } + } + }, + "ILMT": { + "bsc-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "447000000000000", + "isEnabled": true, + "rate": "124166666666" + }, + "out": { + "capacity": "6390000000000000000000000", + "isEnabled": true, + "rate": "1775000000001420000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000", + "isEnabled": true, + "rate": "277777777778" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "2777777777780000000000" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "531000000000000", + "isEnabled": true, + "rate": "147500000000" + }, + "out": { + "capacity": "671000000000000", + "isEnabled": true, + "rate": "186388888889" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000", + "isEnabled": true, + "rate": "277777777778" + }, + "out": { + "capacity": "1000000000000000", + "isEnabled": true, + "rate": "277777777778" + } + } + } + } + } + }, + "IXT": { + "bsc-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "JASMY": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "2120000000000000000000000", + "isEnabled": true, + "rate": "588888851200000000000" + }, + "out": { + "capacity": "3280000000000000000000000", + "isEnabled": true, + "rate": "911111052800000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "1388888800000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "1388888800000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "2380000000000000000000000", + "isEnabled": true, + "rate": "661111068800000000000" + }, + "out": { + "capacity": "2335000000000000000000000", + "isEnabled": true, + "rate": "648611069600000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "1388888800000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "1388888800000000000000" + } + } + } + } + } + }, + "JCT": { + "bsc-mainnet": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "kHYPE": { + "hyperliquid-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "KNET": { + "bsc-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "LAND": { + "bsc-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "10520000000000000000000", + "isEnabled": true, + "rate": "2919300000000000000" + }, + "out": { + "capacity": "6600000000000000000000", + "isEnabled": true, + "rate": "1831500000000000000" + } + }, + "standard": { + "in": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + }, + "out": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "9640000000000000000000", + "isEnabled": true, + "rate": "2675100000000000000" + }, + "out": { + "capacity": "12320000000000000000000", + "isEnabled": true, + "rate": "3418800000000000000" + } + }, + "standard": { + "in": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + }, + "out": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "10140000000000000000000", + "isEnabled": true, + "rate": "2813850000000000000" + }, + "out": { + "capacity": "13840000000000000000000", + "isEnabled": true, + "rate": "3840600000000000000" + } + }, + "standard": { + "in": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + }, + "out": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "11620000000000000000000", + "isEnabled": true, + "rate": "3224550000000000000" + }, + "out": { + "capacity": "10340000000000000000000", + "isEnabled": true, + "rate": "2869350000000000000" + } + }, + "standard": { + "in": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + }, + "out": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "6660000000000000000000", + "isEnabled": true, + "rate": "1848150000000000000" + }, + "out": { + "capacity": "10280000000000000000000", + "isEnabled": true, + "rate": "2852700000000000000" + } + }, + "standard": { + "in": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + }, + "out": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "10060000000000000000000", + "isEnabled": true, + "rate": "2791650000000000000" + }, + "out": { + "capacity": "13040000000000000000000", + "isEnabled": true, + "rate": "3618600000000000000" + } + }, + "standard": { + "in": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + }, + "out": { + "capacity": "20000000000000000000000", + "isEnabled": true, + "rate": "5550000000000000000" + } + } + } + } + } + }, + "LBTC": { + "avalanche-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "2605000000", + "isEnabled": true, + "rate": "241203" + }, + "out": { + "capacity": "2145000000", + "isEnabled": true, + "rate": "198611" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1880000000", + "isEnabled": true, + "rate": "174074" + }, + "out": { + "capacity": "1795000000", + "isEnabled": true, + "rate": "166203" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "2080000000", + "isEnabled": true, + "rate": "192592" + }, + "out": { + "capacity": "2305000000", + "isEnabled": true, + "rate": "213425" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "monad-mainnet": { + "custom": { + "in": { + "capacity": "2890000000", + "isEnabled": true, + "rate": "267592" + }, + "out": { + "capacity": "3255000000", + "isEnabled": true, + "rate": "301388" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "polygon-mainnet-katana": { + "custom": { + "in": { + "capacity": "2975000000", + "isEnabled": true, + "rate": "275462" + }, + "out": { + "capacity": "1780000000", + "isEnabled": true, + "rate": "164814" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1980000000", + "isEnabled": true, + "rate": "183333" + }, + "out": { + "capacity": "3430000000", + "isEnabled": true, + "rate": "317592" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "stable-mainnet": { + "custom": { + "in": { + "capacity": "3350000000", + "isEnabled": true, + "rate": "310185" + }, + "out": { + "capacity": "2880000000", + "isEnabled": true, + "rate": "266666" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + } + } + }, + "berachain-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "3165000000", + "isEnabled": true, + "rate": "293055" + }, + "out": { + "capacity": "2425000000", + "isEnabled": true, + "rate": "224537" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "3420000000", + "isEnabled": true, + "rate": "316666" + }, + "out": { + "capacity": "1690000000", + "isEnabled": true, + "rate": "156481" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "2305000000", + "isEnabled": true, + "rate": "213425" + }, + "out": { + "capacity": "1710000000", + "isEnabled": true, + "rate": "158333" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "mainnet": { + "custom": null, + "standard": null + }, + "monad-mainnet": { + "custom": { + "in": { + "capacity": "3140000000", + "isEnabled": true, + "rate": "290740" + }, + "out": { + "capacity": "1505000000", + "isEnabled": true, + "rate": "139351" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "polygon-mainnet-katana": { + "custom": { + "in": { + "capacity": "2775000000", + "isEnabled": true, + "rate": "256944" + }, + "out": { + "capacity": "1885000000", + "isEnabled": true, + "rate": "174537" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "3170000000", + "isEnabled": true, + "rate": "293518" + }, + "out": { + "capacity": "2445000000", + "isEnabled": true, + "rate": "226388" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "stable-mainnet": { + "custom": { + "in": { + "capacity": "2585000000", + "isEnabled": true, + "rate": "239351" + }, + "out": { + "capacity": "2665000000", + "isEnabled": true, + "rate": "246759" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + } + } + }, + "corn-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "2040000000", + "isEnabled": true, + "rate": "188888" + }, + "out": { + "capacity": "1550000000", + "isEnabled": true, + "rate": "143518" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1835000000", + "isEnabled": true, + "rate": "169907" + }, + "out": { + "capacity": "2040000000", + "isEnabled": true, + "rate": "188888" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "bsc-mainnet": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": null, + "standard": null + }, + "monad-mainnet": { + "custom": null, + "standard": null + }, + "polygon-mainnet-katana": { + "custom": null, + "standard": null + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "2840000000", + "isEnabled": true, + "rate": "262962" + }, + "out": { + "capacity": "1800000000", + "isEnabled": true, + "rate": "166666" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "stable-mainnet": { + "custom": null, + "standard": null + } + } + }, + "etherlink-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1515000000", + "isEnabled": true, + "rate": "140277" + }, + "out": { + "capacity": "2630000000", + "isEnabled": true, + "rate": "243518" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "2730000000", + "isEnabled": true, + "rate": "252777" + }, + "out": { + "capacity": "2345000000", + "isEnabled": true, + "rate": "217129" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "2095000000", + "isEnabled": true, + "rate": "193981" + }, + "out": { + "capacity": "2805000000", + "isEnabled": true, + "rate": "259722" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1555000000", + "isEnabled": true, + "rate": "143981" + }, + "out": { + "capacity": "2600000000", + "isEnabled": true, + "rate": "240740" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "corn-mainnet": { + "custom": { + "in": { + "capacity": "2240000000", + "isEnabled": true, + "rate": "207407" + }, + "out": { + "capacity": "1695000000", + "isEnabled": true, + "rate": "156944" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "2820000000", + "isEnabled": true, + "rate": "261111" + }, + "out": { + "capacity": "3490000000", + "isEnabled": true, + "rate": "323148" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "etherlink-mainnet": { + "custom": { + "in": { + "capacity": "3260000000", + "isEnabled": true, + "rate": "301851" + }, + "out": { + "capacity": "1590000000", + "isEnabled": true, + "rate": "147222" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "monad-mainnet": { + "custom": { + "in": { + "capacity": "1705000000", + "isEnabled": true, + "rate": "157870" + }, + "out": { + "capacity": "2200000000", + "isEnabled": true, + "rate": "203703" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "polygon-mainnet-katana": { + "custom": { + "in": { + "capacity": "2975000000", + "isEnabled": true, + "rate": "275462" + }, + "out": { + "capacity": "3015000000", + "isEnabled": true, + "rate": "279166" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "2530000000", + "isEnabled": true, + "rate": "234259" + }, + "out": { + "capacity": "3130000000", + "isEnabled": true, + "rate": "289814" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "stable-mainnet": { + "custom": null, + "standard": null + }, + "tac-mainnet": { + "custom": { + "in": { + "capacity": "2700000000", + "isEnabled": true, + "rate": "250000" + }, + "out": { + "capacity": "2595000000", + "isEnabled": true, + "rate": "240277" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + } + } + }, + "monad-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "2085000000", + "isEnabled": true, + "rate": "193055" + }, + "out": { + "capacity": "3255000000", + "isEnabled": true, + "rate": "301388" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1740000000", + "isEnabled": true, + "rate": "161111" + }, + "out": { + "capacity": "3395000000", + "isEnabled": true, + "rate": "314351" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1655000000", + "isEnabled": true, + "rate": "153240" + }, + "out": { + "capacity": "1630000000", + "isEnabled": true, + "rate": "150925" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "2720000000", + "isEnabled": true, + "rate": "251851" + }, + "out": { + "capacity": "3260000000", + "isEnabled": true, + "rate": "301851" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "polygon-mainnet-katana": { + "custom": null, + "standard": null + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1910000000", + "isEnabled": true, + "rate": "176851" + }, + "out": { + "capacity": "1560000000", + "isEnabled": true, + "rate": "144444" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + } + } + }, + "polygon-mainnet-katana": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "2710000000", + "isEnabled": true, + "rate": "250925" + }, + "out": { + "capacity": "2365000000", + "isEnabled": true, + "rate": "218981" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "2535000000", + "isEnabled": true, + "rate": "234722" + }, + "out": { + "capacity": "3400000000", + "isEnabled": true, + "rate": "314814" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1850000000", + "isEnabled": true, + "rate": "171296" + }, + "out": { + "capacity": "2830000000", + "isEnabled": true, + "rate": "262037" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "2200000000", + "isEnabled": true, + "rate": "203703" + }, + "out": { + "capacity": "2695000000", + "isEnabled": true, + "rate": "249537" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "monad-mainnet": { + "custom": { + "in": { + "capacity": "2745000000", + "isEnabled": true, + "rate": "254166" + }, + "out": { + "capacity": "3405000000", + "isEnabled": true, + "rate": "315277" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1615000000", + "isEnabled": true, + "rate": "149537" + }, + "out": { + "capacity": "3045000000", + "isEnabled": true, + "rate": "281944" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "stable-mainnet": { + "custom": { + "in": { + "capacity": "2195000000", + "isEnabled": true, + "rate": "203240" + }, + "out": { + "capacity": "3000000000", + "isEnabled": true, + "rate": "277777" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "2235000000", + "isEnabled": true, + "rate": "206944" + }, + "out": { + "capacity": "3220000000", + "isEnabled": true, + "rate": "298148" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "2855000000", + "isEnabled": true, + "rate": "264351" + }, + "out": { + "capacity": "3280000000", + "isEnabled": true, + "rate": "303703" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "2860000000", + "isEnabled": true, + "rate": "264814" + }, + "out": { + "capacity": "1525000000", + "isEnabled": true, + "rate": "141203" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1805000000", + "isEnabled": true, + "rate": "167129" + }, + "out": { + "capacity": "2605000000", + "isEnabled": true, + "rate": "241203" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "monad-mainnet": { + "custom": { + "in": { + "capacity": "3260000000", + "isEnabled": true, + "rate": "301851" + }, + "out": { + "capacity": "1630000000", + "isEnabled": true, + "rate": "150925" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "polygon-mainnet-katana": { + "custom": { + "in": { + "capacity": "2250000000", + "isEnabled": true, + "rate": "208333" + }, + "out": { + "capacity": "3380000000", + "isEnabled": true, + "rate": "312962" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "stable-mainnet": { + "custom": { + "in": { + "capacity": "3230000000", + "isEnabled": true, + "rate": "299074" + }, + "out": { + "capacity": "2370000000", + "isEnabled": true, + "rate": "219444" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + } + } + }, + "stable-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1900000000", + "isEnabled": true, + "rate": "175925" + }, + "out": { + "capacity": "1950000000", + "isEnabled": true, + "rate": "180555" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "3115000000", + "isEnabled": true, + "rate": "288425" + }, + "out": { + "capacity": "1970000000", + "isEnabled": true, + "rate": "182407" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "2070000000", + "isEnabled": true, + "rate": "191666" + }, + "out": { + "capacity": "2325000000", + "isEnabled": true, + "rate": "215277" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "mainnet": { + "custom": null, + "standard": null + }, + "polygon-mainnet-katana": { + "custom": { + "in": { + "capacity": "1760000000", + "isEnabled": true, + "rate": "162962" + }, + "out": { + "capacity": "3205000000", + "isEnabled": true, + "rate": "296759" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "2255000000", + "isEnabled": true, + "rate": "208796" + }, + "out": { + "capacity": "1965000000", + "isEnabled": true, + "rate": "181944" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + } + } + }, + "tac-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "2475000000", + "isEnabled": true, + "rate": "229166" + }, + "out": { + "capacity": "1790000000", + "isEnabled": true, + "rate": "165740" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "462963" + } + } + } + } + } + }, + "LDY": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1635000000000000000000000", + "isEnabled": true, + "rate": "18922400000000000000" + }, + "out": { + "capacity": "1113000000000000000000000", + "isEnabled": true, + "rate": "12881120000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1995000000000000000000000", + "isEnabled": true, + "rate": "23088800000000000000" + }, + "out": { + "capacity": "1224000000000000000000000", + "isEnabled": true, + "rate": "14165760000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1215000000000000000000000", + "isEnabled": true, + "rate": "14061600000000000000" + }, + "out": { + "capacity": "1647000000000000000000000", + "isEnabled": true, + "rate": "19061280000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1101000000000000000000000", + "isEnabled": true, + "rate": "12742240000000000000" + }, + "out": { + "capacity": "1644000000000000000000000", + "isEnabled": true, + "rate": "19026560000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1812000000000000000000000", + "isEnabled": true, + "rate": "20970880000000000000" + }, + "out": { + "capacity": "1185000000000000000000000", + "isEnabled": true, + "rate": "13714400000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1260000000000000000000000", + "isEnabled": true, + "rate": "14582400000000000000" + }, + "out": { + "capacity": "1119000000000000000000000", + "isEnabled": true, + "rate": "12950560000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000" + } + } + } + } + } + }, + "LEASH": { + "avalanche-mainnet": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "celo-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-andromeda-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "ethereum-mainnet-blast-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "ethereum-mainnet-mantle-1": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-mode-1": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-scroll-1": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-zircuit-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-zksync-1": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "celo-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-andromeda-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-blast-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-mantle-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-scroll-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-zircuit-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "polkadot-mainnet-astar": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "xdai-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "polkadot-mainnet-astar": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "wemix-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "xdai-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "LEND": { + "avalanche-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": null, + "standard": null + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "LINK": { + "0g-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ab-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "aptos-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "3135000000000", + "isEnabled": true, + "rate": "870276000" + }, + "out": { + "capacity": "1990000000000", + "isEnabled": true, + "rate": "552424000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388000000" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1595000000000", + "isEnabled": true, + "rate": "442772000" + }, + "out": { + "capacity": "1945000000000", + "isEnabled": true, + "rate": "539932000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388000000" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388000000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1885000000000", + "isEnabled": true, + "rate": "523276000" + }, + "out": { + "capacity": "3380000000000", + "isEnabled": true, + "rate": "938288000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388000000" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388000000" + } + } + } + } + }, + "celo-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "19350000000000000000000", + "isEnabled": true, + "rate": "5371560000000000000" + }, + "out": { + "capacity": "32800000000000000000000", + "isEnabled": true, + "rate": "9105280000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + } + } + }, + "ethereum-mainnet-andromeda-1": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "32600000000000000000000", + "isEnabled": true, + "rate": "9049760000000000000" + }, + "out": { + "capacity": "29850000000000000000000", + "isEnabled": true, + "rate": "8286360000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "aptos-mainnet": { + "custom": { + "in": { + "capacity": "2285000000000", + "isEnabled": true, + "rate": "634316000" + }, + "out": { + "capacity": "15550000000000000000000", + "isEnabled": true, + "rate": "4316680000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "ethereum-mainnet-blast-1": { + "custom": { + "in": { + "capacity": "17150000000000000000000", + "isEnabled": true, + "rate": "4760840000000000000" + }, + "out": { + "capacity": "19500000000000000000000", + "isEnabled": true, + "rate": "5413200000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "16550000000000000000000", + "isEnabled": true, + "rate": "4594280000000000000" + }, + "out": { + "capacity": "25850000000000000000000", + "isEnabled": true, + "rate": "7175960000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "24950000000000000000000", + "isEnabled": true, + "rate": "6926120000000000000" + }, + "out": { + "capacity": "20300000000000000000000", + "isEnabled": true, + "rate": "5635280000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "ronin-mainnet": { + "custom": null, + "standard": null + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "19850000000000", + "isEnabled": true, + "rate": "5510360000" + }, + "out": { + "capacity": "17550000000000000000000", + "isEnabled": true, + "rate": "4871880000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000", + "isEnabled": true, + "rate": "13880000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + } + } + }, + "ethereum-mainnet-blast-1": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "30850000000000000000000", + "isEnabled": true, + "rate": "8563960000000000000" + }, + "out": { + "capacity": "28350000000000000000000", + "isEnabled": true, + "rate": "7869960000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "16100000000000000000000", + "isEnabled": true, + "rate": "4469360000000000000" + }, + "out": { + "capacity": "16150000000000000000000", + "isEnabled": true, + "rate": "4483240000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + } + } + }, + "ethereum-mainnet-mode-1": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "26750000000000000000000", + "isEnabled": true, + "rate": "7425800000000000000" + }, + "out": { + "capacity": "27100000000000000000000", + "isEnabled": true, + "rate": "7522960000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "30600000000000000000000", + "isEnabled": true, + "rate": "8494560000000000000" + }, + "out": { + "capacity": "25200000000000000000000", + "isEnabled": true, + "rate": "6995520000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + } + } + }, + "ethereum-mainnet-scroll-1": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "28600000000000000000000", + "isEnabled": true, + "rate": "7939360000000000000" + }, + "out": { + "capacity": "25950000000000000000000", + "isEnabled": true, + "rate": "7203720000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + } + } + }, + "ethereum-mainnet-zksync-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "19800000000000000000000", + "isEnabled": true, + "rate": "5496480000000000000" + }, + "out": { + "capacity": "24400000000000000000000", + "isEnabled": true, + "rate": "6773440000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + } + } + }, + "jovay-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "0g-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ab-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "aptos-mainnet": { + "custom": { + "in": { + "capacity": "1710000000000", + "isEnabled": true, + "rate": "474696000" + }, + "out": { + "capacity": "22100000000000000000000", + "isEnabled": true, + "rate": "6134960000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "celo-mainnet": { + "custom": { + "in": { + "capacity": "19600000000000000000000", + "isEnabled": true, + "rate": "5440960000000000000" + }, + "out": { + "capacity": "26250000000000000000000", + "isEnabled": true, + "rate": "7287000000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "ethereum-mainnet-andromeda-1": { + "custom": { + "in": { + "capacity": "17050000000000000000000", + "isEnabled": true, + "rate": "4733080000000000000" + }, + "out": { + "capacity": "29900000000000000000000", + "isEnabled": true, + "rate": "8300240000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "33650000000000000000000", + "isEnabled": true, + "rate": "9341240000000000000" + }, + "out": { + "capacity": "24250000000000000000000", + "isEnabled": true, + "rate": "6731800000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "ethereum-mainnet-blast-1": { + "custom": { + "in": { + "capacity": "23700000000000000000000", + "isEnabled": true, + "rate": "6579120000000000000" + }, + "out": { + "capacity": "32350000000000000000000", + "isEnabled": true, + "rate": "8980360000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "16950000000000000000000", + "isEnabled": true, + "rate": "4705320000000000000" + }, + "out": { + "capacity": "22950000000000000000000", + "isEnabled": true, + "rate": "6370920000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "ethereum-mainnet-scroll-1": { + "custom": { + "in": { + "capacity": "25500000000000000000000", + "isEnabled": true, + "rate": "7078800000000000000" + }, + "out": { + "capacity": "28350000000000000000000", + "isEnabled": true, + "rate": "7869960000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "20150000000000000000000", + "isEnabled": true, + "rate": "5593640000000000000" + }, + "out": { + "capacity": "20500000000000000000000", + "isEnabled": true, + "rate": "5690800000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "jovay-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "morph-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "polkadot-mainnet-astar": { + "custom": { + "in": { + "capacity": "31900000000000000000000", + "isEnabled": true, + "rate": "2953940000000000000" + }, + "out": { + "capacity": "28450000000000000000000", + "isEnabled": true, + "rate": "2634470000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + }, + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "22800000000000000000000", + "isEnabled": true, + "rate": "2111280000000000000" + }, + "out": { + "capacity": "25550000000000000000000", + "isEnabled": true, + "rate": "2365930000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "17550000000000", + "isEnabled": true, + "rate": "4871880000" + }, + "out": { + "capacity": "21750000000000000000000", + "isEnabled": true, + "rate": "6037800000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000", + "isEnabled": true, + "rate": "13880000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "31350000000000000000000", + "isEnabled": true, + "rate": "2903010000000000000" + }, + "out": { + "capacity": "30600000000000000000000", + "isEnabled": true, + "rate": "2833560000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "16250000000000000000000", + "isEnabled": true, + "rate": "1504750000000000000" + }, + "out": { + "capacity": "27450000000000000000000", + "isEnabled": true, + "rate": "2541870000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + }, + "stable-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "tac-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "19200000000000000000000", + "isEnabled": true, + "rate": "1777920000000000000" + }, + "out": { + "capacity": "33900000000000000000000", + "isEnabled": true, + "rate": "3139140000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + }, + "xdc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "morph-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "plasma-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "polkadot-mainnet-astar": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "21200000000000000000000", + "isEnabled": true, + "rate": "1963120000000000000" + }, + "out": { + "capacity": "26600000000000000000000", + "isEnabled": true, + "rate": "2463160000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "23850000000000000000000", + "isEnabled": true, + "rate": "2208510000000000000" + }, + "out": { + "capacity": "18600000000000000000000", + "isEnabled": true, + "rate": "1722360000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "28450000000000000000000", + "isEnabled": true, + "rate": "2634470000000000000" + }, + "out": { + "capacity": "27350000000000000000000", + "isEnabled": true, + "rate": "2532610000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "33250000000000000000000", + "isEnabled": true, + "rate": "3078950000000000000" + }, + "out": { + "capacity": "23750000000000000000000", + "isEnabled": true, + "rate": "2199250000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "21100000000000", + "isEnabled": true, + "rate": "5857360000" + }, + "out": { + "capacity": "20750000000000", + "isEnabled": true, + "rate": "5760200000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000", + "isEnabled": true, + "rate": "13880000000" + }, + "out": { + "capacity": "50000000000000", + "isEnabled": true, + "rate": "13880000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "25300000000000", + "isEnabled": true, + "rate": "7023280000" + }, + "out": { + "capacity": "30700000000000", + "isEnabled": true, + "rate": "8522320000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000", + "isEnabled": true, + "rate": "13880000000" + }, + "out": { + "capacity": "50000000000000", + "isEnabled": true, + "rate": "13880000000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "18300000000000", + "isEnabled": true, + "rate": "5080080000" + }, + "out": { + "capacity": "26100000000000", + "isEnabled": true, + "rate": "7245360000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000", + "isEnabled": true, + "rate": "13880000000" + }, + "out": { + "capacity": "50000000000000", + "isEnabled": true, + "rate": "13880000000" + } + } + } + } + }, + "soneium-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "28800000000000000000000", + "isEnabled": true, + "rate": "2666880000000000000" + }, + "out": { + "capacity": "18050000000000000000000", + "isEnabled": true, + "rate": "1671430000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + }, + "polkadot-mainnet-astar": { + "custom": { + "in": { + "capacity": "18250000000000000000000", + "isEnabled": true, + "rate": "1689950000000000000" + }, + "out": { + "capacity": "19350000000000000000000", + "isEnabled": true, + "rate": "1791810000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "aptos-mainnet": { + "custom": { + "in": { + "capacity": "2045000000000", + "isEnabled": true, + "rate": "567692000" + }, + "out": { + "capacity": "21000000000000000000000", + "isEnabled": true, + "rate": "5829600000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "22300000000000000000000", + "isEnabled": true, + "rate": "2064980000000000000" + }, + "out": { + "capacity": "16200000000000000000000", + "isEnabled": true, + "rate": "1500120000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "19650000000000", + "isEnabled": true, + "rate": "5454840000" + }, + "out": { + "capacity": "17400000000000000000000", + "isEnabled": true, + "rate": "4830240000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000", + "isEnabled": true, + "rate": "13880000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "13880000000000000000" + } + } + } + } + }, + "stable-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "tac-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "wemix-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "32900000000000000000000", + "isEnabled": true, + "rate": "3046540000000000000" + }, + "out": { + "capacity": "29200000000000000000000", + "isEnabled": true, + "rate": "2703920000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "4630000000000000000" + } + } + } + } + }, + "xdc-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "LsETH": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "LUA": { + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "LUAUSD": { + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "LUISA": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "shibarium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "LYP": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "matic-mainnet": { + "custom": { + "in": { + "capacity": "15100000000000000000000", + "isEnabled": true, + "rate": "25166666666656600000" + }, + "out": { + "capacity": "19000000000000000000000", + "isEnabled": true, + "rate": "31666666666654000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "83333333333300000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "83333333333300000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "19450000000000000000000", + "isEnabled": true, + "rate": "32416666666653700000" + }, + "out": { + "capacity": "20450000000000000000000", + "isEnabled": true, + "rate": "34083333333319700000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "83333333333300000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "83333333333300000000" + } + } + } + } + } + }, + "mBTC": { + "bsc-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "194000000", + "isEnabled": true, + "rate": "8981" + }, + "out": { + "capacity": "164800000", + "isEnabled": true, + "rate": "7629" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "170000000", + "isEnabled": true, + "rate": "7870" + }, + "out": { + "capacity": "213200000", + "isEnabled": true, + "rate": "9870" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "250400000", + "isEnabled": true, + "rate": "11592" + }, + "out": { + "capacity": "235200000", + "isEnabled": true, + "rate": "10888" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + }, + "ethereum-mainnet-zircuit-1": { + "custom": { + "in": { + "capacity": "222000000", + "isEnabled": true, + "rate": "10277" + }, + "out": { + "capacity": "122000000", + "isEnabled": true, + "rate": "5647" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "161600000", + "isEnabled": true, + "rate": "7481" + }, + "out": { + "capacity": "195200000", + "isEnabled": true, + "rate": "9036" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "132800000", + "isEnabled": true, + "rate": "6147" + }, + "out": { + "capacity": "228400000", + "isEnabled": true, + "rate": "10573" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + } + } + }, + "ethereum-mainnet-zircuit-1": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "246000000", + "isEnabled": true, + "rate": "11388" + }, + "out": { + "capacity": "267600000", + "isEnabled": true, + "rate": "12388" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "208400000", + "isEnabled": true, + "rate": "9647" + }, + "out": { + "capacity": "234800000", + "isEnabled": true, + "rate": "10870" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "132800000", + "isEnabled": true, + "rate": "6147" + }, + "out": { + "capacity": "266000000", + "isEnabled": true, + "rate": "12314" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + }, + "ethereum-mainnet-zircuit-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "157600000", + "isEnabled": true, + "rate": "7296" + }, + "out": { + "capacity": "135600000", + "isEnabled": true, + "rate": "6277" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "244800000", + "isEnabled": true, + "rate": "11333" + }, + "out": { + "capacity": "263200000", + "isEnabled": true, + "rate": "12184" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "136400000", + "isEnabled": true, + "rate": "6314" + }, + "out": { + "capacity": "214400000", + "isEnabled": true, + "rate": "9925" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "154800000", + "isEnabled": true, + "rate": "7166" + }, + "out": { + "capacity": "155200000", + "isEnabled": true, + "rate": "7184" + } + }, + "standard": { + "in": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + }, + "out": { + "capacity": "400000000", + "isEnabled": true, + "rate": "18518" + } + } + } + } + } + }, + "mDLP": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "280800000000000000000000", + "isEnabled": true, + "rate": "3246750000000000000" + }, + "out": { + "capacity": "187616000000000000000000", + "isEnabled": true, + "rate": "2169310000000000000" + } + }, + "standard": { + "in": { + "capacity": "416000000000000000000000", + "isEnabled": true, + "rate": "4810000000000000000" + }, + "out": { + "capacity": "416000000000000000000000", + "isEnabled": true, + "rate": "4810000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "279968000000000000000000", + "isEnabled": true, + "rate": "3237130000000000000" + }, + "out": { + "capacity": "173472000000000000000000", + "isEnabled": true, + "rate": "2005770000000000000" + } + }, + "standard": { + "in": { + "capacity": "416000000000000000000000", + "isEnabled": true, + "rate": "4810000000000000000" + }, + "out": { + "capacity": "416000000000000000000000", + "isEnabled": true, + "rate": "4810000000000000000" + } + } + } + } + } + }, + "MEEM": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "6120000000000000000000", + "isEnabled": true, + "rate": "1701360000000000000" + }, + "out": { + "capacity": "4140000000000000000000", + "isEnabled": true, + "rate": "1150920000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "2780000000000000000" + }, + "out": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "2780000000000000000" + } + } + } + } + } + }, + "Memento": { + "avalanche-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "300000000000000000000", + "isEnabled": true, + "rate": "3472200000000000" + }, + "out": { + "capacity": "356000000000000000000", + "isEnabled": true, + "rate": "4120344000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "433400000000000000000", + "isEnabled": true, + "rate": "5016203514000000" + }, + "out": { + "capacity": "452000000000000000000", + "isEnabled": true, + "rate": "5231448000000000" + } + }, + "standard": { + "in": { + "capacity": "1100000000000000000000", + "isEnabled": true, + "rate": "12731481000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "729300000000000000000", + "isEnabled": true, + "rate": "8440971903000000" + }, + "out": { + "capacity": "344000000000000000000", + "isEnabled": true, + "rate": "3981456000000000" + } + }, + "standard": { + "in": { + "capacity": "1100000000000000000000", + "isEnabled": true, + "rate": "12731481000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "742500000000000000000", + "isEnabled": true, + "rate": "8593749675000000" + }, + "out": { + "capacity": "478000000000000000000", + "isEnabled": true, + "rate": "5532372000000000" + } + }, + "standard": { + "in": { + "capacity": "1100000000000000000000", + "isEnabled": true, + "rate": "12731481000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "33275000000000000000000", + "isEnabled": true, + "rate": "385127314770000000" + }, + "out": { + "capacity": "18950000000000000000000", + "isEnabled": true, + "rate": "219328703816000000" + } + }, + "standard": { + "in": { + "capacity": "55000000000000000000000", + "isEnabled": true, + "rate": "636574074000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "578703704000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "701800000000000000000", + "isEnabled": true, + "rate": "8122684878000000" + }, + "out": { + "capacity": "674000000000000000000", + "isEnabled": true, + "rate": "7800876000000000" + } + }, + "standard": { + "in": { + "capacity": "1100000000000000000000", + "isEnabled": true, + "rate": "12731481000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 10, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "437800000000000000000", + "isEnabled": true, + "rate": "5067129438000000" + }, + "out": { + "capacity": "659000000000000000000", + "isEnabled": true, + "rate": "7627266000000000" + } + }, + "standard": { + "in": { + "capacity": "1100000000000000000000", + "isEnabled": true, + "rate": "12731481000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "19635000000000000000000", + "isEnabled": true, + "rate": "227256944418000000" + }, + "out": { + "capacity": "20650000000000000000000", + "isEnabled": true, + "rate": "239004629752000000" + } + }, + "standard": { + "in": { + "capacity": "55000000000000000000000", + "isEnabled": true, + "rate": "636574074000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "578703704000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "672100000000000000000", + "isEnabled": true, + "rate": "7778934891000000" + }, + "out": { + "capacity": "572000000000000000000", + "isEnabled": true, + "rate": "6620328000000000" + } + }, + "standard": { + "in": { + "capacity": "1100000000000000000000", + "isEnabled": true, + "rate": "12731481000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574000000000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "730400000000000000000", + "isEnabled": true, + "rate": "8453703384000000" + }, + "out": { + "capacity": "483000000000000000000", + "isEnabled": true, + "rate": "5590242000000000" + } + }, + "standard": { + "in": { + "capacity": "1100000000000000000000", + "isEnabled": true, + "rate": "12731481000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "695200000000000000000", + "isEnabled": true, + "rate": "8046295992000000" + }, + "out": { + "capacity": "415000000000000000000", + "isEnabled": true, + "rate": "4803210000000000" + } + }, + "standard": { + "in": { + "capacity": "1100000000000000000000", + "isEnabled": true, + "rate": "12731481000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "499400000000000000000", + "isEnabled": true, + "rate": "5780092374000000" + }, + "out": { + "capacity": "615000000000000000000", + "isEnabled": true, + "rate": "7118010000000000" + } + }, + "standard": { + "in": { + "capacity": "1100000000000000000000", + "isEnabled": true, + "rate": "12731481000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574000000000000" + } + } + } + } + } + }, + "METO": { + "bsc-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "matic-mainnet": { + "custom": { + "in": { + "capacity": "46307692354000000000000000", + "isEnabled": true, + "rate": "12863247040000000000000" + }, + "out": { + "capacity": "31000000031000000000000000", + "isEnabled": true, + "rate": "8611110560000000000000" + } + }, + "standard": { + "in": { + "capacity": "76923077000000000000000000", + "isEnabled": true, + "rate": "21367520000000000000000" + }, + "out": { + "capacity": "76923077000000000000000000", + "isEnabled": true, + "rate": "21367520000000000000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "38692307731000000000000000", + "isEnabled": true, + "rate": "10747862560000000000000" + }, + "out": { + "capacity": "35846153882000000000000000", + "isEnabled": true, + "rate": "9957264320000000000000" + } + }, + "standard": { + "in": { + "capacity": "76923077000000000000000000", + "isEnabled": true, + "rate": "21367520000000000000000" + }, + "out": { + "capacity": "76923077000000000000000000", + "isEnabled": true, + "rate": "21367520000000000000000" + } + } + } + } + } + }, + "MEW": { + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1610000000000", + "isEnabled": true, + "rate": "447222221" + }, + "out": { + "capacity": "2315000000000", + "isEnabled": true, + "rate": "643055555" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 2, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1980000000000", + "isEnabled": true, + "rate": "549999999" + }, + "out": { + "capacity": "2670000000000", + "isEnabled": true, + "rate": "741666666" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "2220000000000", + "isEnabled": true, + "rate": "616666666" + }, + "out": { + "capacity": "3005000000000", + "isEnabled": true, + "rate": "834722221" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "2045000000000", + "isEnabled": true, + "rate": "568055555" + }, + "out": { + "capacity": "2415000000000", + "isEnabled": true, + "rate": "670833332" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "3030000000000", + "isEnabled": true, + "rate": "841666666" + }, + "out": { + "capacity": "3415000000000", + "isEnabled": true, + "rate": "948611110" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "3310000000000", + "isEnabled": true, + "rate": "919444443" + }, + "out": { + "capacity": "3270000000000", + "isEnabled": true, + "rate": "908333332" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1980000000000", + "isEnabled": true, + "rate": "549999999" + }, + "out": { + "capacity": "2895000000000", + "isEnabled": true, + "rate": "804166666" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "3460000000000", + "isEnabled": true, + "rate": "961111110" + }, + "out": { + "capacity": "3345000000000", + "isEnabled": true, + "rate": "929166666" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "1388888888" + } + } + } + } + } + }, + "MICHI": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "5450000000000", + "isEnabled": true, + "rate": "42903609" + }, + "out": { + "capacity": "5870000000000", + "isEnabled": true, + "rate": "46209943" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "78722220" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "78722220" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "3680000000000", + "isEnabled": true, + "rate": "28969776" + }, + "out": { + "capacity": "4350000000000", + "isEnabled": true, + "rate": "34244165" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "78722220" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "78722220" + } + } + } + } + } + }, + "MILO": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "2430000000000000000000000", + "isEnabled": true, + "rate": "56249640000000000000" + }, + "out": { + "capacity": "3360000000000000000000000", + "isEnabled": true, + "rate": "77777280000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "115740000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "115740000000000000000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1560000000000000000000000", + "isEnabled": true, + "rate": "36110880000000000000" + }, + "out": { + "capacity": "2105000000000000000000000", + "isEnabled": true, + "rate": "48726540000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "115740000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "115740000000000000000" + } + } + } + } + } + }, + "mmETH": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "41300000000000000000", + "isEnabled": true, + "rate": "3824380000000000" + }, + "out": { + "capacity": "36600000000000000000", + "isEnabled": true, + "rate": "3389160000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "51800000000000000000", + "isEnabled": true, + "rate": "4796680000000000" + }, + "out": { + "capacity": "62000000000000000000", + "isEnabled": true, + "rate": "5741200000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + } + } + } + } + } + }, + "mstETH": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "62800000000000000000", + "isEnabled": true, + "rate": "5815280000000000" + }, + "out": { + "capacity": "30600000000000000000", + "isEnabled": true, + "rate": "2833560000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "69400000000000000000", + "isEnabled": true, + "rate": "6426440000000000" + }, + "out": { + "capacity": "40800000000000000000", + "isEnabled": true, + "rate": "3778080000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "54500000000000000000", + "isEnabled": true, + "rate": "5046700000000000" + }, + "out": { + "capacity": "64000000000000000000", + "isEnabled": true, + "rate": "5926400000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "42800000000000000000", + "isEnabled": true, + "rate": "3963280000000000" + }, + "out": { + "capacity": "57500000000000000000", + "isEnabled": true, + "rate": "5324500000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + } + } + } + } + } + }, + "mswETH": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "30700000000000000000", + "isEnabled": true, + "rate": "2842820000000000" + }, + "out": { + "capacity": "68700000000000000000", + "isEnabled": true, + "rate": "6361620000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "52800000000000000000", + "isEnabled": true, + "rate": "4889280000000000" + }, + "out": { + "capacity": "52000000000000000000", + "isEnabled": true, + "rate": "4815200000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "9260000000000000" + } + } + } + } + } + }, + "MVI": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "774367000000000000000", + "isEnabled": true, + "rate": "55760000000000000" + }, + "out": { + "capacity": "402182000000000000000", + "isEnabled": true, + "rate": "28960000000000000" + } + }, + "standard": { + "in": { + "capacity": "1111000000000000000000", + "isEnabled": true, + "rate": "80000000000000000" + }, + "out": { + "capacity": "1111000000000000000000", + "isEnabled": true, + "rate": "80000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "2203113000000000000000", + "isEnabled": true, + "rate": "152030000000000000" + }, + "out": { + "capacity": "1506516000000000000000", + "isEnabled": true, + "rate": "103960000000000000" + } + }, + "standard": { + "in": { + "capacity": "3333000000000000000000", + "isEnabled": true, + "rate": "230000000000000000" + }, + "out": { + "capacity": "3333000000000000000000", + "isEnabled": true, + "rate": "230000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "482174000000000000000", + "isEnabled": true, + "rate": "34720000000000000" + }, + "out": { + "capacity": "595496000000000000000", + "isEnabled": true, + "rate": "42880000000000000" + } + }, + "standard": { + "in": { + "capacity": "1111000000000000000000", + "isEnabled": true, + "rate": "80000000000000000" + }, + "out": { + "capacity": "1111000000000000000000", + "isEnabled": true, + "rate": "80000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "564388000000000000000", + "isEnabled": true, + "rate": "40640000000000000" + }, + "out": { + "capacity": "539946000000000000000", + "isEnabled": true, + "rate": "38880000000000000" + } + }, + "standard": { + "in": { + "capacity": "1111000000000000000000", + "isEnabled": true, + "rate": "80000000000000000" + }, + "out": { + "capacity": "1111000000000000000000", + "isEnabled": true, + "rate": "80000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1739826000000000000000", + "isEnabled": true, + "rate": "120060000000000000" + }, + "out": { + "capacity": "1566510000000000000000", + "isEnabled": true, + "rate": "108100000000000000" + } + }, + "standard": { + "in": { + "capacity": "3333000000000000000000", + "isEnabled": true, + "rate": "230000000000000000" + }, + "out": { + "capacity": "3333000000000000000000", + "isEnabled": true, + "rate": "230000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "586608000000000000000", + "isEnabled": true, + "rate": "42240000000000000" + }, + "out": { + "capacity": "553278000000000000000", + "isEnabled": true, + "rate": "39840000000000000" + } + }, + "standard": { + "in": { + "capacity": "1111000000000000000000", + "isEnabled": true, + "rate": "80000000000000000" + }, + "out": { + "capacity": "1111000000000000000000", + "isEnabled": true, + "rate": "80000000000000000" + } + } + } + } + } + }, + "mwBETH": { + "bsc-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "336500000000000000000", + "isEnabled": true, + "rate": "30958000000000000" + }, + "out": { + "capacity": "262000000000000000000", + "isEnabled": true, + "rate": "24104000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000", + "isEnabled": true, + "rate": "46000000000000000" + }, + "out": { + "capacity": "500000000000000000000", + "isEnabled": true, + "rate": "46000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "329500000000000000000", + "isEnabled": true, + "rate": "30314000000000000" + }, + "out": { + "capacity": "211500000000000000000", + "isEnabled": true, + "rate": "19458000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000", + "isEnabled": true, + "rate": "46000000000000000" + }, + "out": { + "capacity": "500000000000000000000", + "isEnabled": true, + "rate": "46000000000000000" + } + } + } + } + } + }, + "MYST": { + "avalanche-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "NEIRO": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "NEKO": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 8, + "remote": { + "shibarium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "NPC": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "NUON": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "45700000000000000000000", + "isEnabled": true, + "rate": "25386350000000000000" + }, + "out": { + "capacity": "55300000000000000000000", + "isEnabled": true, + "rate": "30719150000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "44600000000000000000000", + "isEnabled": true, + "rate": "24775300000000000000" + }, + "out": { + "capacity": "42700000000000000000000", + "isEnabled": true, + "rate": "23719850000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "51000000000000000000000", + "isEnabled": true, + "rate": "28330500000000000000" + }, + "out": { + "capacity": "34800000000000000000000", + "isEnabled": true, + "rate": "19331400000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "55400000000000000000000", + "isEnabled": true, + "rate": "30774700000000000000" + }, + "out": { + "capacity": "58900000000000000000000", + "isEnabled": true, + "rate": "32718950000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "62000000000000000000000", + "isEnabled": true, + "rate": "34441000000000000000" + }, + "out": { + "capacity": "48300000000000000000000", + "isEnabled": true, + "rate": "26830650000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "54500000000000000000000", + "isEnabled": true, + "rate": "30274750000000000000" + }, + "out": { + "capacity": "45700000000000000000000", + "isEnabled": true, + "rate": "25386350000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + } + } + } + }, + "NXPC": { + "avalanche-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "OHM": { + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "ORNG": { + "avalanche-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "OSIS": { + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "matic-mainnet": { + "custom": { + "in": { + "capacity": "11250225000000000000000", + "isEnabled": true, + "rate": "3105000000000000000" + }, + "out": { + "capacity": "5266772000000000000000", + "isEnabled": true, + "rate": "1453600000000000000" + } + }, + "standard": { + "in": { + "capacity": "16667000000000000000000", + "isEnabled": true, + "rate": "4600000000000000000" + }, + "out": { + "capacity": "16667000000000000000000", + "isEnabled": true, + "rate": "4600000000000000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "7616819000000000000000", + "isEnabled": true, + "rate": "2102200000000000000" + }, + "out": { + "capacity": "7516817000000000000000", + "isEnabled": true, + "rate": "2074600000000000000" + } + }, + "standard": { + "in": { + "capacity": "16667000000000000000000", + "isEnabled": true, + "rate": "4600000000000000000" + }, + "out": { + "capacity": "16667000000000000000000", + "isEnabled": true, + "rate": "4600000000000000000" + } + } + } + } + } + }, + "OVER": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "oXAUT": { + "avalanche-mainnet": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "6730000000000", + "isEnabled": true, + "rate": "3365000000" + }, + "out": { + "capacity": "6670000000000", + "isEnabled": true, + "rate": "3335000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + } + } + }, + "ethereum-mainnet-worldchain-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "6040000000000", + "isEnabled": true, + "rate": "3020000000" + }, + "out": { + "capacity": "3660000000000", + "isEnabled": true, + "rate": "1830000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "4170000000000", + "isEnabled": true, + "rate": "2085000000" + }, + "out": { + "capacity": "5240000000000", + "isEnabled": true, + "rate": "2620000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "5400000000000", + "isEnabled": true, + "rate": "2700000000" + }, + "out": { + "capacity": "4830000000000", + "isEnabled": true, + "rate": "2415000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-worldchain-1": { + "custom": { + "in": { + "capacity": "3950000000000", + "isEnabled": true, + "rate": "1975000000" + }, + "out": { + "capacity": "4760000000000", + "isEnabled": true, + "rate": "2380000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + } + } + } + }, + "PEPE": { + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "28300000000000000000", + "isEnabled": true, + "rate": "7861111111111111" + }, + "out": { + "capacity": "26800000000000000000000000000", + "isEnabled": true, + "rate": "7444444444444445040000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000", + "isEnabled": true, + "rate": "13888888888888890" + }, + "out": { + "capacity": "50000000000000000000000000000", + "isEnabled": true, + "rate": "13888888888888890000000000" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "320000000000000", + "isEnabled": true, + "rate": "88888888888" + }, + "out": { + "capacity": "316500000000000", + "isEnabled": true, + "rate": "87916666666" + } + }, + "standard": { + "in": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "138888888889" + }, + "out": { + "capacity": "500000000000000", + "isEnabled": true, + "rate": "138888888889" + } + } + } + } + } + }, + "PFVS": { + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "pippin": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 9, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "PIXEL": { + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "139200000000000000000000000", + "isEnabled": true, + "rate": "1611111100800000000000" + }, + "out": { + "capacity": "103140000000000000000000000", + "isEnabled": true, + "rate": "1193750000000000000000" + } + }, + "standard": { + "in": { + "capacity": "300000000000000000000000000", + "isEnabled": true, + "rate": "3472222200000000000000" + }, + "out": { + "capacity": "270000000000000000000000000", + "isEnabled": true, + "rate": "3125000000000000000000" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "203700000000000000000000000", + "isEnabled": true, + "rate": "2357638873800000000000" + }, + "out": { + "capacity": "99900000000000000000000000", + "isEnabled": true, + "rate": "1156250000000000000000" + } + }, + "standard": { + "in": { + "capacity": "300000000000000000000000000", + "isEnabled": true, + "rate": "3472222200000000000000" + }, + "out": { + "capacity": "270000000000000000000000000", + "isEnabled": true, + "rate": "3125000000000000000000" + } + } + } + } + } + }, + "PTsUSDE": { + "mainnet": { + "minBlockConfirmation": 10, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "pufETH": { + "berachain-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "soneium-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "RDP": { + "bsc-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "23600000000000000000000", + "isEnabled": true, + "rate": "273760000000000000" + }, + "out": { + "capacity": "22900000000000000000000", + "isEnabled": true, + "rate": "265640000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "580000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "580000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "24050000000000000000000", + "isEnabled": true, + "rate": "278980000000000000" + }, + "out": { + "capacity": "16350000000000000000000", + "isEnabled": true, + "rate": "189660000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "580000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "580000000000000000" + } + } + } + } + } + }, + "REG": { + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "matic-mainnet": { + "custom": { + "in": { + "capacity": "25650000000000000000000", + "isEnabled": true, + "rate": "7182000000000000000" + }, + "out": { + "capacity": "20300000000000000000000", + "isEnabled": true, + "rate": "5684000000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + } + } + }, + "xdai-mainnet": { + "custom": { + "in": { + "capacity": "18450000000000000000000", + "isEnabled": true, + "rate": "5166000000000000000" + }, + "out": { + "capacity": "22450000000000000000000", + "isEnabled": true, + "rate": "6286000000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "20650000000000000000000", + "isEnabled": true, + "rate": "5782000000000000000" + }, + "out": { + "capacity": "31050000000000000000000", + "isEnabled": true, + "rate": "8694000000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + } + } + }, + "xdai-mainnet": { + "custom": { + "in": { + "capacity": "21050000000000000000000", + "isEnabled": true, + "rate": "5894000000000000000" + }, + "out": { + "capacity": "27850000000000000000000", + "isEnabled": true, + "rate": "7798000000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + } + } + } + } + }, + "xdai-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "21050000000000000000000", + "isEnabled": true, + "rate": "5894000000000000000" + }, + "out": { + "capacity": "24850000000000000000000", + "isEnabled": true, + "rate": "6958000000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "31450000000000000000000", + "isEnabled": true, + "rate": "8806000000000000000" + }, + "out": { + "capacity": "31250000000000000000000", + "isEnabled": true, + "rate": "8750000000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "14000000000000000000" + } + } + } + } + } + }, + "RETH": { + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "909000000000000000000", + "isEnabled": true, + "rate": "2922435000000000" + }, + "out": { + "capacity": "765000000000000000000", + "isEnabled": true, + "rate": "2459475000000000" + } + }, + "standard": { + "in": { + "capacity": "1800000000000000000000", + "isEnabled": true, + "rate": "5787000000000000" + }, + "out": { + "capacity": "1800000000000000000000", + "isEnabled": true, + "rate": "5787000000000000" + } + } + }, + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "720000000000000000000", + "isEnabled": true, + "rate": "2314800000000000" + }, + "out": { + "capacity": "1209600000000000000000", + "isEnabled": true, + "rate": "3888864000000000" + } + }, + "standard": { + "in": { + "capacity": "1800000000000000000000", + "isEnabled": true, + "rate": "5787000000000000" + }, + "out": { + "capacity": "1800000000000000000000", + "isEnabled": true, + "rate": "5787000000000000" + } + } + }, + "tac-mainnet": { + "custom": null, + "standard": null + } + } + }, + "plasma-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "925200000000000000000", + "isEnabled": true, + "rate": "2974518000000000" + }, + "out": { + "capacity": "864000000000000000000", + "isEnabled": true, + "rate": "2777760000000000" + } + }, + "standard": { + "in": { + "capacity": "1800000000000000000000", + "isEnabled": true, + "rate": "5787000000000000" + }, + "out": { + "capacity": "1800000000000000000000", + "isEnabled": true, + "rate": "5787000000000000" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "833400000000000000000", + "isEnabled": true, + "rate": "2679381000000000" + }, + "out": { + "capacity": "709200000000000000000", + "isEnabled": true, + "rate": "2280078000000000" + } + }, + "standard": { + "in": { + "capacity": "1800000000000000000000", + "isEnabled": true, + "rate": "5787000000000000" + }, + "out": { + "capacity": "1800000000000000000000", + "isEnabled": true, + "rate": "5787000000000000" + } + } + } + } + }, + "tac-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1117800000000000000000", + "isEnabled": true, + "rate": "3593727000000000" + }, + "out": { + "capacity": "1206000000000000000000", + "isEnabled": true, + "rate": "3877290000000000" + } + }, + "standard": { + "in": { + "capacity": "1800000000000000000000", + "isEnabled": true, + "rate": "5787000000000000" + }, + "out": { + "capacity": "1800000000000000000000", + "isEnabled": true, + "rate": "5787000000000000" + } + } + } + } + } + }, + "RIZE": { + "bsc-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 7, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "rsETH": { + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-zircuit-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-zircuit-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-zircuit-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-zircuit-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "SAS": { + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "shibarium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "bsc-mainnet": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "shibarium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "savBTC": { + "avalanche-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "savETH": { + "avalanche-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "savUSD": { + "avalanche-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "polygon-mainnet-katana": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "polygon-mainnet-katana": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 8, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "polygon-mainnet-katana": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "plasma-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "polygon-mainnet-katana": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "SD": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "204288000000000000000000", + "isEnabled": true, + "rate": "2364208000000000000" + }, + "out": { + "capacity": "181248000000000000000000", + "isEnabled": true, + "rate": "2097568000000000000" + } + }, + "standard": { + "in": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + }, + "out": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "139008000000000000000000", + "isEnabled": true, + "rate": "1608728000000000000" + }, + "out": { + "capacity": "221952000000000000000000", + "isEnabled": true, + "rate": "2568632000000000000" + } + }, + "standard": { + "in": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + }, + "out": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "135552000000000000000000", + "isEnabled": true, + "rate": "1568732000000000000" + }, + "out": { + "capacity": "121344000000000000000000", + "isEnabled": true, + "rate": "1404304000000000000" + } + }, + "standard": { + "in": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + }, + "out": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "185856000000000000000000", + "isEnabled": true, + "rate": "2150896000000000000" + }, + "out": { + "capacity": "220032000000000000000000", + "isEnabled": true, + "rate": "2546412000000000000" + } + }, + "standard": { + "in": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + }, + "out": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "235776000000000000000000", + "isEnabled": true, + "rate": "2728616000000000000" + }, + "out": { + "capacity": "203904000000000000000000", + "isEnabled": true, + "rate": "2359764000000000000" + } + }, + "standard": { + "in": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + }, + "out": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "268032000000000000000000", + "isEnabled": true, + "rate": "3101912000000000000" + }, + "out": { + "capacity": "248064000000000000000000", + "isEnabled": true, + "rate": "2870824000000000000" + } + }, + "standard": { + "in": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + }, + "out": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4444000000000000000" + } + } + } + } + } + }, + "sDAI": { + "ethereum-mainnet-mode-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "135500000000000000000000", + "isEnabled": true, + "rate": "37614800000000000000" + }, + "out": { + "capacity": "133250000000000000000000", + "isEnabled": true, + "rate": "36990200000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "69400000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "69400000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "133000000000000000000000", + "isEnabled": true, + "rate": "36920800000000000000" + }, + "out": { + "capacity": "82500000000000000000000", + "isEnabled": true, + "rate": "22902000000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "69400000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "69400000000000000000" + } + } + } + } + } + }, + "SDL": { + "ethereum-mainnet-andromeda-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "302250000000000000000000", + "isEnabled": true, + "rate": "83622500000000000000" + }, + "out": { + "capacity": "436500000000000000000000", + "isEnabled": true, + "rate": "120765000000000000000" + } + }, + "standard": { + "in": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "207500000000000000000" + }, + "out": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "207500000000000000000" + } + } + }, + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-andromeda-1": { + "custom": { + "in": { + "capacity": "311250000000000000000000", + "isEnabled": true, + "rate": "86112500000000000000" + }, + "out": { + "capacity": "444750000000000000000000", + "isEnabled": true, + "rate": "123047500000000000000" + } + }, + "standard": { + "in": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "207500000000000000000" + }, + "out": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "207500000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "331500000000000000000000", + "isEnabled": true, + "rate": "91715000000000000000" + }, + "out": { + "capacity": "261750000000000000000000", + "isEnabled": true, + "rate": "72417500000000000000" + } + }, + "standard": { + "in": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "207500000000000000000" + }, + "out": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "207500000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-andromeda-1": { + "custom": { + "in": { + "capacity": "353250000000000000000000", + "isEnabled": true, + "rate": "97732500000000000000" + }, + "out": { + "capacity": "327750000000000000000000", + "isEnabled": true, + "rate": "90677500000000000000" + } + }, + "standard": { + "in": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "207500000000000000000" + }, + "out": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "207500000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "378750000000000000000000", + "isEnabled": true, + "rate": "104787500000000000000" + }, + "out": { + "capacity": "240750000000000000000000", + "isEnabled": true, + "rate": "66607500000000000000" + } + }, + "standard": { + "in": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "207500000000000000000" + }, + "out": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "207500000000000000000" + } + } + } + } + } + }, + "SDM": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 10, + "remote": { + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": null, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": null, + "standard": null + } + } + } + }, + "sDOLA": { + "berachain-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 9, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 9, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "SDT": { + "bsc-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "345500000000000000000000", + "isEnabled": true, + "rate": "95966080000000000000" + }, + "out": { + "capacity": "245000000000000000000000", + "isEnabled": true, + "rate": "68051200000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "138880000000000000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "138880000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "174500000000000000000000", + "isEnabled": true, + "rate": "48469120000000000000" + }, + "out": { + "capacity": "342500000000000000000000", + "isEnabled": true, + "rate": "95132800000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "138880000000000000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "138880000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "326500000000000000000000", + "isEnabled": true, + "rate": "90688640000000000000" + }, + "out": { + "capacity": "292000000000000000000000", + "isEnabled": true, + "rate": "81105920000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "138880000000000000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "138880000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "314500000000000000000000", + "isEnabled": true, + "rate": "87355520000000000000" + }, + "out": { + "capacity": "222000000000000000000000", + "isEnabled": true, + "rate": "61662720000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "138880000000000000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "138880000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "246000000000000000000000", + "isEnabled": true, + "rate": "68328960000000000000" + }, + "out": { + "capacity": "287500000000000000000000", + "isEnabled": true, + "rate": "79856000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "138880000000000000000" + }, + "out": { + "capacity": "500000000000000000000000", + "isEnabled": true, + "rate": "138880000000000000000" + } + } + } + } + } + }, + "SDY": { + "avalanche-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1680000000000000000000000", + "isEnabled": true, + "rate": "19488000000000000000" + }, + "out": { + "capacity": "2880000000000000000000000", + "isEnabled": true, + "rate": "33408000000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "3240000000000000000000000", + "isEnabled": true, + "rate": "37584000000000000000" + }, + "out": { + "capacity": "2095000000000000000000000", + "isEnabled": true, + "rate": "24302000000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "3040000000000000000000000", + "isEnabled": true, + "rate": "35264000000000000000" + }, + "out": { + "capacity": "1780000000000000000000000", + "isEnabled": true, + "rate": "20648000000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 10, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "3420000000000000000000000", + "isEnabled": true, + "rate": "39672000000000000000" + }, + "out": { + "capacity": "3270000000000000000000000", + "isEnabled": true, + "rate": "37932000000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "2640000000000000000000000", + "isEnabled": true, + "rate": "30624000000000000000" + }, + "out": { + "capacity": "3215000000000000000000000", + "isEnabled": true, + "rate": "37294000000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "58000000000000000000" + } + } + } + } + } + }, + "SHIB": { + "avalanche-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "celo-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-andromeda-1": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-blast-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-mantle-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-mode-1": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-scroll-1": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-zircuit-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-zksync-1": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "celo-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-andromeda-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-blast-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-mantle-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-scroll-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-zircuit-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "polkadot-mainnet-astar": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "xdai-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "polkadot-mainnet-astar": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "wemix-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "xdai-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "SHIPA": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": null, + "remote": { + "shibarium-mainnet": { + "custom": null, + "standard": null + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "SHIRO": { + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "shibarium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "SILO": { + "avalanche-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "sINV": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "6230000000000000000000", + "isEnabled": true, + "rate": "68530000000000000" + }, + "out": { + "capacity": "6970000000000000000000", + "isEnabled": true, + "rate": "76670000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + }, + "out": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "4090000000000000000000", + "isEnabled": true, + "rate": "44990000000000000" + }, + "out": { + "capacity": "5190000000000000000000", + "isEnabled": true, + "rate": "57090000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + }, + "out": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "6020000000000000000000", + "isEnabled": true, + "rate": "66220000000000000" + }, + "out": { + "capacity": "5920000000000000000000", + "isEnabled": true, + "rate": "65120000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + }, + "out": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "5780000000000000000000", + "isEnabled": true, + "rate": "63580000000000000" + }, + "out": { + "capacity": "5340000000000000000000", + "isEnabled": true, + "rate": "58740000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + }, + "out": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "6800000000000000000000", + "isEnabled": true, + "rate": "74800000000000000" + }, + "out": { + "capacity": "3700000000000000000000", + "isEnabled": true, + "rate": "40700000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + }, + "out": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "3170000000000000000000", + "isEnabled": true, + "rate": "34870000000000000" + }, + "out": { + "capacity": "6150000000000000000000", + "isEnabled": true, + "rate": "67650000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + }, + "out": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "5490000000000000000000", + "isEnabled": true, + "rate": "60390000000000000" + }, + "out": { + "capacity": "5850000000000000000000", + "isEnabled": true, + "rate": "64350000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + }, + "out": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "3670000000000000000000", + "isEnabled": true, + "rate": "40370000000000000" + }, + "out": { + "capacity": "6250000000000000000000", + "isEnabled": true, + "rate": "68750000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + }, + "out": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "4580000000000000000000", + "isEnabled": true, + "rate": "50380000000000000" + }, + "out": { + "capacity": "4720000000000000000000", + "isEnabled": true, + "rate": "51920000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + }, + "out": { + "capacity": "10000000000000000000000", + "isEnabled": true, + "rate": "110000000000000000" + } + } + } + } + } + }, + "SKYA": { + "bsc-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "soneium-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "SNOW": { + "bsc-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 10, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "shibarium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "SOIL": { + "mainnet": { + "minBlockConfirmation": 10, + "remote": { + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "SolvBTC": { + "avalanche-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1085000000000000000", + "isEnabled": true, + "rate": "50231160000000" + }, + "out": { + "capacity": "1522500000000000000", + "isEnabled": true, + "rate": "70485660000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1030000000000000000", + "isEnabled": true, + "rate": "47684880000000" + }, + "out": { + "capacity": "1645000000000000000", + "isEnabled": true, + "rate": "76156920000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1045000000000000000", + "isEnabled": true, + "rate": "48379320000000" + }, + "out": { + "capacity": "1497500000000000000", + "isEnabled": true, + "rate": "69328260000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1500000000000000000", + "isEnabled": true, + "rate": "69444000000000" + }, + "out": { + "capacity": "1662500000000000000", + "isEnabled": true, + "rate": "76967100000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1705000000000000000", + "isEnabled": true, + "rate": "78934680000000" + }, + "out": { + "capacity": "1662500000000000000", + "isEnabled": true, + "rate": "76967100000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "860000000000000000", + "isEnabled": true, + "rate": "39814560000000" + }, + "out": { + "capacity": "897500000000000000", + "isEnabled": true, + "rate": "41550660000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1185000000000000000", + "isEnabled": true, + "rate": "54860760000000" + }, + "out": { + "capacity": "965000000000000000", + "isEnabled": true, + "rate": "44675640000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "837500000000000000", + "isEnabled": true, + "rate": "38772900000000" + }, + "out": { + "capacity": "1055000000000000000", + "isEnabled": true, + "rate": "48842280000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1027500000000000000", + "isEnabled": true, + "rate": "47569140000000" + }, + "out": { + "capacity": "1575000000000000000", + "isEnabled": true, + "rate": "72916200000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "berachain-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1197500000000000000", + "isEnabled": true, + "rate": "55439460000000" + }, + "out": { + "capacity": "1255000000000000000", + "isEnabled": true, + "rate": "58101480000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1122500000000000000", + "isEnabled": true, + "rate": "51967260000000" + }, + "out": { + "capacity": "1412500000000000000", + "isEnabled": true, + "rate": "65393100000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1225000000000000000", + "isEnabled": true, + "rate": "56712600000000" + }, + "out": { + "capacity": "1372500000000000000", + "isEnabled": true, + "rate": "63541260000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "bitcoin-mainnet-bob-1": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1602500000000000000", + "isEnabled": true, + "rate": "74189340000000" + }, + "out": { + "capacity": "1192500000000000000", + "isEnabled": true, + "rate": "55207980000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "782500000000000000", + "isEnabled": true, + "rate": "36226620000000" + }, + "out": { + "capacity": "1567500000000000000", + "isEnabled": true, + "rate": "72568980000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1167500000000000000", + "isEnabled": true, + "rate": "54050580000000" + }, + "out": { + "capacity": "847500000000000000", + "isEnabled": true, + "rate": "39235860000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1585000000000000000", + "isEnabled": true, + "rate": "73379160000000" + }, + "out": { + "capacity": "885000000000000000", + "isEnabled": true, + "rate": "40971960000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "835000000000000000", + "isEnabled": true, + "rate": "38657160000000" + }, + "out": { + "capacity": "1297500000000000000", + "isEnabled": true, + "rate": "60069060000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1645000000000000000", + "isEnabled": true, + "rate": "76156920000000" + }, + "out": { + "capacity": "1675000000000000000", + "isEnabled": true, + "rate": "77545800000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1042500000000000000", + "isEnabled": true, + "rate": "48263580000000" + }, + "out": { + "capacity": "1277500000000000000", + "isEnabled": true, + "rate": "59143140000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "817500000000000000", + "isEnabled": true, + "rate": "37846980000000" + }, + "out": { + "capacity": "1067500000000000000", + "isEnabled": true, + "rate": "49420980000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1142500000000000000", + "isEnabled": true, + "rate": "52893180000000" + }, + "out": { + "capacity": "997500000000000000", + "isEnabled": true, + "rate": "46180260000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "927500000000000000", + "isEnabled": true, + "rate": "42939540000000" + }, + "out": { + "capacity": "1227500000000000000", + "isEnabled": true, + "rate": "56828340000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1255000000000000000", + "isEnabled": true, + "rate": "58101480000000" + }, + "out": { + "capacity": "765000000000000000", + "isEnabled": true, + "rate": "35416440000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1255000000000000000", + "isEnabled": true, + "rate": "58101480000000" + }, + "out": { + "capacity": "1140000000000000000", + "isEnabled": true, + "rate": "52777440000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1230000000000000000", + "isEnabled": true, + "rate": "56944080000000" + }, + "out": { + "capacity": "1137500000000000000", + "isEnabled": true, + "rate": "52661700000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1492500000000000000", + "isEnabled": true, + "rate": "69096780000000" + }, + "out": { + "capacity": "930000000000000000", + "isEnabled": true, + "rate": "43055280000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1735000000000000000", + "isEnabled": true, + "rate": "80323560000000" + }, + "out": { + "capacity": "1460000000000000000", + "isEnabled": true, + "rate": "67592160000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1745000000000000000", + "isEnabled": true, + "rate": "80786520000000" + }, + "out": { + "capacity": "1547500000000000000", + "isEnabled": true, + "rate": "71643060000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1610000000000000000", + "isEnabled": true, + "rate": "74536560000000" + }, + "out": { + "capacity": "762500000000000000", + "isEnabled": true, + "rate": "35300700000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1282500000000000000", + "isEnabled": true, + "rate": "59374620000000" + }, + "out": { + "capacity": "1015000000000000000", + "isEnabled": true, + "rate": "46990440000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1467500000000000000", + "isEnabled": true, + "rate": "67939380000000" + }, + "out": { + "capacity": "1135000000000000000", + "isEnabled": true, + "rate": "52545960000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "1435000000000000000", + "isEnabled": true, + "rate": "66434760000000" + }, + "out": { + "capacity": "1347500000000000000", + "isEnabled": true, + "rate": "62383860000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1520000000000000000", + "isEnabled": true, + "rate": "70369920000000" + }, + "out": { + "capacity": "1327500000000000000", + "isEnabled": true, + "rate": "61457940000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": null, + "standard": null + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "875000000000000000", + "isEnabled": true, + "rate": "40509000000000" + }, + "out": { + "capacity": "1392500000000000000", + "isEnabled": true, + "rate": "64467180000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "251250000", + "isEnabled": true, + "rate": "11631" + }, + "out": { + "capacity": "2977500000000000000", + "isEnabled": true, + "rate": "137846340000000" + } + }, + "standard": { + "in": { + "capacity": "750000000", + "isEnabled": true, + "rate": "34722" + }, + "out": { + "capacity": "7500000000000000000", + "isEnabled": true, + "rate": "347220000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1437500000000000000", + "isEnabled": true, + "rate": "66550500000000" + }, + "out": { + "capacity": "840000000000000000", + "isEnabled": true, + "rate": "38888640000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": null, + "standard": null + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1330000000000000000", + "isEnabled": true, + "rate": "61573680000000" + }, + "out": { + "capacity": "1270000000000000000", + "isEnabled": true, + "rate": "58795920000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1197500000000000000", + "isEnabled": true, + "rate": "55439460000000" + }, + "out": { + "capacity": "1667500000000000000", + "isEnabled": true, + "rate": "77198580000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1382500000000000000", + "isEnabled": true, + "rate": "64004220000000" + }, + "out": { + "capacity": "1570000000000000000", + "isEnabled": true, + "rate": "72684720000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1447500000000000000", + "isEnabled": true, + "rate": "67013460000000" + }, + "out": { + "capacity": "1380000000000000000", + "isEnabled": true, + "rate": "63888480000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1217500000000000000", + "isEnabled": true, + "rate": "56365380000000" + }, + "out": { + "capacity": "1287500000000000000", + "isEnabled": true, + "rate": "59606100000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "952500000000000000", + "isEnabled": true, + "rate": "44096940000000" + }, + "out": { + "capacity": "1172500000000000000", + "isEnabled": true, + "rate": "54282060000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 7, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1035000000000000000", + "isEnabled": true, + "rate": "47916360000000" + }, + "out": { + "capacity": "980000000000000000", + "isEnabled": true, + "rate": "45370080000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1652500000000000000", + "isEnabled": true, + "rate": "76504140000000" + }, + "out": { + "capacity": "1105000000000000000", + "isEnabled": true, + "rate": "51157080000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1565000000000000000", + "isEnabled": true, + "rate": "72453240000000" + }, + "out": { + "capacity": "780000000000000000", + "isEnabled": true, + "rate": "36110880000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1582500000000000000", + "isEnabled": true, + "rate": "73263420000000" + }, + "out": { + "capacity": "980000000000000000", + "isEnabled": true, + "rate": "45370080000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1140000000000000000", + "isEnabled": true, + "rate": "52777440000000" + }, + "out": { + "capacity": "847500000000000000", + "isEnabled": true, + "rate": "39235860000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1675000000000000000", + "isEnabled": true, + "rate": "77545800000000" + }, + "out": { + "capacity": "1602500000000000000", + "isEnabled": true, + "rate": "74189340000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1062500000000000000", + "isEnabled": true, + "rate": "49189500000000" + }, + "out": { + "capacity": "1145000000000000000", + "isEnabled": true, + "rate": "53008920000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1090000000000000000", + "isEnabled": true, + "rate": "50462640000000" + }, + "out": { + "capacity": "1430000000000000000", + "isEnabled": true, + "rate": "66203280000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "ethereum-mainnet-ink-1": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1450000000000000000", + "isEnabled": true, + "rate": "67129200000000" + }, + "out": { + "capacity": "1145000000000000000", + "isEnabled": true, + "rate": "53008920000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1730000000000000000", + "isEnabled": true, + "rate": "80092080000000" + }, + "out": { + "capacity": "1547500000000000000", + "isEnabled": true, + "rate": "71643060000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "987500000000000000", + "isEnabled": true, + "rate": "45717300000000" + }, + "out": { + "capacity": "895000000000000000", + "isEnabled": true, + "rate": "41434920000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1135000000000000000", + "isEnabled": true, + "rate": "52545960000000" + }, + "out": { + "capacity": "907500000000000000", + "isEnabled": true, + "rate": "42013620000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1560000000000000000", + "isEnabled": true, + "rate": "72221760000000" + }, + "out": { + "capacity": "1277500000000000000", + "isEnabled": true, + "rate": "59143140000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1285000000000000000", + "isEnabled": true, + "rate": "59490360000000" + }, + "out": { + "capacity": "1300000000000000000", + "isEnabled": true, + "rate": "60184800000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "1727500000000000000", + "isEnabled": true, + "rate": "79976340000000" + }, + "out": { + "capacity": "1155000000000000000", + "isEnabled": true, + "rate": "53471880000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1270000000000000000", + "isEnabled": true, + "rate": "58795920000000" + }, + "out": { + "capacity": "1277500000000000000", + "isEnabled": true, + "rate": "59143140000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1285000000000000000", + "isEnabled": true, + "rate": "59490360000000" + }, + "out": { + "capacity": "1477500000000000000", + "isEnabled": true, + "rate": "68402340000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1400000000000000000", + "isEnabled": true, + "rate": "64814400000000" + }, + "out": { + "capacity": "850000000000000000", + "isEnabled": true, + "rate": "39351600000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1012500000000000000", + "isEnabled": true, + "rate": "46874700000000" + }, + "out": { + "capacity": "827500000000000000", + "isEnabled": true, + "rate": "38309940000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1077500000000000000", + "isEnabled": true, + "rate": "49883940000000" + }, + "out": { + "capacity": "1432500000000000000", + "isEnabled": true, + "rate": "66319020000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1175000000000000000", + "isEnabled": true, + "rate": "54397800000000" + }, + "out": { + "capacity": "1462500000000000000", + "isEnabled": true, + "rate": "67707900000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "817500000000000000", + "isEnabled": true, + "rate": "37846980000000" + }, + "out": { + "capacity": "817500000000000000", + "isEnabled": true, + "rate": "37846980000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1047500000000000000", + "isEnabled": true, + "rate": "48495060000000" + }, + "out": { + "capacity": "942500000000000000", + "isEnabled": true, + "rate": "43633980000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "937500000000000000", + "isEnabled": true, + "rate": "43402500000000" + }, + "out": { + "capacity": "1155000000000000000", + "isEnabled": true, + "rate": "53471880000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1202500000000000000", + "isEnabled": true, + "rate": "55670940000000" + }, + "out": { + "capacity": "910000000000000000", + "isEnabled": true, + "rate": "42129360000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1285000000000000000", + "isEnabled": true, + "rate": "59490360000000" + }, + "out": { + "capacity": "1450000000000000000", + "isEnabled": true, + "rate": "67129200000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1160000000000000000", + "isEnabled": true, + "rate": "53703360000000" + }, + "out": { + "capacity": "1527500000000000000", + "isEnabled": true, + "rate": "70717140000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "ethereum-mainnet-taiko-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "775000000000000000", + "isEnabled": true, + "rate": "35879400000000" + }, + "out": { + "capacity": "1107500000000000000", + "isEnabled": true, + "rate": "51272820000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "ethereum-mainnet-zksync-1": { + "minBlockConfirmation": 6, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "855000000000000000", + "isEnabled": true, + "rate": "39583080000000" + }, + "out": { + "capacity": "1380000000000000000", + "isEnabled": true, + "rate": "63888480000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1382500000000000000", + "isEnabled": true, + "rate": "64004220000000" + }, + "out": { + "capacity": "902500000000000000", + "isEnabled": true, + "rate": "41782140000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "95850000000000000000", + "isEnabled": true, + "rate": "1109367900000000" + }, + "out": { + "capacity": "1577500000000000000", + "isEnabled": true, + "rate": "73031940000000" + } + }, + "standard": { + "in": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1736100000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1242500000000000000", + "isEnabled": true, + "rate": "57522780000000" + }, + "out": { + "capacity": "1140000000000000000", + "isEnabled": true, + "rate": "52777440000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "hyperliquid-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1237500000000000000", + "isEnabled": true, + "rate": "57291300000000" + }, + "out": { + "capacity": "997500000000000000", + "isEnabled": true, + "rate": "46180260000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1640000000000000000", + "isEnabled": true, + "rate": "75925440000000" + }, + "out": { + "capacity": "777500000000000000", + "isEnabled": true, + "rate": "35995140000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "845000000000000000", + "isEnabled": true, + "rate": "39120120000000" + }, + "out": { + "capacity": "1390000000000000000", + "isEnabled": true, + "rate": "64351440000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1737500000000000000", + "isEnabled": true, + "rate": "80439300000000" + }, + "out": { + "capacity": "792500000000000000", + "isEnabled": true, + "rate": "36689580000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1382500000000000000", + "isEnabled": true, + "rate": "64004220000000" + }, + "out": { + "capacity": "897500000000000000", + "isEnabled": true, + "rate": "41550660000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1137500000000000000", + "isEnabled": true, + "rate": "52661700000000" + }, + "out": { + "capacity": "1645000000000000000", + "isEnabled": true, + "rate": "76156920000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1470000000000000000", + "isEnabled": true, + "rate": "68055120000000" + }, + "out": { + "capacity": "867500000000000000", + "isEnabled": true, + "rate": "40161780000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1557500000000000000", + "isEnabled": true, + "rate": "72106020000000" + }, + "out": { + "capacity": "1695000000000000000", + "isEnabled": true, + "rate": "78471720000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "752500000000000000", + "isEnabled": true, + "rate": "34837740000000" + }, + "out": { + "capacity": "1117500000000000000", + "isEnabled": true, + "rate": "51735780000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-taiko-1": { + "custom": { + "in": { + "capacity": "1702500000000000000", + "isEnabled": true, + "rate": "78818940000000" + }, + "out": { + "capacity": "1325000000000000000", + "isEnabled": true, + "rate": "61342200000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "1040000000000000000", + "isEnabled": true, + "rate": "48147840000000" + }, + "out": { + "capacity": "82950000000000000000", + "isEnabled": true, + "rate": "960008000000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1736000000000000" + } + } + }, + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "1592500000000000000", + "isEnabled": true, + "rate": "73726380000000" + }, + "out": { + "capacity": "810000000000000000", + "isEnabled": true, + "rate": "37499760000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "757500000000000000", + "isEnabled": true, + "rate": "35069220000000" + }, + "out": { + "capacity": "1390000000000000000", + "isEnabled": true, + "rate": "64351440000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "monad-mainnet": { + "custom": { + "in": { + "capacity": "3260000000000000000", + "isEnabled": true, + "rate": "37731240000000" + }, + "out": { + "capacity": "13500000000000000000", + "isEnabled": true, + "rate": "156249000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000", + "isEnabled": true, + "rate": "57870000000000" + }, + "out": { + "capacity": "30000000000000000000", + "isEnabled": true, + "rate": "347220000000000" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1565000000000000000", + "isEnabled": true, + "rate": "72453240000000" + }, + "out": { + "capacity": "1740000000000000000", + "isEnabled": true, + "rate": "80555040000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "101000000", + "isEnabled": true, + "rate": "4675" + }, + "out": { + "capacity": "1557500000000000000", + "isEnabled": true, + "rate": "72106020000000" + } + }, + "standard": { + "in": { + "capacity": "250000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1350000000000000000", + "isEnabled": true, + "rate": "62499600000000" + }, + "out": { + "capacity": "24120000000000000000", + "isEnabled": true, + "rate": "279164880000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "60000000000000000000", + "isEnabled": true, + "rate": "694440000000000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "875000000000000000", + "isEnabled": true, + "rate": "40509000000000" + }, + "out": { + "capacity": "930000000000000000", + "isEnabled": true, + "rate": "43055280000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "947500000000000000", + "isEnabled": true, + "rate": "43865460000000" + }, + "out": { + "capacity": "1037500000000000000", + "isEnabled": true, + "rate": "48032100000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1455000000000000000", + "isEnabled": true, + "rate": "67360680000000" + }, + "out": { + "capacity": "997500000000000000", + "isEnabled": true, + "rate": "46180260000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1692500000000000000", + "isEnabled": true, + "rate": "78355980000000" + }, + "out": { + "capacity": "1597500000000000000", + "isEnabled": true, + "rate": "73957860000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "765000000000000000", + "isEnabled": true, + "rate": "35416440000000" + }, + "out": { + "capacity": "935000000000000000", + "isEnabled": true, + "rate": "43286760000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1632500000000000000", + "isEnabled": true, + "rate": "75578220000000" + }, + "out": { + "capacity": "1592500000000000000", + "isEnabled": true, + "rate": "73726380000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "810000000000000000", + "isEnabled": true, + "rate": "37499760000000" + }, + "out": { + "capacity": "915000000000000000", + "isEnabled": true, + "rate": "42360840000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "830000000000000000", + "isEnabled": true, + "rate": "38425680000000" + }, + "out": { + "capacity": "927500000000000000", + "isEnabled": true, + "rate": "42939540000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "1645000000000000000", + "isEnabled": true, + "rate": "76156920000000" + }, + "out": { + "capacity": "982500000000000000", + "isEnabled": true, + "rate": "45485820000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1590000000000000000", + "isEnabled": true, + "rate": "73610640000000" + }, + "out": { + "capacity": "1212500000000000000", + "isEnabled": true, + "rate": "56133900000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "807500000000000000", + "isEnabled": true, + "rate": "37384020000000" + }, + "out": { + "capacity": "1662500000000000000", + "isEnabled": true, + "rate": "76967100000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "855000000000000000", + "isEnabled": true, + "rate": "39583080000000" + }, + "out": { + "capacity": "1230000000000000000", + "isEnabled": true, + "rate": "56944080000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "monad-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "19530000000000000000", + "isEnabled": true, + "rate": "226040220000000" + }, + "out": { + "capacity": "2240000000000000000", + "isEnabled": true, + "rate": "25925760000000" + } + }, + "standard": { + "in": { + "capacity": "30000000000000000000", + "isEnabled": true, + "rate": "347220000000000" + }, + "out": { + "capacity": "5000000000000000000", + "isEnabled": true, + "rate": "57870000000000" + } + } + } + } + }, + "sei-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1277500000000000000", + "isEnabled": true, + "rate": "59143140000000" + }, + "out": { + "capacity": "1317500000000000000", + "isEnabled": true, + "rate": "60994980000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1125000000000000000", + "isEnabled": true, + "rate": "52083000000000" + }, + "out": { + "capacity": "1040000000000000000", + "isEnabled": true, + "rate": "48147840000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "912500000000000000", + "isEnabled": true, + "rate": "42245100000000" + }, + "out": { + "capacity": "1135000000000000000", + "isEnabled": true, + "rate": "52545960000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "820000000000000000", + "isEnabled": true, + "rate": "37962720000000" + }, + "out": { + "capacity": "1060000000000000000", + "isEnabled": true, + "rate": "49073760000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1377500000000000000", + "isEnabled": true, + "rate": "63772740000000" + }, + "out": { + "capacity": "1097500000000000000", + "isEnabled": true, + "rate": "50809860000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "750000000000000000", + "isEnabled": true, + "rate": "34722000000000" + }, + "out": { + "capacity": "930000000000000000", + "isEnabled": true, + "rate": "43055280000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "419250000", + "isEnabled": true, + "rate": "19409" + }, + "out": { + "capacity": "415500000", + "isEnabled": true, + "rate": "19235" + } + }, + "standard": { + "in": { + "capacity": "750000000", + "isEnabled": true, + "rate": "34722" + }, + "out": { + "capacity": "750000000", + "isEnabled": true, + "rate": "34722" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "160000000", + "isEnabled": true, + "rate": "7407" + }, + "out": { + "capacity": "155500000", + "isEnabled": true, + "rate": "7199" + } + }, + "standard": { + "in": { + "capacity": "250000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "250000000", + "isEnabled": true, + "rate": "11574" + } + } + } + } + }, + "soneium-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "990000000000000000", + "isEnabled": true, + "rate": "45833040000000" + }, + "out": { + "capacity": "1147500000000000000", + "isEnabled": true, + "rate": "53124660000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1487500000000000000", + "isEnabled": true, + "rate": "68865300000000" + }, + "out": { + "capacity": "1390000000000000000", + "isEnabled": true, + "rate": "64351440000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "39600000000000000000", + "isEnabled": true, + "rate": "458330400000000" + }, + "out": { + "capacity": "912500000000000000", + "isEnabled": true, + "rate": "42245100000000" + } + }, + "standard": { + "in": { + "capacity": "60000000000000000000", + "isEnabled": true, + "rate": "694440000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1257500000000000000", + "isEnabled": true, + "rate": "58217220000000" + }, + "out": { + "capacity": "1390000000000000000", + "isEnabled": true, + "rate": "64351440000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1340000000000000000", + "isEnabled": true, + "rate": "62036640000000" + }, + "out": { + "capacity": "1330000000000000000", + "isEnabled": true, + "rate": "61573680000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + } + }, + "SolvBTC.BERA": { + "berachain-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1215000000000000000", + "isEnabled": true, + "rate": "56249640000000" + }, + "out": { + "capacity": "800000000000000000", + "isEnabled": true, + "rate": "37036800000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "947500000000000000", + "isEnabled": true, + "rate": "43865460000000" + }, + "out": { + "capacity": "762500000000000000", + "isEnabled": true, + "rate": "35300700000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "887500000000000000", + "isEnabled": true, + "rate": "41087700000000" + }, + "out": { + "capacity": "1537500000000000000", + "isEnabled": true, + "rate": "71180100000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "bitcoin-mainnet-bob-1": { + "minBlockConfirmation": 10, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1572500000000000000", + "isEnabled": true, + "rate": "72800460000000" + }, + "out": { + "capacity": "970000000000000000", + "isEnabled": true, + "rate": "44907120000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1057500000000000000", + "isEnabled": true, + "rate": "48958020000000" + }, + "out": { + "capacity": "1330000000000000000", + "isEnabled": true, + "rate": "61573680000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1050000000000000000", + "isEnabled": true, + "rate": "48610800000000" + }, + "out": { + "capacity": "1720000000000000000", + "isEnabled": true, + "rate": "79629120000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1667500000000000000", + "isEnabled": true, + "rate": "77198580000000" + }, + "out": { + "capacity": "985000000000000000", + "isEnabled": true, + "rate": "45601560000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1645000000000000000", + "isEnabled": true, + "rate": "76156920000000" + }, + "out": { + "capacity": "1337500000000000000", + "isEnabled": true, + "rate": "61920900000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "932500000000000000", + "isEnabled": true, + "rate": "43171020000000" + }, + "out": { + "capacity": "1087500000000000000", + "isEnabled": true, + "rate": "50346900000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1435000000000000000", + "isEnabled": true, + "rate": "66434760000000" + }, + "out": { + "capacity": "1140000000000000000", + "isEnabled": true, + "rate": "52777440000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1422500000000000000", + "isEnabled": true, + "rate": "65856060000000" + }, + "out": { + "capacity": "1525000000000000000", + "isEnabled": true, + "rate": "70601400000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1380000000000000000", + "isEnabled": true, + "rate": "63888480000000" + }, + "out": { + "capacity": "1255000000000000000", + "isEnabled": true, + "rate": "58101480000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + } + }, + "SolvBTC.JUP": { + "bitcoin-mainnet-bob-1": { + "minBlockConfirmation": 9, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "810000000000000000", + "isEnabled": true, + "rate": "37499760000000" + }, + "out": { + "capacity": "1457500000000000000", + "isEnabled": true, + "rate": "67476420000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1282500000000000000", + "isEnabled": true, + "rate": "59374620000000" + }, + "out": { + "capacity": "1132500000000000000", + "isEnabled": true, + "rate": "52430220000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1225000000000000000", + "isEnabled": true, + "rate": "56712600000000" + }, + "out": { + "capacity": "1142500000000000000", + "isEnabled": true, + "rate": "52893180000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "2940000000", + "isEnabled": true, + "rate": "34027" + }, + "out": { + "capacity": "34850000000000000000", + "isEnabled": true, + "rate": "403353900000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "57870" + }, + "out": { + "capacity": "50000000000000000000", + "isEnabled": true, + "rate": "578700000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "33900000000000000000", + "isEnabled": true, + "rate": "392358600000000" + }, + "out": { + "capacity": "53800000000000000000", + "isEnabled": true, + "rate": "622681200000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "1157400000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "1157400000000000" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1675000000", + "isEnabled": true, + "rate": "19386" + }, + "out": { + "capacity": "1845000000", + "isEnabled": true, + "rate": "21354" + } + }, + "standard": { + "in": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "57870" + }, + "out": { + "capacity": "5000000000", + "isEnabled": true, + "rate": "57870" + } + } + } + } + }, + "soneium-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1457500000000000000", + "isEnabled": true, + "rate": "67476420000000" + }, + "out": { + "capacity": "1075000000000000000", + "isEnabled": true, + "rate": "49768200000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "69000000000000000000", + "isEnabled": true, + "rate": "798606000000000" + }, + "out": { + "capacity": "67600000000000000000", + "isEnabled": true, + "rate": "782402400000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "1157400000000000" + }, + "out": { + "capacity": "100000000000000000000", + "isEnabled": true, + "rate": "1157400000000000" + } + } + } + } + } + }, + "STABLE": { + "bsc-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "4704000000000000000000", + "isEnabled": true, + "rate": "54432000000000000" + }, + "out": { + "capacity": "2716000000000000000000", + "isEnabled": true, + "rate": "31428000000000000" + } + }, + "standard": { + "in": { + "capacity": "7000000000000000000000", + "isEnabled": true, + "rate": "81000000000000000" + }, + "out": { + "capacity": "7000000000000000000000", + "isEnabled": true, + "rate": "81000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "3661000000000000000000", + "isEnabled": true, + "rate": "42363000000000000" + }, + "out": { + "capacity": "3430000000000000000000", + "isEnabled": true, + "rate": "39690000000000000" + } + }, + "standard": { + "in": { + "capacity": "7000000000000000000000", + "isEnabled": true, + "rate": "81000000000000000" + }, + "out": { + "capacity": "7000000000000000000000", + "isEnabled": true, + "rate": "81000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "3976000000000000000000", + "isEnabled": true, + "rate": "46008000000000000" + }, + "out": { + "capacity": "3766000000000000000000", + "isEnabled": true, + "rate": "43578000000000000" + } + }, + "standard": { + "in": { + "capacity": "7000000000000000000000", + "isEnabled": true, + "rate": "81000000000000000" + }, + "out": { + "capacity": "7000000000000000000000", + "isEnabled": true, + "rate": "81000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "2625000000000000000000", + "isEnabled": true, + "rate": "30375000000000000" + }, + "out": { + "capacity": "4809000000000000000000", + "isEnabled": true, + "rate": "55647000000000000" + } + }, + "standard": { + "in": { + "capacity": "7000000000000000000000", + "isEnabled": true, + "rate": "81000000000000000" + }, + "out": { + "capacity": "7000000000000000000000", + "isEnabled": true, + "rate": "81000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "3528000000000000000000", + "isEnabled": true, + "rate": "40824000000000000" + }, + "out": { + "capacity": "3885000000000000000000", + "isEnabled": true, + "rate": "44955000000000000" + } + }, + "standard": { + "in": { + "capacity": "7000000000000000000000", + "isEnabled": true, + "rate": "81000000000000000" + }, + "out": { + "capacity": "7000000000000000000000", + "isEnabled": true, + "rate": "81000000000000000" + } + } + } + } + } + }, + "STABUL": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": null, + "standard": null + } + } + } + }, + "stBTC": { + "bitcoin-mainnet-bsquared-1": { + "minBlockConfirmation": 5, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bitcoin-mainnet-bsquared-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "STBU": { + "bsc-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 10, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "stTAO": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "145600000000", + "isEnabled": true, + "rate": "15142400" + }, + "out": { + "capacity": "209200000000", + "isEnabled": true, + "rate": "21756800" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "157600000000", + "isEnabled": true, + "rate": "16390400" + }, + "out": { + "capacity": "269600000000", + "isEnabled": true, + "rate": "28038400" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "191600000000", + "isEnabled": true, + "rate": "19926400" + }, + "out": { + "capacity": "129200000000", + "isEnabled": true, + "rate": "13436800" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "134400000000", + "isEnabled": true, + "rate": "13977600" + }, + "out": { + "capacity": "243600000000", + "isEnabled": true, + "rate": "25334400" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "241600000000", + "isEnabled": true, + "rate": "25126400" + }, + "out": { + "capacity": "121600000000", + "isEnabled": true, + "rate": "12646400" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "184400000000", + "isEnabled": true, + "rate": "19177600" + }, + "out": { + "capacity": "207600000000", + "isEnabled": true, + "rate": "21590400" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "145200000000", + "isEnabled": true, + "rate": "15100800" + }, + "out": { + "capacity": "139200000000", + "isEnabled": true, + "rate": "14476800" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "272400000000", + "isEnabled": true, + "rate": "28329600" + }, + "out": { + "capacity": "272400000000", + "isEnabled": true, + "rate": "28329600" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "234000000000", + "isEnabled": true, + "rate": "24336000" + }, + "out": { + "capacity": "159200000000", + "isEnabled": true, + "rate": "16556800" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "232000000000", + "isEnabled": true, + "rate": "24128000" + }, + "out": { + "capacity": "133200000000", + "isEnabled": true, + "rate": "13852800" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "241600000000", + "isEnabled": true, + "rate": "25126400" + }, + "out": { + "capacity": "123600000000", + "isEnabled": true, + "rate": "12854400" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "127600000000", + "isEnabled": true, + "rate": "13270400" + }, + "out": { + "capacity": "233200000000", + "isEnabled": true, + "rate": "24252800" + } + }, + "standard": { + "in": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + }, + "out": { + "capacity": "400000000000", + "isEnabled": true, + "rate": "41600000" + } + } + } + } + } + }, + "suBTC": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "4216000000000000000", + "isEnabled": true, + "rate": "48800200000000" + }, + "out": { + "capacity": "3976000000000000000", + "isEnabled": true, + "rate": "46022200000000" + } + }, + "standard": { + "in": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + }, + "out": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "3480000000000000000", + "isEnabled": true, + "rate": "40281000000000" + }, + "out": { + "capacity": "5272000000000000000", + "isEnabled": true, + "rate": "61023400000000" + } + }, + "standard": { + "in": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + }, + "out": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "5112000000000000000", + "isEnabled": true, + "rate": "59171400000000" + }, + "out": { + "capacity": "5400000000000000000", + "isEnabled": true, + "rate": "62505000000000" + } + }, + "standard": { + "in": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + }, + "out": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "2768000000000000000", + "isEnabled": true, + "rate": "32039600000000" + }, + "out": { + "capacity": "5280000000000000000", + "isEnabled": true, + "rate": "61116000000000" + } + }, + "standard": { + "in": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + }, + "out": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "4056000000000000000", + "isEnabled": true, + "rate": "46948200000000" + }, + "out": { + "capacity": "3696000000000000000", + "isEnabled": true, + "rate": "42781200000000" + } + }, + "standard": { + "in": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + }, + "out": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "3256000000000000000", + "isEnabled": true, + "rate": "37688200000000" + }, + "out": { + "capacity": "4528000000000000000", + "isEnabled": true, + "rate": "52411600000000" + } + }, + "standard": { + "in": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + }, + "out": { + "capacity": "8000000000000000000", + "isEnabled": true, + "rate": "92600000000000" + } + } + } + } + } + }, + "suETH": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "86100000000000000000", + "isEnabled": true, + "rate": "975800000000000" + }, + "out": { + "capacity": "57000000000000000000", + "isEnabled": true, + "rate": "646000000000000" + } + }, + "standard": { + "in": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + }, + "out": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "74100000000000000000", + "isEnabled": true, + "rate": "839800000000000" + }, + "out": { + "capacity": "95850000000000000000", + "isEnabled": true, + "rate": "1086300000000000" + } + }, + "standard": { + "in": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + }, + "out": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "79050000000000000000", + "isEnabled": true, + "rate": "895900000000000" + }, + "out": { + "capacity": "78600000000000000000", + "isEnabled": true, + "rate": "890800000000000" + } + }, + "standard": { + "in": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + }, + "out": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "48900000000000000000", + "isEnabled": true, + "rate": "554200000000000" + }, + "out": { + "capacity": "91350000000000000000", + "isEnabled": true, + "rate": "1035300000000000" + } + }, + "standard": { + "in": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + }, + "out": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "97200000000000000000", + "isEnabled": true, + "rate": "1101600000000000" + }, + "out": { + "capacity": "58500000000000000000", + "isEnabled": true, + "rate": "663000000000000" + } + }, + "standard": { + "in": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + }, + "out": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "62700000000000000000", + "isEnabled": true, + "rate": "710600000000000" + }, + "out": { + "capacity": "90450000000000000000", + "isEnabled": true, + "rate": "1025100000000000" + } + }, + "standard": { + "in": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + }, + "out": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1700000000000000" + } + } + } + } + } + }, + "sUSD1+": { + "bsc-mainnet": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "suUSD": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "78200000000000000000000", + "isEnabled": true, + "rate": "904774000000000000" + }, + "out": { + "capacity": "100200000000000000000000", + "isEnabled": true, + "rate": "1159314000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "89400000000000000000000", + "isEnabled": true, + "rate": "1034358000000000000" + }, + "out": { + "capacity": "101000000000000000000000", + "isEnabled": true, + "rate": "1168570000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "116000000000000000000000", + "isEnabled": true, + "rate": "1342120000000000000" + }, + "out": { + "capacity": "139200000000000000000000", + "isEnabled": true, + "rate": "1610544000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "66600000000000000000000", + "isEnabled": true, + "rate": "770562000000000000" + }, + "out": { + "capacity": "78000000000000000000000", + "isEnabled": true, + "rate": "902460000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "64800000000000000000000", + "isEnabled": true, + "rate": "749736000000000000" + }, + "out": { + "capacity": "64600000000000000000000", + "isEnabled": true, + "rate": "747422000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "71000000000000000000000", + "isEnabled": true, + "rate": "821470000000000000" + }, + "out": { + "capacity": "111600000000000000000000", + "isEnabled": true, + "rate": "1291212000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "2314000000000000000" + } + } + } + } + } + }, + "SXT": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "syrupUSDC": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "hyperliquid-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "syrupUSDT": { + "ethereum-mainnet-mantle-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-mantle-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "plasma-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "tETH": { + "avalanche-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + }, + "tac-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "tac-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "THE": { + "binance-smart-chain-mainnet-opbnb-1": { + "minBlockConfirmation": 7, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "binance-smart-chain-mainnet-opbnb-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "297000000000000000000000", + "isEnabled": true, + "rate": "165132000000000000000" + }, + "out": { + "capacity": "394500000000000000000000", + "isEnabled": true, + "rate": "219342000000000000000" + } + }, + "standard": { + "in": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "417000000000000000000" + }, + "out": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "417000000000000000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "432000000000000000000000", + "isEnabled": true, + "rate": "240192000000000000000" + }, + "out": { + "capacity": "390750000000000000000000", + "isEnabled": true, + "rate": "217257000000000000000" + } + }, + "standard": { + "in": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "417000000000000000000" + }, + "out": { + "capacity": "750000000000000000000000", + "isEnabled": true, + "rate": "417000000000000000000" + } + } + } + } + } + }, + "TRADE": { + "bsc-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": null, + "standard": null + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "TREE": { + "avalanche-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "TURBO": { + "bsc-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "4704000000000000000000000", + "isEnabled": true, + "rate": "1306666636800000000000" + }, + "out": { + "capacity": "3822000000000000000000000", + "isEnabled": true, + "rate": "1061666642400000000000" + } + }, + "standard": { + "in": { + "capacity": "7000000000000000000000000", + "isEnabled": true, + "rate": "1944444400000000000000" + }, + "out": { + "capacity": "7000000000000000000000000", + "isEnabled": true, + "rate": "1944444400000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "4781000000000000000000000", + "isEnabled": true, + "rate": "1328055525200000000000" + }, + "out": { + "capacity": "2744000000000000000000000", + "isEnabled": true, + "rate": "762222204800000000000" + } + }, + "standard": { + "in": { + "capacity": "7000000000000000000000000", + "isEnabled": true, + "rate": "1944444400000000000000" + }, + "out": { + "capacity": "7000000000000000000000000", + "isEnabled": true, + "rate": "1944444400000000000000" + } + } + } + } + } + }, + "TURTLE": { + "bsc-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "una.USDC": { + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "99600000000", + "isEnabled": true, + "rate": "27665560" + }, + "out": { + "capacity": "129000000000", + "isEnabled": true, + "rate": "35831900" + } + }, + "standard": { + "in": { + "capacity": "300000000000", + "isEnabled": true, + "rate": "83330000" + }, + "out": { + "capacity": "300000000000", + "isEnabled": true, + "rate": "83330000" + } + } + } + } + }, + "wemix-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "171300000000", + "isEnabled": true, + "rate": "47581430" + }, + "out": { + "capacity": "140100000000", + "isEnabled": true, + "rate": "38915110" + } + }, + "standard": { + "in": { + "capacity": "300000000000", + "isEnabled": true, + "rate": "83330000" + }, + "out": { + "capacity": "300000000000", + "isEnabled": true, + "rate": "83330000" + } + } + } + } + } + }, + "una.WEMIX": { + "avalanche-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "62600000000000000000000", + "isEnabled": true, + "rate": "17387150000000000000" + }, + "out": { + "capacity": "118800000000000000000000", + "isEnabled": true, + "rate": "32996700000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "83000000000000000000000", + "isEnabled": true, + "rate": "23053250000000000000" + }, + "out": { + "capacity": "129000000000000000000000", + "isEnabled": true, + "rate": "35829750000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "117000000000000000000000", + "isEnabled": true, + "rate": "32496750000000000000" + }, + "out": { + "capacity": "135400000000000000000000", + "isEnabled": true, + "rate": "37607350000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 3, + "remote": { + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "71600000000000000000000", + "isEnabled": true, + "rate": "19886900000000000000" + }, + "out": { + "capacity": "90000000000000000000000", + "isEnabled": true, + "rate": "24997500000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "106600000000000000000000", + "isEnabled": true, + "rate": "29608150000000000000" + }, + "out": { + "capacity": "70200000000000000000000", + "isEnabled": true, + "rate": "19498050000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "127000000000000000000000", + "isEnabled": true, + "rate": "35274250000000000000" + }, + "out": { + "capacity": "73400000000000000000000", + "isEnabled": true, + "rate": "20386850000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + } + } + }, + "wemix-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "102000000000000000000000", + "isEnabled": true, + "rate": "28330500000000000000" + }, + "out": { + "capacity": "139000000000000000000000", + "isEnabled": true, + "rate": "38607250000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "118800000000000000000000", + "isEnabled": true, + "rate": "32996700000000000000" + }, + "out": { + "capacity": "95200000000000000000000", + "isEnabled": true, + "rate": "26441800000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "78400000000000000000000", + "isEnabled": true, + "rate": "21775600000000000000" + }, + "out": { + "capacity": "131400000000000000000000", + "isEnabled": true, + "rate": "36496350000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "63400000000000000000000", + "isEnabled": true, + "rate": "17609350000000000000" + }, + "out": { + "capacity": "123800000000000000000000", + "isEnabled": true, + "rate": "34385450000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "136000000000000000000000", + "isEnabled": true, + "rate": "37774000000000000000" + }, + "out": { + "capacity": "92200000000000000000000", + "isEnabled": true, + "rate": "25608550000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "126000000000000000000000", + "isEnabled": true, + "rate": "34996500000000000000" + }, + "out": { + "capacity": "82400000000000000000000", + "isEnabled": true, + "rate": "22886600000000000000" + } + }, + "standard": { + "in": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + }, + "out": { + "capacity": "200000000000000000000000", + "isEnabled": true, + "rate": "55550000000000000000" + } + } + } + } + } + }, + "uniBTC": { + "aptos-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "94000000", + "isEnabled": true, + "rate": "1088" + }, + "out": { + "capacity": "134200000", + "isEnabled": true, + "rate": "1553" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "berachain-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "129000000", + "isEnabled": true, + "rate": "1493" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "bitcoin-mainnet-bitlayer-1": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "97800000", + "isEnabled": true, + "rate": "1132" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "bitcoin-mainnet-bob-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bitcoin-mainnet-bsquared-1": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "89000000", + "isEnabled": true, + "rate": "5150" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "11574" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "aptos-mainnet": { + "custom": { + "in": { + "capacity": "139800000", + "isEnabled": true, + "rate": "1618" + }, + "out": { + "capacity": "75000000", + "isEnabled": true, + "rate": "868" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "96000000", + "isEnabled": true, + "rate": "1111" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "corn-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "120200000", + "isEnabled": true, + "rate": "1391" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "98000000", + "isEnabled": true, + "rate": "1134" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "ethereum-mainnet-ink-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "61400000", + "isEnabled": true, + "rate": "710" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "ethereum-mainnet-mantle-1": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "96000000", + "isEnabled": true, + "rate": "5555" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "11574" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "139800000", + "isEnabled": true, + "rate": "8090" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "11574" + } + } + } + } + }, + "ethereum-mainnet-unichain-1": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "130600000", + "isEnabled": true, + "rate": "1511" + }, + "out": { + "capacity": "93600000", + "isEnabled": true, + "rate": "1083" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "ethereum-mainnet-xlayer-1": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "70200000", + "isEnabled": true, + "rate": "812" + }, + "out": { + "capacity": "78400000", + "isEnabled": true, + "rate": "907" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "hyperliquid-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "66000000", + "isEnabled": true, + "rate": "763" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "aptos-mainnet": { + "custom": { + "in": { + "capacity": "120400000", + "isEnabled": true, + "rate": "1393" + }, + "out": { + "capacity": "125600000", + "isEnabled": true, + "rate": "1453" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "115800000", + "isEnabled": true, + "rate": "1340" + }, + "out": { + "capacity": "73400000", + "isEnabled": true, + "rate": "849" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + }, + "out": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + } + }, + "standard": { + "in": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + }, + "out": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "120400000", + "isEnabled": true, + "rate": "1393" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "bitcoin-mainnet-bsquared-1": { + "custom": { + "in": { + "capacity": "101600000", + "isEnabled": true, + "rate": "1176" + }, + "out": { + "capacity": "84000000", + "isEnabled": true, + "rate": "972" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "109000000", + "isEnabled": true, + "rate": "1261" + }, + "out": { + "capacity": "69000000", + "isEnabled": true, + "rate": "798" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "corn-mainnet": { + "custom": { + "in": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + }, + "out": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + } + }, + "standard": { + "in": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + }, + "out": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "61200000", + "isEnabled": true, + "rate": "70816" + }, + "out": { + "capacity": "113800000", + "isEnabled": true, + "rate": "131682" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "231428" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "231428" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "127000000", + "isEnabled": true, + "rate": "1470" + }, + "out": { + "capacity": "82000000", + "isEnabled": true, + "rate": "949" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "107800000", + "isEnabled": true, + "rate": "1247" + }, + "out": { + "capacity": "137800000", + "isEnabled": true, + "rate": "1595" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "ethereum-mainnet-mantle-1": { + "custom": { + "in": { + "capacity": "113600000", + "isEnabled": true, + "rate": "6574" + }, + "out": { + "capacity": "115800000", + "isEnabled": true, + "rate": "6701" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "11574" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "118000000", + "isEnabled": true, + "rate": "6828" + }, + "out": { + "capacity": "78000000", + "isEnabled": true, + "rate": "4513" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "11574" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "94800000", + "isEnabled": true, + "rate": "1097" + }, + "out": { + "capacity": "134400000", + "isEnabled": true, + "rate": "1555" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "ethereum-mainnet-xlayer-1": { + "custom": { + "in": { + "capacity": "91000000", + "isEnabled": true, + "rate": "1053" + }, + "out": { + "capacity": "73400000", + "isEnabled": true, + "rate": "849" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "0", + "isEnabled": true, + "rate": "0" + }, + "out": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + } + }, + "standard": { + "in": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + }, + "out": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "115200000", + "isEnabled": true, + "rate": "1333" + }, + "out": { + "capacity": "75200000", + "isEnabled": true, + "rate": "870" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + }, + "out": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + } + }, + "standard": { + "in": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + }, + "out": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + } + } + }, + "tac-mainnet": { + "custom": { + "in": { + "capacity": "137000000", + "isEnabled": true, + "rate": "1585" + }, + "out": { + "capacity": "123800000", + "isEnabled": true, + "rate": "1432" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "113200000", + "isEnabled": true, + "rate": "1310" + }, + "out": { + "capacity": "117400000", + "isEnabled": true, + "rate": "1358" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "96800000", + "isEnabled": true, + "rate": "1120" + }, + "out": { + "capacity": "117600000", + "isEnabled": true, + "rate": "1361" + } + }, + "standard": { + "in": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + }, + "out": { + "capacity": "200000000", + "isEnabled": true, + "rate": "2315" + } + } + } + } + }, + "tac-mainnet": { + "minBlockConfirmation": null, + "remote": { + "mainnet": { + "custom": null, + "standard": null + } + } + } + }, + "UNIO": { + "bsc-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "32000000000000000000000000", + "isEnabled": true, + "rate": "8888883200000000000000" + }, + "out": { + "capacity": "34650000000000000000000000", + "isEnabled": true, + "rate": "9624993840000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000000", + "isEnabled": true, + "rate": "13888880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000000", + "isEnabled": true, + "rate": "13888880000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "6300000000000000000000000", + "isEnabled": true, + "rate": "218400000000000000000" + }, + "out": { + "capacity": "4800000000000000000000000", + "isEnabled": true, + "rate": "166400000000000000000" + } + }, + "standard": { + "in": { + "capacity": "15000000000000000000000000", + "isEnabled": true, + "rate": "520000000000000000000" + }, + "out": { + "capacity": "15000000000000000000000000", + "isEnabled": true, + "rate": "520000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "33900000000000000000000000", + "isEnabled": true, + "rate": "9416660640000000000000" + }, + "out": { + "capacity": "23750000000000000000000000", + "isEnabled": true, + "rate": "6597218000000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000000", + "isEnabled": true, + "rate": "13888880000000000000000" + }, + "out": { + "capacity": "50000000000000000000000000", + "isEnabled": true, + "rate": "13888880000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "6345000000000000000000000", + "isEnabled": true, + "rate": "219960000000000000000" + }, + "out": { + "capacity": "10200000000000000000000000", + "isEnabled": true, + "rate": "353600000000000000000" + } + }, + "standard": { + "in": { + "capacity": "15000000000000000000000000", + "isEnabled": true, + "rate": "520000000000000000000" + }, + "out": { + "capacity": "15000000000000000000000000", + "isEnabled": true, + "rate": "520000000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "7485000000000000000000000", + "isEnabled": true, + "rate": "259480000000000000000" + }, + "out": { + "capacity": "9495000000000000000000000", + "isEnabled": true, + "rate": "329160000000000000000" + } + }, + "standard": { + "in": { + "capacity": "15000000000000000000000000", + "isEnabled": true, + "rate": "520000000000000000000" + }, + "out": { + "capacity": "15000000000000000000000000", + "isEnabled": true, + "rate": "520000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "9630000000000000000000000", + "isEnabled": true, + "rate": "333840000000000000000" + }, + "out": { + "capacity": "6120000000000000000000000", + "isEnabled": true, + "rate": "212160000000000000000" + } + }, + "standard": { + "in": { + "capacity": "15000000000000000000000000", + "isEnabled": true, + "rate": "520000000000000000000" + }, + "out": { + "capacity": "15000000000000000000000000", + "isEnabled": true, + "rate": "520000000000000000000" + } + } + } + } + } + }, + "USAGI": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 5, + "remote": { + "shibarium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "USD+": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "96800000000", + "isEnabled": true, + "rate": "26620000" + }, + "out": { + "capacity": "110200000000", + "isEnabled": true, + "rate": "30305000" + } + }, + "standard": { + "in": { + "capacity": "200000000000", + "isEnabled": true, + "rate": "55000000" + }, + "out": { + "capacity": "200000000000", + "isEnabled": true, + "rate": "55000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "77400000000", + "isEnabled": true, + "rate": "21285000" + }, + "out": { + "capacity": "87200000000", + "isEnabled": true, + "rate": "23980000" + } + }, + "standard": { + "in": { + "capacity": "200000000000", + "isEnabled": true, + "rate": "55000000" + }, + "out": { + "capacity": "200000000000", + "isEnabled": true, + "rate": "55000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "92000000000", + "isEnabled": true, + "rate": "25300000" + }, + "out": { + "capacity": "99000000000", + "isEnabled": true, + "rate": "27225000" + } + }, + "standard": { + "in": { + "capacity": "200000000000", + "isEnabled": true, + "rate": "55000000" + }, + "out": { + "capacity": "200000000000", + "isEnabled": true, + "rate": "55000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "86800000000", + "isEnabled": true, + "rate": "23870000" + }, + "out": { + "capacity": "82400000000", + "isEnabled": true, + "rate": "22660000" + } + }, + "standard": { + "in": { + "capacity": "200000000000", + "isEnabled": true, + "rate": "55000000" + }, + "out": { + "capacity": "200000000000", + "isEnabled": true, + "rate": "55000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "104600000000", + "isEnabled": true, + "rate": "28765000" + }, + "out": { + "capacity": "105400000000", + "isEnabled": true, + "rate": "28985000" + } + }, + "standard": { + "in": { + "capacity": "200000000000", + "isEnabled": true, + "rate": "55000000" + }, + "out": { + "capacity": "200000000000", + "isEnabled": true, + "rate": "55000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + } + } + } + }, + "USD0": { + "bsc-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1491000000000000000000000", + "isEnabled": true, + "rate": "17395000000000000000" + }, + "out": { + "capacity": "1020000000000000000000000", + "isEnabled": true, + "rate": "11900000000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "975000000000000000000000", + "isEnabled": true, + "rate": "11375000000000000000" + }, + "out": { + "capacity": "1500000000000000000000000", + "isEnabled": true, + "rate": "17500000000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1203000000000000000000000", + "isEnabled": true, + "rate": "14035000000000000000" + }, + "out": { + "capacity": "906000000000000000000000", + "isEnabled": true, + "rate": "10570000000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1506000000000000000000000", + "isEnabled": true, + "rate": "17570000000000000000" + }, + "out": { + "capacity": "1251000000000000000000000", + "isEnabled": true, + "rate": "14595000000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + } + } + } + } + } + }, + "USD1": { + "ab-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "aptos-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "aptos-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-mantle-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ab-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "aptos-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-mantle-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "monad-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "morph-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plume-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "monad-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "morph-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "plume-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "USDC": { + "0g-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "avalanche-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bitcoin-mainnet-bitlayer-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "19250000000", + "isEnabled": true, + "rate": "3850000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "50000000000", + "isEnabled": true, + "rate": "10000000" + } + } + } + } + }, + "bitcoin-mainnet-bob-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 10, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-unichain-1": { + "minBlockConfirmation": 8, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "0g-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "wemix-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "wemix-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "USDf": { + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "xdc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "xdc-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "USDFI": { + "bsc-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "29950000000000000000000", + "isEnabled": true, + "rate": "341430000000000000" + }, + "out": { + "capacity": "18450000000000000000000", + "isEnabled": true, + "rate": "210330000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "34250000000000000000000", + "isEnabled": true, + "rate": "390450000000000000" + }, + "out": { + "capacity": "29900000000000000000000", + "isEnabled": true, + "rate": "340860000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 9, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "24500000000000000000000", + "isEnabled": true, + "rate": "279300000000000000" + }, + "out": { + "capacity": "27400000000000000000000", + "isEnabled": true, + "rate": "312360000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "20550000000000000000000", + "isEnabled": true, + "rate": "234270000000000000" + }, + "out": { + "capacity": "18600000000000000000000", + "isEnabled": true, + "rate": "212040000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "29850000000000000000000", + "isEnabled": true, + "rate": "340290000000000000" + }, + "out": { + "capacity": "30450000000000000000000", + "isEnabled": true, + "rate": "347130000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "17350000000000000000000", + "isEnabled": true, + "rate": "197790000000000000" + }, + "out": { + "capacity": "25300000000000000000000", + "isEnabled": true, + "rate": "288420000000000000" + } + }, + "standard": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + }, + "out": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "570000000000000000" + } + } + } + } + } + }, + "USDM": { + "avalanche-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "578000000000000000000000", + "isEnabled": true, + "rate": "6704800000000000000" + }, + "out": { + "capacity": "603000000000000000000000", + "isEnabled": true, + "rate": "6994800000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "616000000000000000000000", + "isEnabled": true, + "rate": "7145600000000000000" + }, + "out": { + "capacity": "343000000000000000000000", + "isEnabled": true, + "rate": "3978800000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "592000000000000000000000", + "isEnabled": true, + "rate": "6867200000000000000" + }, + "out": { + "capacity": "690000000000000000000000", + "isEnabled": true, + "rate": "8004000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "305000000000000000000000", + "isEnabled": true, + "rate": "3538000000000000000" + }, + "out": { + "capacity": "355000000000000000000000", + "isEnabled": true, + "rate": "4118000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "356000000000000000000000", + "isEnabled": true, + "rate": "4129600000000000000" + }, + "out": { + "capacity": "484000000000000000000000", + "isEnabled": true, + "rate": "5614400000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "633000000000000000000000", + "isEnabled": true, + "rate": "7342800000000000000" + }, + "out": { + "capacity": "450000000000000000000000", + "isEnabled": true, + "rate": "5220000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 10, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "496000000000000000000000", + "isEnabled": true, + "rate": "5753600000000000000" + }, + "out": { + "capacity": "501000000000000000000000", + "isEnabled": true, + "rate": "5811600000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "330000000000000000000000", + "isEnabled": true, + "rate": "3828000000000000000" + }, + "out": { + "capacity": "457000000000000000000000", + "isEnabled": true, + "rate": "5301200000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "658000000000000000000000", + "isEnabled": true, + "rate": "7632800000000000000" + }, + "out": { + "capacity": "636000000000000000000000", + "isEnabled": true, + "rate": "7377600000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "539000000000000000000000", + "isEnabled": true, + "rate": "6252400000000000000" + }, + "out": { + "capacity": "670000000000000000000000", + "isEnabled": true, + "rate": "7772000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "384000000000000000000000", + "isEnabled": true, + "rate": "4454400000000000000" + }, + "out": { + "capacity": "594000000000000000000000", + "isEnabled": true, + "rate": "6890400000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "567000000000000000000000", + "isEnabled": true, + "rate": "6577200000000000000" + }, + "out": { + "capacity": "573000000000000000000000", + "isEnabled": true, + "rate": "6646800000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "660000000000000000000000", + "isEnabled": true, + "rate": "7656000000000000000" + }, + "out": { + "capacity": "356000000000000000000000", + "isEnabled": true, + "rate": "4129600000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "334000000000000000000000", + "isEnabled": true, + "rate": "3874400000000000000" + }, + "out": { + "capacity": "556000000000000000000000", + "isEnabled": true, + "rate": "6449600000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "324000000000000000000000", + "isEnabled": true, + "rate": "3758400000000000000" + }, + "out": { + "capacity": "386000000000000000000000", + "isEnabled": true, + "rate": "4477600000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "363000000000000000000000", + "isEnabled": true, + "rate": "4210800000000000000" + }, + "out": { + "capacity": "394000000000000000000000", + "isEnabled": true, + "rate": "4570400000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "563000000000000000000000", + "isEnabled": true, + "rate": "6530800000000000000" + }, + "out": { + "capacity": "601000000000000000000000", + "isEnabled": true, + "rate": "6971600000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "387000000000000000000000", + "isEnabled": true, + "rate": "4489200000000000000" + }, + "out": { + "capacity": "381000000000000000000000", + "isEnabled": true, + "rate": "4419600000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "387000000000000000000000", + "isEnabled": true, + "rate": "4489200000000000000" + }, + "out": { + "capacity": "542000000000000000000000", + "isEnabled": true, + "rate": "6287200000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "613000000000000000000000", + "isEnabled": true, + "rate": "7110800000000000000" + }, + "out": { + "capacity": "321000000000000000000000", + "isEnabled": true, + "rate": "3723600000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "342000000000000000000000", + "isEnabled": true, + "rate": "3967200000000000000" + }, + "out": { + "capacity": "345000000000000000000000", + "isEnabled": true, + "rate": "4002000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "427000000000000000000000", + "isEnabled": true, + "rate": "4953200000000000000" + }, + "out": { + "capacity": "669000000000000000000000", + "isEnabled": true, + "rate": "7760400000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "491000000000000000000000", + "isEnabled": true, + "rate": "5695600000000000000" + }, + "out": { + "capacity": "418000000000000000000000", + "isEnabled": true, + "rate": "4848800000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + } + } + }, + "ethereum-mainnet-zksync-1": { + "minBlockConfirmation": 7, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "315000000000000000000000", + "isEnabled": true, + "rate": "3654000000000000000" + }, + "out": { + "capacity": "637000000000000000000000", + "isEnabled": true, + "rate": "7389200000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "652000000000000000000000", + "isEnabled": true, + "rate": "7563200000000000000" + }, + "out": { + "capacity": "307000000000000000000000", + "isEnabled": true, + "rate": "3561200000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "439000000000000000000000", + "isEnabled": true, + "rate": "5092400000000000000" + }, + "out": { + "capacity": "483000000000000000000000", + "isEnabled": true, + "rate": "5602800000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "300000000000000000000000", + "isEnabled": true, + "rate": "3480000000000000000" + }, + "out": { + "capacity": "674000000000000000000000", + "isEnabled": true, + "rate": "7818400000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "617000000000000000000000", + "isEnabled": true, + "rate": "7157200000000000000" + }, + "out": { + "capacity": "326000000000000000000000", + "isEnabled": true, + "rate": "3781600000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "349000000000000000000000", + "isEnabled": true, + "rate": "4048400000000000000" + }, + "out": { + "capacity": "344000000000000000000000", + "isEnabled": true, + "rate": "3990400000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "582000000000000000000000", + "isEnabled": true, + "rate": "6751200000000000000" + }, + "out": { + "capacity": "313000000000000000000000", + "isEnabled": true, + "rate": "3630800000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "487000000000000000000000", + "isEnabled": true, + "rate": "5649200000000000000" + }, + "out": { + "capacity": "478000000000000000000000", + "isEnabled": true, + "rate": "5544800000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "405000000000000000000000", + "isEnabled": true, + "rate": "4698000000000000000" + }, + "out": { + "capacity": "640000000000000000000000", + "isEnabled": true, + "rate": "7424000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "401000000000000000000000", + "isEnabled": true, + "rate": "4651600000000000000" + }, + "out": { + "capacity": "665000000000000000000000", + "isEnabled": true, + "rate": "7714000000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "654000000000000000000000", + "isEnabled": true, + "rate": "7586400000000000000" + }, + "out": { + "capacity": "677000000000000000000000", + "isEnabled": true, + "rate": "7853200000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "480000000000000000000000", + "isEnabled": true, + "rate": "5568000000000000000" + }, + "out": { + "capacity": "514000000000000000000000", + "isEnabled": true, + "rate": "5962400000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "562000000000000000000000", + "isEnabled": true, + "rate": "6519200000000000000" + }, + "out": { + "capacity": "367000000000000000000000", + "isEnabled": true, + "rate": "4257200000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "322000000000000000000000", + "isEnabled": true, + "rate": "3735200000000000000" + }, + "out": { + "capacity": "686000000000000000000000", + "isEnabled": true, + "rate": "7957600000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "350000000000000000000000", + "isEnabled": true, + "rate": "4060000000000000000" + }, + "out": { + "capacity": "452000000000000000000000", + "isEnabled": true, + "rate": "5243200000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "418000000000000000000000", + "isEnabled": true, + "rate": "4848800000000000000" + }, + "out": { + "capacity": "629000000000000000000000", + "isEnabled": true, + "rate": "7296400000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "363000000000000000000000", + "isEnabled": true, + "rate": "4210800000000000000" + }, + "out": { + "capacity": "389000000000000000000000", + "isEnabled": true, + "rate": "4512400000000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + }, + "out": { + "capacity": "1000000000000000000000000", + "isEnabled": true, + "rate": "11600000000000000000" + } + } + } + } + } + }, + "USDO": { + "bsc-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "7276500000000000000000000", + "isEnabled": true, + "rate": "803880000000000000000" + }, + "out": { + "capacity": "6430000000000000000000000", + "isEnabled": true, + "rate": "745880000000000000000" + } + }, + "standard": { + "in": { + "capacity": "10500000000000000000000000", + "isEnabled": true, + "rate": "1160000000000000000000" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "1160000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "5838000000000000000000000", + "isEnabled": true, + "rate": "644960000000000000000" + }, + "out": { + "capacity": "4830000000000000000000000", + "isEnabled": true, + "rate": "560280000000000000000" + } + }, + "standard": { + "in": { + "capacity": "10500000000000000000000000", + "isEnabled": true, + "rate": "1160000000000000000000" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "1160000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "3391500000000000000000000", + "isEnabled": true, + "rate": "374680000000000000000" + }, + "out": { + "capacity": "5800000000000000000000000", + "isEnabled": true, + "rate": "672800000000000000000" + } + }, + "standard": { + "in": { + "capacity": "10500000000000000000000000", + "isEnabled": true, + "rate": "1160000000000000000000" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "1160000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + }, + "out": { + "capacity": "2020000000000000000000000", + "isEnabled": true, + "rate": "23379641600000000000" + } + }, + "standard": { + "in": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870400000000000000" + } + } + } + } + }, + "kaia-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "7686000000000000000000000", + "isEnabled": true, + "rate": "84912000000000000000" + }, + "out": { + "capacity": "13680000000000000000000000", + "isEnabled": true, + "rate": "158688000000000000000" + } + }, + "standard": { + "in": { + "capacity": "21000000000000000000000000", + "isEnabled": true, + "rate": "232000000000000000000" + }, + "out": { + "capacity": "20000000000000000000000000", + "isEnabled": true, + "rate": "232000000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 10, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "7213500000000000000000000", + "isEnabled": true, + "rate": "796920000000000000000" + }, + "out": { + "capacity": "3920000000000000000000000", + "isEnabled": true, + "rate": "454720000000000000000" + } + }, + "standard": { + "in": { + "capacity": "10500000000000000000000000", + "isEnabled": true, + "rate": "1160000000000000000000" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "1160000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "3674000000000000000000000", + "isEnabled": true, + "rate": "42523169920000000000" + }, + "out": { + "capacity": "1", + "isEnabled": true, + "rate": "0" + } + }, + "standard": { + "in": { + "capacity": "5500000000000000000000000", + "isEnabled": true, + "rate": "63657440000000000000" + }, + "out": { + "capacity": "2", + "isEnabled": true, + "rate": "1" + } + } + }, + "kaia-mainnet": { + "custom": { + "in": { + "capacity": "14238000000000000000000000", + "isEnabled": true, + "rate": "157296000000000000000" + }, + "out": { + "capacity": "6420000000000000000000000", + "isEnabled": true, + "rate": "74472000000000000000" + } + }, + "standard": { + "in": { + "capacity": "21000000000000000000000000", + "isEnabled": true, + "rate": "232000000000000000000" + }, + "out": { + "capacity": "20000000000000000000000000", + "isEnabled": true, + "rate": "232000000000000000000" + } + } + } + } + } + }, + "USDT": { + "0g-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "3590000000000", + "isEnabled": true, + "rate": "1795000000" + }, + "out": { + "capacity": "5130000000000", + "isEnabled": true, + "rate": "2565000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + } + } + }, + "bitcoin-mainnet-bitlayer-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "16850000000", + "isEnabled": true, + "rate": "3370000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "50000000000", + "isEnabled": true, + "rate": "10000000" + } + } + } + } + }, + "bitcoin-mainnet-bob-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "5960000000000", + "isEnabled": true, + "rate": "2980000000" + }, + "out": { + "capacity": "5120000000000", + "isEnabled": true, + "rate": "2560000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "4020000000000", + "isEnabled": true, + "rate": "2010000000" + }, + "out": { + "capacity": "6600000000000", + "isEnabled": true, + "rate": "3300000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "3170000000000", + "isEnabled": true, + "rate": "1585000000" + }, + "out": { + "capacity": "5890000000000", + "isEnabled": true, + "rate": "2945000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + } + } + }, + "bitcoin-mainnet-botanix": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "3040000000000", + "isEnabled": true, + "rate": "1520000000" + }, + "out": { + "capacity": "6900000000000", + "isEnabled": true, + "rate": "3450000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + } + } + }, + "celo-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "4310000000000", + "isEnabled": true, + "rate": "2155000000" + }, + "out": { + "capacity": "5170000000000", + "isEnabled": true, + "rate": "2585000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "4450000000000", + "isEnabled": true, + "rate": "2225000000" + }, + "out": { + "capacity": "5060000000000", + "isEnabled": true, + "rate": "2530000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "6730000000000", + "isEnabled": true, + "rate": "3365000000" + }, + "out": { + "capacity": "3820000000000", + "isEnabled": true, + "rate": "1910000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "celo-mainnet": { + "custom": { + "in": { + "capacity": "4620000000000", + "isEnabled": true, + "rate": "2310000000" + }, + "out": { + "capacity": "4190000000000", + "isEnabled": true, + "rate": "2095000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-hashkey-1": { + "custom": { + "in": { + "capacity": "4080000000000", + "isEnabled": true, + "rate": "2040000000" + }, + "out": { + "capacity": "4240000000000", + "isEnabled": true, + "rate": "2120000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "3600000000000", + "isEnabled": true, + "rate": "1800000000" + }, + "out": { + "capacity": "5900000000000", + "isEnabled": true, + "rate": "2950000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "3380000000000", + "isEnabled": true, + "rate": "1690000000" + }, + "out": { + "capacity": "3790000000000", + "isEnabled": true, + "rate": "1895000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + } + } + }, + "ethereum-mainnet-hashkey-1": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "3120000000000", + "isEnabled": true, + "rate": "1560000000" + }, + "out": { + "capacity": "3760000000000", + "isEnabled": true, + "rate": "1880000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "4980000000000", + "isEnabled": true, + "rate": "2490000000" + }, + "out": { + "capacity": "6080000000000", + "isEnabled": true, + "rate": "3040000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "4330000000000", + "isEnabled": true, + "rate": "2165000000" + }, + "out": { + "capacity": "4650000000000", + "isEnabled": true, + "rate": "2325000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 2, + "remote": { + "celo-mainnet": { + "custom": { + "in": { + "capacity": "3890000000000", + "isEnabled": true, + "rate": "1945000000" + }, + "out": { + "capacity": "4420000000000", + "isEnabled": true, + "rate": "2210000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "5030000000000", + "isEnabled": true, + "rate": "2515000000" + }, + "out": { + "capacity": "4660000000000", + "isEnabled": true, + "rate": "2330000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-hashkey-1": { + "custom": { + "in": { + "capacity": "5450000000000", + "isEnabled": true, + "rate": "2725000000" + }, + "out": { + "capacity": "6780000000000", + "isEnabled": true, + "rate": "3390000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "4100000000000", + "isEnabled": true, + "rate": "2050000000" + }, + "out": { + "capacity": "6560000000000", + "isEnabled": true, + "rate": "3280000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "5420000000000", + "isEnabled": true, + "rate": "2710000000" + }, + "out": { + "capacity": "6140000000000", + "isEnabled": true, + "rate": "3070000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "0g-mainnet": { + "custom": { + "in": { + "capacity": "5140000000000", + "isEnabled": true, + "rate": "2570000000" + }, + "out": { + "capacity": "5060000000000", + "isEnabled": true, + "rate": "2530000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "5570000000000", + "isEnabled": true, + "rate": "2785000000" + }, + "out": { + "capacity": "4390000000000", + "isEnabled": true, + "rate": "2195000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "bitcoin-mainnet-botanix": { + "custom": { + "in": { + "capacity": "3380000000000", + "isEnabled": true, + "rate": "1690000000" + }, + "out": { + "capacity": "3600000000000", + "isEnabled": true, + "rate": "1800000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "celo-mainnet": { + "custom": { + "in": { + "capacity": "4990000000000", + "isEnabled": true, + "rate": "2495000000" + }, + "out": { + "capacity": "6970000000000", + "isEnabled": true, + "rate": "3485000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "5880000000000", + "isEnabled": true, + "rate": "2940000000" + }, + "out": { + "capacity": "6300000000000", + "isEnabled": true, + "rate": "3150000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-hashkey-1": { + "custom": { + "in": { + "capacity": "5100000000000", + "isEnabled": true, + "rate": "2550000000" + }, + "out": { + "capacity": "6150000000000", + "isEnabled": true, + "rate": "3075000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "6150000000000", + "isEnabled": true, + "rate": "3075000000" + }, + "out": { + "capacity": "4040000000000", + "isEnabled": true, + "rate": "2020000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "6310000000000", + "isEnabled": true, + "rate": "3155000000" + }, + "out": { + "capacity": "6280000000000", + "isEnabled": true, + "rate": "3140000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "4540000000000", + "isEnabled": true, + "rate": "2270000000" + }, + "out": { + "capacity": "5930000000000", + "isEnabled": true, + "rate": "2965000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "4280000000000", + "isEnabled": true, + "rate": "2140000000" + }, + "out": { + "capacity": "6820000000000", + "isEnabled": true, + "rate": "3410000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "6640000000000", + "isEnabled": true, + "rate": "3320000000" + }, + "out": { + "capacity": "4700000000000", + "isEnabled": true, + "rate": "2350000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "6220000000000", + "isEnabled": true, + "rate": "3110000000" + }, + "out": { + "capacity": "6230000000000", + "isEnabled": true, + "rate": "3115000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + }, + "out": { + "capacity": "10000000000000", + "isEnabled": true, + "rate": "5000000000" + } + } + } + } + } + }, + "USELESS": { + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "USUAL": { + "bsc-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1431000000000000000000000", + "isEnabled": true, + "rate": "16695000000000000000" + }, + "out": { + "capacity": "2034000000000000000000000", + "isEnabled": true, + "rate": "23730000000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1356000000000000000000000", + "isEnabled": true, + "rate": "15820000000000000000" + }, + "out": { + "capacity": "1557000000000000000000000", + "isEnabled": true, + "rate": "18165000000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1707000000000000000000000", + "isEnabled": true, + "rate": "19915000000000000000" + }, + "out": { + "capacity": "930000000000000000000000", + "isEnabled": true, + "rate": "10850000000000000000" + } + }, + "standard": { + "in": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + }, + "out": { + "capacity": "3000000000000000000000000", + "isEnabled": true, + "rate": "35000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + } + } + } + }, + "USX": { + "plasma-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": null, + "remote": { + "plasma-mainnet": { + "custom": null, + "standard": null + } + } + } + }, + "VOOI": { + "bsc-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "VRTX": { + "avalanche-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "6770000000000000000000000", + "isEnabled": true, + "rate": "677000000000000000000000" + }, + "out": { + "capacity": "3420000000000000000000000", + "isEnabled": true, + "rate": "342000000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000000000" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "2200000000000000000000000", + "isEnabled": true, + "rate": "25462800000000000000" + }, + "out": { + "capacity": "1740000000000000000000000", + "isEnabled": true, + "rate": "20138760000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + } + } + }, + "ethereum-mainnet-blast-1": { + "custom": { + "in": { + "capacity": "3160000000000000000000000", + "isEnabled": true, + "rate": "36573840000000000000" + }, + "out": { + "capacity": "1885000000000000000000000", + "isEnabled": true, + "rate": "21816990000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + } + } + }, + "ethereum-mainnet-mantle-1": { + "custom": { + "in": { + "capacity": "2810000000000000000000000", + "isEnabled": true, + "rate": "32522940000000000000" + }, + "out": { + "capacity": "3090000000000000000000000", + "isEnabled": true, + "rate": "35763660000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "5440000000000000000000000", + "isEnabled": true, + "rate": "544000000000000000000000" + }, + "out": { + "capacity": "4570000000000000000000000", + "isEnabled": true, + "rate": "457000000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000000000" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "2060000000000000000000000", + "isEnabled": true, + "rate": "23842440000000000000" + }, + "out": { + "capacity": "1895000000000000000000000", + "isEnabled": true, + "rate": "21932730000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + } + } + }, + "ethereum-mainnet-blast-1": { + "custom": { + "in": { + "capacity": "2845000000000000000000000", + "isEnabled": true, + "rate": "32928030000000000000" + }, + "out": { + "capacity": "2720000000000000000000000", + "isEnabled": true, + "rate": "31481280000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-blast-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1670000000000000000000000", + "isEnabled": true, + "rate": "19328580000000000000" + }, + "out": { + "capacity": "1530000000000000000000000", + "isEnabled": true, + "rate": "17708220000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "2715000000000000000000000", + "isEnabled": true, + "rate": "31423410000000000000" + }, + "out": { + "capacity": "1785000000000000000000000", + "isEnabled": true, + "rate": "20659590000000000000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + }, + "out": { + "capacity": "5000000000000000000000000", + "isEnabled": true, + "rate": "57870000000000000000" + } + } + } + } + }, + "ethereum-mainnet-mantle-1": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "sei-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "6690000000000000000000000", + "isEnabled": true, + "rate": "669000000000000000000000" + }, + "out": { + "capacity": "4380000000000000000000000", + "isEnabled": true, + "rate": "438000000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000000000" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "VSN": { + "bsc-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "29947500000000000000000000", + "isEnabled": true, + "rate": "25047000000000000000" + }, + "out": { + "capacity": "47850000000000000000000000", + "isEnabled": true, + "rate": "44022000000000000000" + } + }, + "standard": { + "in": { + "capacity": "82500000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + }, + "out": { + "capacity": "75000000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "33825000000000000000000000", + "isEnabled": true, + "rate": "28290000000000000000" + }, + "out": { + "capacity": "38100000000000000000000000", + "isEnabled": true, + "rate": "35052000000000000000" + } + }, + "standard": { + "in": { + "capacity": "82500000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + }, + "out": { + "capacity": "75000000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "41085000000000000000000000", + "isEnabled": true, + "rate": "34362000000000000000" + }, + "out": { + "capacity": "40650000000000000000000000", + "isEnabled": true, + "rate": "37398000000000000000" + } + }, + "standard": { + "in": { + "capacity": "82500000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + }, + "out": { + "capacity": "75000000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "53377500000000000000000000", + "isEnabled": true, + "rate": "44643000000000000000" + }, + "out": { + "capacity": "49725000000000000000000000", + "isEnabled": true, + "rate": "45747000000000000000" + } + }, + "standard": { + "in": { + "capacity": "82500000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + }, + "out": { + "capacity": "75000000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + } + } + } + } + }, + "hyperliquid-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "25162500000000000000000000", + "isEnabled": true, + "rate": "21045000000000000000" + }, + "out": { + "capacity": "32025000000000000000000000", + "isEnabled": true, + "rate": "29463000000000000000" + } + }, + "standard": { + "in": { + "capacity": "82500000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + }, + "out": { + "capacity": "75000000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "45375000000000000000000000", + "isEnabled": true, + "rate": "37950000000000000000" + }, + "out": { + "capacity": "37875000000000000000000000", + "isEnabled": true, + "rate": "34845000000000000000" + } + }, + "standard": { + "in": { + "capacity": "82500000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + }, + "out": { + "capacity": "75000000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "29370000000000000000000000", + "isEnabled": true, + "rate": "24564000000000000000" + }, + "out": { + "capacity": "52350000000000000000000000", + "isEnabled": true, + "rate": "48162000000000000000" + } + }, + "standard": { + "in": { + "capacity": "82500000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + }, + "out": { + "capacity": "75000000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + } + } + }, + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "36877500000000000000000000", + "isEnabled": true, + "rate": "30843000000000000000" + }, + "out": { + "capacity": "30900000000000000000000000", + "isEnabled": true, + "rate": "28428000000000000000" + } + }, + "standard": { + "in": { + "capacity": "82500000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + }, + "out": { + "capacity": "75000000000000000000000000", + "isEnabled": true, + "rate": "69000000000000000000" + } + } + } + } + } + }, + "W0G": { + "0g-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 9, + "remote": { + "0g-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 8, + "remote": { + "0g-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "0g-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "WASTR": { + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "polkadot-mainnet-astar": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "4880000000000000000000000", + "isEnabled": true, + "rate": "1355664000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "2778000000000000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "3270000000000000000000000", + "isEnabled": true, + "rate": "908406000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "2778000000000000000000" + } + } + } + } + }, + "polkadot-mainnet-astar": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "5190000000000000000000000", + "isEnabled": true, + "rate": "1441782000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "10000000000000000000000000", + "isEnabled": true, + "rate": "2778000000000000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "10720000000000000000000000", + "isEnabled": true, + "rate": "2978016000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "20000000000000000000000000", + "isEnabled": true, + "rate": "5556000000000000000000" + } + } + } + } + }, + "soneium-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "polkadot-mainnet-astar": { + "custom": null, + "standard": null + } + } + } + }, + "WBTC": { + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "2100000000", + "isEnabled": true, + "rate": "24305" + }, + "out": { + "capacity": "2381400000", + "isEnabled": true, + "rate": "27562" + } + }, + "standard": { + "in": { + "capacity": "4200000000", + "isEnabled": true, + "rate": "48610" + }, + "out": { + "capacity": "3780000000", + "isEnabled": true, + "rate": "43750" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1650600000", + "isEnabled": true, + "rate": "19103" + }, + "out": { + "capacity": "2570400000", + "isEnabled": true, + "rate": "29750" + } + }, + "standard": { + "in": { + "capacity": "4200000000", + "isEnabled": true, + "rate": "48610" + }, + "out": { + "capacity": "3780000000", + "isEnabled": true, + "rate": "43750" + } + } + } + } + } + }, + "WECO": { + "bsc-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "189000000000000000000000000", + "isEnabled": true, + "rate": "13124160000000000000000" + }, + "out": { + "capacity": "190000000000000000000000000", + "isEnabled": true, + "rate": "13193600000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + }, + "out": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + } + } + }, + "mainnet": { + "custom": null, + "standard": null + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "177500000000000000000000000", + "isEnabled": true, + "rate": "12325600000000000000000" + }, + "out": { + "capacity": "220500000000000000000000000", + "isEnabled": true, + "rate": "15311520000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + }, + "out": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "176000000000000000000000000", + "isEnabled": true, + "rate": "12221440000000000000000" + }, + "out": { + "capacity": "253000000000000000000000000", + "isEnabled": true, + "rate": "17568320000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + }, + "out": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "216500000000000000000000000", + "isEnabled": true, + "rate": "15033760000000000000000" + }, + "out": { + "capacity": "322500000000000000000000000", + "isEnabled": true, + "rate": "22394400000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + }, + "out": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "199500000000000000000000000", + "isEnabled": true, + "rate": "13853280000000000000000" + }, + "out": { + "capacity": "193000000000000000000000000", + "isEnabled": true, + "rate": "13401920000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + }, + "out": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "302000000000000000000000000", + "isEnabled": true, + "rate": "20970880000000000000000" + }, + "out": { + "capacity": "238000000000000000000000000", + "isEnabled": true, + "rate": "16526720000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + }, + "out": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "198500000000000000000000000", + "isEnabled": true, + "rate": "13783840000000000000000" + }, + "out": { + "capacity": "211500000000000000000000000", + "isEnabled": true, + "rate": "14686560000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + }, + "out": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + } + } + }, + "matic-mainnet": { + "custom": null, + "standard": null + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "168000000000000000000000000", + "isEnabled": true, + "rate": "11665920000000000000000" + }, + "out": { + "capacity": "167000000000000000000000000", + "isEnabled": true, + "rate": "11596480000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + }, + "out": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "204000000000000000000000000", + "isEnabled": true, + "rate": "14165760000000000000000" + }, + "out": { + "capacity": "253000000000000000000000000", + "isEnabled": true, + "rate": "17568320000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + }, + "out": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "254500000000000000000000000", + "isEnabled": true, + "rate": "17672480000000000000000" + }, + "out": { + "capacity": "168000000000000000000000000", + "isEnabled": true, + "rate": "11665920000000000000000" + } + }, + "standard": { + "in": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + }, + "out": { + "capacity": "500000000000000000000000000", + "isEnabled": true, + "rate": "34720000000000000000000" + } + } + } + } + } + }, + "WETH": { + "bitcoin-mainnet-bitlayer-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "12366000000000000000", + "isEnabled": true, + "rate": "3435000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "18000000000000000000", + "isEnabled": true, + "rate": "5000000000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "36481500000000000000", + "isEnabled": true, + "rate": "10133748660000000" + }, + "out": { + "capacity": "28314000000000000000", + "isEnabled": true, + "rate": "7864998960000000" + } + }, + "standard": { + "in": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "52635000000000000000", + "isEnabled": true, + "rate": "14620831400000000" + }, + "out": { + "capacity": "47825250000000000000", + "isEnabled": true, + "rate": "13284789910000000" + } + }, + "standard": { + "in": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "31458960000000000000", + "isEnabled": true, + "rate": "8738599999999999" + }, + "out": { + "capacity": "60076500000000000000", + "isEnabled": true, + "rate": "16687916666666666" + } + }, + "standard": { + "in": { + "capacity": "100830000000000000000", + "isEnabled": true, + "rate": "28008333333333333" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208333333333333" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "47280750000000000000", + "isEnabled": true, + "rate": "13133539930000000" + }, + "out": { + "capacity": "43923000000000000000", + "isEnabled": true, + "rate": "12200831720000000" + } + }, + "standard": { + "in": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "37389000000000000000", + "isEnabled": true, + "rate": "10385831960000000" + }, + "out": { + "capacity": "30764250000000000000", + "isEnabled": true, + "rate": "8545623870000000" + } + }, + "standard": { + "in": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "58481400000000000000", + "isEnabled": true, + "rate": "16244833333333333" + }, + "out": { + "capacity": "60984000000000000000", + "isEnabled": true, + "rate": "16939999999999999" + } + }, + "standard": { + "in": { + "capacity": "100830000000000000000", + "isEnabled": true, + "rate": "28008333333333333" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208333333333333" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "13453200000000000000", + "isEnabled": true, + "rate": "3737000000000000" + }, + "out": { + "capacity": "9120000000000000000", + "isEnabled": true, + "rate": "2533333333333333" + } + }, + "standard": { + "in": { + "capacity": "33300000000000000000", + "isEnabled": true, + "rate": "9250000000000000" + }, + "out": { + "capacity": "30000000000000000000", + "isEnabled": true, + "rate": "8333333333333333" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "61528500000000000000", + "isEnabled": true, + "rate": "17091247740000000" + }, + "out": { + "capacity": "47825250000000000000", + "isEnabled": true, + "rate": "13284789910000000" + } + }, + "standard": { + "in": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "57263250000000000000", + "isEnabled": true, + "rate": "15906456230000000" + }, + "out": { + "capacity": "36753750000000000000", + "isEnabled": true, + "rate": "10209373650000000" + } + }, + "standard": { + "in": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208330000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "31458960000000000000", + "isEnabled": true, + "rate": "8738599999999999" + }, + "out": { + "capacity": "57807750000000000000", + "isEnabled": true, + "rate": "16057708333333333" + } + }, + "standard": { + "in": { + "capacity": "100830000000000000000", + "isEnabled": true, + "rate": "28008333333333333" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208333333333333" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "36252000000000000000", + "isEnabled": true, + "rate": "10176000000000000" + }, + "out": { + "capacity": "38760000000000000000", + "isEnabled": true, + "rate": "10880000000000000" + } + }, + "standard": { + "in": { + "capacity": "114000000000000000000", + "isEnabled": true, + "rate": "32000000000000000" + }, + "out": { + "capacity": "114000000000000000000", + "isEnabled": true, + "rate": "32000000000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "40634490000000000000", + "isEnabled": true, + "rate": "11287358333333333" + }, + "out": { + "capacity": "33033000000000000000", + "isEnabled": true, + "rate": "9175833333333333" + } + }, + "standard": { + "in": { + "capacity": "100830000000000000000", + "isEnabled": true, + "rate": "28008333333333333" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208333333333333" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "35290500000000000000", + "isEnabled": true, + "rate": "9802916666666666" + }, + "out": { + "capacity": "40928250000000000000", + "isEnabled": true, + "rate": "11368958333333333" + } + }, + "standard": { + "in": { + "capacity": "100830000000000000000", + "isEnabled": true, + "rate": "28008333333333333" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208333333333333" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "17582400000000000000", + "isEnabled": true, + "rate": "4884000000000000" + }, + "out": { + "capacity": "17940000000000000000", + "isEnabled": true, + "rate": "4983333333333333" + } + }, + "standard": { + "in": { + "capacity": "33300000000000000000", + "isEnabled": true, + "rate": "9250000000000000" + }, + "out": { + "capacity": "30000000000000000000", + "isEnabled": true, + "rate": "8333333333333333" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "59792190000000000000", + "isEnabled": true, + "rate": "16608941666666666" + }, + "out": { + "capacity": "39476250000000000000", + "isEnabled": true, + "rate": "10965624999999999" + } + }, + "standard": { + "in": { + "capacity": "100830000000000000000", + "isEnabled": true, + "rate": "28008333333333333" + }, + "out": { + "capacity": "90750000000000000000", + "isEnabled": true, + "rate": "25208333333333333" + } + } + }, + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "WFRAGSOL": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 3, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "1000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "WHLP": { + "hyperliquid-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "WHSK": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-hashkey-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-hashkey-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-hashkey-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "WHY": { + "bsc-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "WLD": { + "ethereum-mainnet-worldchain-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "36900000000000000000000", + "isEnabled": true, + "rate": "10249971300000000000" + }, + "out": { + "capacity": "67900000000000000000000", + "isEnabled": true, + "rate": "18861058300000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "27777700000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "27777700000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-worldchain-1": { + "custom": { + "in": { + "capacity": "50900000000000000000000", + "isEnabled": true, + "rate": "14138849300000000000" + }, + "out": { + "capacity": "67300000000000000000000", + "isEnabled": true, + "rate": "18694392100000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "27777700000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "27777700000000000000" + } + } + } + } + } + }, + "WLFI": { + "bsc-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "WMTX": { + "bsc-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "602000000000", + "isEnabled": true, + "rate": "167217540" + }, + "out": { + "capacity": "532000000000", + "isEnabled": true, + "rate": "147773640" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1865000000000", + "isEnabled": true, + "rate": "86349500" + }, + "out": { + "capacity": "3305000000000", + "isEnabled": true, + "rate": "153021500" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "231500000" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "231500000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "561000000000", + "isEnabled": true, + "rate": "155828970" + }, + "out": { + "capacity": "560000000000", + "isEnabled": true, + "rate": "155551200" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 10, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "499000000000", + "isEnabled": true, + "rate": "138607230" + }, + "out": { + "capacity": "349000000000", + "isEnabled": true, + "rate": "96941730" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "617000000000", + "isEnabled": true, + "rate": "171384090" + }, + "out": { + "capacity": "382000000000", + "isEnabled": true, + "rate": "106108140" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "3255000000000", + "isEnabled": true, + "rate": "150706500" + }, + "out": { + "capacity": "2795000000000", + "isEnabled": true, + "rate": "129408500" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "231500000" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "231500000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "353000000000", + "isEnabled": true, + "rate": "98052810" + }, + "out": { + "capacity": "324000000000", + "isEnabled": true, + "rate": "89997480" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "494000000000", + "isEnabled": true, + "rate": "137218380" + }, + "out": { + "capacity": "529000000000", + "isEnabled": true, + "rate": "146940330" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "384000000000", + "isEnabled": true, + "rate": "106663680" + }, + "out": { + "capacity": "368000000000", + "isEnabled": true, + "rate": "102219360" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "351000000000", + "isEnabled": true, + "rate": "97497270" + }, + "out": { + "capacity": "497000000000", + "isEnabled": true, + "rate": "138051690" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "306000000000", + "isEnabled": true, + "rate": "84997620" + }, + "out": { + "capacity": "638000000000", + "isEnabled": true, + "rate": "177217260" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 5, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "2600000000000", + "isEnabled": true, + "rate": "120380000" + }, + "out": { + "capacity": "2820000000000", + "isEnabled": true, + "rate": "130566000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "231500000" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "231500000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "2600000000000", + "isEnabled": true, + "rate": "120380000" + }, + "out": { + "capacity": "3420000000000", + "isEnabled": true, + "rate": "158346000" + } + }, + "standard": { + "in": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "231500000" + }, + "out": { + "capacity": "5000000000000", + "isEnabled": true, + "rate": "231500000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "606000000000", + "isEnabled": true, + "rate": "168328620" + }, + "out": { + "capacity": "536000000000", + "isEnabled": true, + "rate": "148884720" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "681000000000", + "isEnabled": true, + "rate": "189161370" + }, + "out": { + "capacity": "666000000000", + "isEnabled": true, + "rate": "184994820" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "533000000000", + "isEnabled": true, + "rate": "148051410" + }, + "out": { + "capacity": "626000000000", + "isEnabled": true, + "rate": "173884020" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "501000000000", + "isEnabled": true, + "rate": "139162770" + }, + "out": { + "capacity": "581000000000", + "isEnabled": true, + "rate": "161384370" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "567000000000", + "isEnabled": true, + "rate": "157495590" + }, + "out": { + "capacity": "484000000000", + "isEnabled": true, + "rate": "134440680" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "382000000000", + "isEnabled": true, + "rate": "106108140" + }, + "out": { + "capacity": "495000000000", + "isEnabled": true, + "rate": "137496150" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "277770000" + } + } + } + } + } + }, + "wOETH": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "70566000000000000000", + "isEnabled": true, + "rate": "19808000000000000" + }, + "out": { + "capacity": "78774000000000000000", + "isEnabled": true, + "rate": "22112000000000000" + } + }, + "standard": { + "in": { + "capacity": "114000000000000000000", + "isEnabled": true, + "rate": "32000000000000000" + }, + "out": { + "capacity": "114000000000000000000", + "isEnabled": true, + "rate": "32000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "924000000000000000000", + "isEnabled": true, + "rate": "256872000000000000" + }, + "out": { + "capacity": "825000000000000000000", + "isEnabled": true, + "rate": "229350000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000", + "isEnabled": true, + "rate": "417000000000000000" + }, + "out": { + "capacity": "1500000000000000000000", + "isEnabled": true, + "rate": "417000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "77178000000000000000", + "isEnabled": true, + "rate": "21664000000000000" + }, + "out": { + "capacity": "39102000000000000000", + "isEnabled": true, + "rate": "10976000000000000" + } + }, + "standard": { + "in": { + "capacity": "114000000000000000000", + "isEnabled": true, + "rate": "32000000000000000" + }, + "out": { + "capacity": "114000000000000000000", + "isEnabled": true, + "rate": "32000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "400000000000000000000", + "isEnabled": true, + "rate": "111120000000000000" + }, + "out": { + "capacity": "682000000000000000000", + "isEnabled": true, + "rate": "189459600000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "277800000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "277800000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "493500000000000000000", + "isEnabled": true, + "rate": "137193000000000000" + }, + "out": { + "capacity": "484500000000000000000", + "isEnabled": true, + "rate": "134691000000000000" + } + }, + "standard": { + "in": { + "capacity": "1500000000000000000000", + "isEnabled": true, + "rate": "417000000000000000" + }, + "out": { + "capacity": "1500000000000000000000", + "isEnabled": true, + "rate": "417000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "414000000000000000000", + "isEnabled": true, + "rate": "115009200000000000" + }, + "out": { + "capacity": "671000000000000000000", + "isEnabled": true, + "rate": "186403800000000000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "277800000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "277800000000000000" + } + } + } + } + } + }, + "WOLF": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": null, + "standard": null + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "WOW": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "shibarium-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "shibarium-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "WSDM": { + "bsc-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "657000000000", + "isEnabled": true, + "rate": "7884000" + }, + "out": { + "capacity": "596000000000", + "isEnabled": true, + "rate": "7152000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "513000000000", + "isEnabled": true, + "rate": "6156000" + }, + "out": { + "capacity": "558000000000", + "isEnabled": true, + "rate": "6696000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "575000000000", + "isEnabled": true, + "rate": "6900000" + }, + "out": { + "capacity": "574000000000", + "isEnabled": true, + "rate": "6888000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 10, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "305000000000", + "isEnabled": true, + "rate": "3660000" + }, + "out": { + "capacity": "406000000000", + "isEnabled": true, + "rate": "4872000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "522000000000", + "isEnabled": true, + "rate": "6264000" + }, + "out": { + "capacity": "386000000000", + "isEnabled": true, + "rate": "4632000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "500000000000", + "isEnabled": true, + "rate": "6000000" + }, + "out": { + "capacity": "527000000000", + "isEnabled": true, + "rate": "6324000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "598000000000", + "isEnabled": true, + "rate": "7176000" + }, + "out": { + "capacity": "459000000000", + "isEnabled": true, + "rate": "5508000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "674000000000", + "isEnabled": true, + "rate": "8088000" + }, + "out": { + "capacity": "364000000000", + "isEnabled": true, + "rate": "4368000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "485000000000", + "isEnabled": true, + "rate": "5820000" + }, + "out": { + "capacity": "380000000000", + "isEnabled": true, + "rate": "4560000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "315000000000", + "isEnabled": true, + "rate": "3780000" + }, + "out": { + "capacity": "578000000000", + "isEnabled": true, + "rate": "6936000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "474000000000", + "isEnabled": true, + "rate": "5688000" + }, + "out": { + "capacity": "300000000000", + "isEnabled": true, + "rate": "3600000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "394000000000", + "isEnabled": true, + "rate": "4728000" + }, + "out": { + "capacity": "362000000000", + "isEnabled": true, + "rate": "4344000" + } + }, + "standard": { + "in": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + }, + "out": { + "capacity": "1000000000000", + "isEnabled": true, + "rate": "12000000" + } + } + } + } + } + }, + "wstETH": { + "0g-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "71706000000000000000", + "isEnabled": true, + "rate": "20128000000000000" + }, + "out": { + "capacity": "56202000000000000000", + "isEnabled": true, + "rate": "15776000000000000" + } + }, + "standard": { + "in": { + "capacity": "114000000000000000000", + "isEnabled": true, + "rate": "32000000000000000" + }, + "out": { + "capacity": "114000000000000000000", + "isEnabled": true, + "rate": "32000000000000000" + } + } + } + } + }, + "bitcoin-mainnet-bitlayer-1": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "12366000000000000000", + "isEnabled": true, + "rate": "3435000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "18000000000000000000", + "isEnabled": true, + "rate": "5000000000000000" + } + } + } + } + }, + "ethereum-mainnet-ink-1": { + "minBlockConfirmation": 4, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1296000000000000000000", + "isEnabled": true, + "rate": "14999999994720000" + }, + "out": { + "capacity": "742000000000000000000", + "isEnabled": true, + "rate": "8587962959940000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + }, + "out": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + } + } + }, + "monad-mainnet": { + "custom": { + "in": { + "capacity": "1342000000000000000000", + "isEnabled": true, + "rate": "15532407401940000" + }, + "out": { + "capacity": "614000000000000000000", + "isEnabled": true, + "rate": "7106481478980000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + }, + "out": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "946000000000000000000", + "isEnabled": true, + "rate": "10949074070220000" + }, + "out": { + "capacity": "1282000000000000000000", + "isEnabled": true, + "rate": "14837962957740000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + }, + "out": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "0g-mainnet": { + "custom": null, + "standard": null + }, + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "67944000000000000000", + "isEnabled": true, + "rate": "19072000000000000" + }, + "out": { + "capacity": "75354000000000000000", + "isEnabled": true, + "rate": "21152000000000000" + } + }, + "standard": { + "in": { + "capacity": "114000000000000000000", + "isEnabled": true, + "rate": "32000000000000000" + }, + "out": { + "capacity": "114000000000000000000", + "isEnabled": true, + "rate": "32000000000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "950000000000000000000", + "isEnabled": true, + "rate": "10995370366500000" + }, + "out": { + "capacity": "730000000000000000000", + "isEnabled": true, + "rate": "8449074071100000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + }, + "out": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + } + } + }, + "monad-mainnet": { + "custom": { + "in": { + "capacity": "678000000000000000000", + "isEnabled": true, + "rate": "7847222219460000" + }, + "out": { + "capacity": "806000000000000000000", + "isEnabled": true, + "rate": "9328703700420000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + }, + "out": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "658000000000000000000", + "isEnabled": true, + "rate": "7615740738060000" + }, + "out": { + "capacity": "1274000000000000000000", + "isEnabled": true, + "rate": "14745370365180000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + }, + "out": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + } + } + } + } + }, + "monad-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1234000000000000000000", + "isEnabled": true, + "rate": "14282407402380000" + }, + "out": { + "capacity": "664000000000000000000", + "isEnabled": true, + "rate": "7685185182480000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + }, + "out": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1268000000000000000000", + "isEnabled": true, + "rate": "14675925920760000" + }, + "out": { + "capacity": "1256000000000000000000", + "isEnabled": true, + "rate": "14537037031920000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + }, + "out": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "892000000000000000000", + "isEnabled": true, + "rate": "10324074070440000" + }, + "out": { + "capacity": "1292000000000000000000", + "isEnabled": true, + "rate": "14953703698440000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + }, + "out": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + } + } + } + } + }, + "plasma-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-ink-1": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "11574074070000000" + }, + "out": { + "capacity": "1124000000000000000000", + "isEnabled": true, + "rate": "13009259254680000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + }, + "out": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + } + } + }, + "monad-mainnet": { + "custom": { + "in": { + "capacity": "1244000000000000000000", + "isEnabled": true, + "rate": "14398148143080000" + }, + "out": { + "capacity": "634000000000000000000", + "isEnabled": true, + "rate": "7337962960380000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + }, + "out": { + "capacity": "2000000000000000000000", + "isEnabled": true, + "rate": "23148148140000000" + } + } + } + } + } + }, + "wstLINK": { + "avalanche-mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "9795000000000000000000", + "isEnabled": true, + "rate": "2612000000000000000" + }, + "out": { + "capacity": "7230000000000000000000", + "isEnabled": true, + "rate": "1928000000000000000" + } + }, + "standard": { + "in": { + "capacity": "15000000000000000000000", + "isEnabled": true, + "rate": "4000000000000000000" + }, + "out": { + "capacity": "15000000000000000000000", + "isEnabled": true, + "rate": "4000000000000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "5805000000000000000000", + "isEnabled": true, + "rate": "1548000000000000000" + }, + "out": { + "capacity": "10245000000000000000000", + "isEnabled": true, + "rate": "2732000000000000000" + } + }, + "standard": { + "in": { + "capacity": "15000000000000000000000", + "isEnabled": true, + "rate": "4000000000000000000" + }, + "out": { + "capacity": "15000000000000000000000", + "isEnabled": true, + "rate": "4000000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "wstPOL": { + "avalanche-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "wUSDx": { + "bsc-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "228830000000", + "isEnabled": true, + "rate": "63563837" + }, + "out": { + "capacity": "314580000000", + "isEnabled": true, + "rate": "87383262" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "185710000000", + "isEnabled": true, + "rate": "51586069" + }, + "out": { + "capacity": "327320000000", + "isEnabled": true, + "rate": "90922148" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "231280000000", + "isEnabled": true, + "rate": "64244392" + }, + "out": { + "capacity": "265580000000", + "isEnabled": true, + "rate": "73772162" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "237650000000", + "isEnabled": true, + "rate": "66013835" + }, + "out": { + "capacity": "249900000000", + "isEnabled": true, + "rate": "69416610" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "315070000000", + "isEnabled": true, + "rate": "87519373" + }, + "out": { + "capacity": "215110000000", + "isEnabled": true, + "rate": "59752729" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "294980000000", + "isEnabled": true, + "rate": "81938822" + }, + "out": { + "capacity": "187180000000", + "isEnabled": true, + "rate": "51994402" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "299390000000", + "isEnabled": true, + "rate": "83163821" + }, + "out": { + "capacity": "193060000000", + "isEnabled": true, + "rate": "53627734" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "289590000000", + "isEnabled": true, + "rate": "80441601" + }, + "out": { + "capacity": "331730000000", + "isEnabled": true, + "rate": "92147147" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "189630000000", + "isEnabled": true, + "rate": "52674957" + }, + "out": { + "capacity": "155330000000", + "isEnabled": true, + "rate": "43147187" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "248430000000", + "isEnabled": true, + "rate": "69008277" + }, + "out": { + "capacity": "154350000000", + "isEnabled": true, + "rate": "42874965" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "325360000000", + "isEnabled": true, + "rate": "90377704" + }, + "out": { + "capacity": "316540000000", + "isEnabled": true, + "rate": "87927706" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "165620000000", + "isEnabled": true, + "rate": "46005518" + }, + "out": { + "capacity": "161700000000", + "isEnabled": true, + "rate": "44916630" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "297920000000", + "isEnabled": true, + "rate": "82755488" + }, + "out": { + "capacity": "212660000000", + "isEnabled": true, + "rate": "59072174" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "261660000000", + "isEnabled": true, + "rate": "72683274" + }, + "out": { + "capacity": "246470000000", + "isEnabled": true, + "rate": "68463833" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "271460000000", + "isEnabled": true, + "rate": "75405494" + }, + "out": { + "capacity": "184240000000", + "isEnabled": true, + "rate": "51177736" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "267540000000", + "isEnabled": true, + "rate": "74316606" + }, + "out": { + "capacity": "317520000000", + "isEnabled": true, + "rate": "88199928" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "308210000000", + "isEnabled": true, + "rate": "85613819" + }, + "out": { + "capacity": "213150000000", + "isEnabled": true, + "rate": "59208285" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "171500000000", + "isEnabled": true, + "rate": "47638850" + }, + "out": { + "capacity": "318500000000", + "isEnabled": true, + "rate": "88472150" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + } + } + }, + "ethereum-mainnet-mode-1": { + "minBlockConfirmation": 7, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "202860000000", + "isEnabled": true, + "rate": "56349954" + }, + "out": { + "capacity": "197960000000", + "isEnabled": true, + "rate": "54988844" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "179340000000", + "isEnabled": true, + "rate": "49816626" + }, + "out": { + "capacity": "266560000000", + "isEnabled": true, + "rate": "74044384" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "182280000000", + "isEnabled": true, + "rate": "50633292" + }, + "out": { + "capacity": "218540000000", + "isEnabled": true, + "rate": "60705506" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "247450000000", + "isEnabled": true, + "rate": "68736055" + }, + "out": { + "capacity": "173950000000", + "isEnabled": true, + "rate": "48319405" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "247940000000", + "isEnabled": true, + "rate": "68872166" + }, + "out": { + "capacity": "163660000000", + "isEnabled": true, + "rate": "45461074" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "294980000000", + "isEnabled": true, + "rate": "81938822" + }, + "out": { + "capacity": "173950000000", + "isEnabled": true, + "rate": "48319405" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 5, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "282240000000", + "isEnabled": true, + "rate": "78399936" + }, + "out": { + "capacity": "239610000000", + "isEnabled": true, + "rate": "66558279" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "188160000000", + "isEnabled": true, + "rate": "52266624" + }, + "out": { + "capacity": "267540000000", + "isEnabled": true, + "rate": "74316606" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "235690000000", + "isEnabled": true, + "rate": "65469391" + }, + "out": { + "capacity": "174440000000", + "isEnabled": true, + "rate": "48455516" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "250880000000", + "isEnabled": true, + "rate": "69688832" + }, + "out": { + "capacity": "303310000000", + "isEnabled": true, + "rate": "84252709" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "269500000000", + "isEnabled": true, + "rate": "74861050" + }, + "out": { + "capacity": "281260000000", + "isEnabled": true, + "rate": "78127714" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "177870000000", + "isEnabled": true, + "rate": "49408293" + }, + "out": { + "capacity": "202860000000", + "isEnabled": true, + "rate": "56349954" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "181790000000", + "isEnabled": true, + "rate": "50497181" + }, + "out": { + "capacity": "338100000000", + "isEnabled": true, + "rate": "93916590" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "260680000000", + "isEnabled": true, + "rate": "72411052" + }, + "out": { + "capacity": "148960000000", + "isEnabled": true, + "rate": "41377744" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "254800000000", + "isEnabled": true, + "rate": "70777720" + }, + "out": { + "capacity": "186690000000", + "isEnabled": true, + "rate": "51858291" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "226870000000", + "isEnabled": true, + "rate": "63019393" + }, + "out": { + "capacity": "295960000000", + "isEnabled": true, + "rate": "82211044" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": null, + "standard": null + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "269010000000", + "isEnabled": true, + "rate": "74724939" + }, + "out": { + "capacity": "158760000000", + "isEnabled": true, + "rate": "44099964" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "325360000000", + "isEnabled": true, + "rate": "90377704" + }, + "out": { + "capacity": "295470000000", + "isEnabled": true, + "rate": "82074933" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "214130000000", + "isEnabled": true, + "rate": "59480507" + }, + "out": { + "capacity": "261660000000", + "isEnabled": true, + "rate": "72683274" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "248920000000", + "isEnabled": true, + "rate": "69144388" + }, + "out": { + "capacity": "184240000000", + "isEnabled": true, + "rate": "51177736" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-mode-1": { + "custom": { + "in": { + "capacity": "158760000000", + "isEnabled": true, + "rate": "44099964" + }, + "out": { + "capacity": "249900000000", + "isEnabled": true, + "rate": "69416610" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "303800000000", + "isEnabled": true, + "rate": "84388820" + }, + "out": { + "capacity": "246470000000", + "isEnabled": true, + "rate": "68463833" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "213640000000", + "isEnabled": true, + "rate": "59344396" + }, + "out": { + "capacity": "250390000000", + "isEnabled": true, + "rate": "69552721" + } + }, + "standard": { + "in": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + }, + "out": { + "capacity": "490000000000", + "isEnabled": true, + "rate": "136111000" + } + } + } + } + } + }, + "xGold": { + "bsc-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "hedera-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "hyperliquid-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "hedera-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "bsc-mainnet": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "XLAB": { + "bsc-mainnet": { + "minBlockConfirmation": 1, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "xrETH": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "xRPL": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "xSILO": { + "avalanche-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "xSolvBTC": { + "avalanche-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "950000000000000000", + "isEnabled": true, + "rate": "43981200000000" + }, + "out": { + "capacity": "1235000000000000000", + "isEnabled": true, + "rate": "57175560000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1335000000000000000", + "isEnabled": true, + "rate": "61805160000000" + }, + "out": { + "capacity": "1057500000000000000", + "isEnabled": true, + "rate": "48958020000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1537500000000000000", + "isEnabled": true, + "rate": "71180100000000" + }, + "out": { + "capacity": "1240000000000000000", + "isEnabled": true, + "rate": "57407040000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1167500000000000000", + "isEnabled": true, + "rate": "54050580000000" + }, + "out": { + "capacity": "1492500000000000000", + "isEnabled": true, + "rate": "69096780000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1460000000000000000", + "isEnabled": true, + "rate": "67592160000000" + }, + "out": { + "capacity": "1727500000000000000", + "isEnabled": true, + "rate": "79976340000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1317500000000000000", + "isEnabled": true, + "rate": "60994980000000" + }, + "out": { + "capacity": "885000000000000000", + "isEnabled": true, + "rate": "40971960000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1457500000000000000", + "isEnabled": true, + "rate": "67476420000000" + }, + "out": { + "capacity": "885000000000000000", + "isEnabled": true, + "rate": "40971960000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1130000000000000000", + "isEnabled": true, + "rate": "52314480000000" + }, + "out": { + "capacity": "800000000000000000", + "isEnabled": true, + "rate": "37036800000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "berachain-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "857500000000000000", + "isEnabled": true, + "rate": "39698820000000" + }, + "out": { + "capacity": "1092500000000000000", + "isEnabled": true, + "rate": "50578380000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1650000000000000000", + "isEnabled": true, + "rate": "76388400000000" + }, + "out": { + "capacity": "1027500000000000000", + "isEnabled": true, + "rate": "47569140000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "810000000000000000", + "isEnabled": true, + "rate": "37499760000000" + }, + "out": { + "capacity": "1267500000000000000", + "isEnabled": true, + "rate": "58680180000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "bitcoin-mainnet-bob-1": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1297500000000000000", + "isEnabled": true, + "rate": "60069060000000" + }, + "out": { + "capacity": "960000000000000000", + "isEnabled": true, + "rate": "44444160000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "887500000000000000", + "isEnabled": true, + "rate": "41087700000000" + }, + "out": { + "capacity": "1027500000000000000", + "isEnabled": true, + "rate": "47569140000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "922500000000000000", + "isEnabled": true, + "rate": "42708060000000" + }, + "out": { + "capacity": "1150000000000000000", + "isEnabled": true, + "rate": "53240400000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "997500000000000000", + "isEnabled": true, + "rate": "46180260000000" + }, + "out": { + "capacity": "1552500000000000000", + "isEnabled": true, + "rate": "71874540000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "792500000000000000", + "isEnabled": true, + "rate": "36689580000000" + }, + "out": { + "capacity": "1035000000000000000", + "isEnabled": true, + "rate": "47916360000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1472500000000000000", + "isEnabled": true, + "rate": "68170860000000" + }, + "out": { + "capacity": "1395000000000000000", + "isEnabled": true, + "rate": "64582920000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1672500000000000000", + "isEnabled": true, + "rate": "77430060000000" + }, + "out": { + "capacity": "857500000000000000", + "isEnabled": true, + "rate": "39698820000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "1035000000000000000", + "isEnabled": true, + "rate": "47916360000000" + }, + "out": { + "capacity": "1187500000000000000", + "isEnabled": true, + "rate": "54976500000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "920000000000000000", + "isEnabled": true, + "rate": "42592320000000" + }, + "out": { + "capacity": "1522500000000000000", + "isEnabled": true, + "rate": "70485660000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1102500000000000000", + "isEnabled": true, + "rate": "51041340000000" + }, + "out": { + "capacity": "1515000000000000000", + "isEnabled": true, + "rate": "70138440000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1072500000000000000", + "isEnabled": true, + "rate": "49652460000000" + }, + "out": { + "capacity": "917500000000000000", + "isEnabled": true, + "rate": "42476580000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1007500000000000000", + "isEnabled": true, + "rate": "46643220000000" + }, + "out": { + "capacity": "937500000000000000", + "isEnabled": true, + "rate": "43402500000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "910000000000000000", + "isEnabled": true, + "rate": "42129360000000" + }, + "out": { + "capacity": "1447500000000000000", + "isEnabled": true, + "rate": "67013460000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "berachain-mainnet": { + "custom": null, + "standard": null + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "790000000000000000", + "isEnabled": true, + "rate": "36573840000000" + }, + "out": { + "capacity": "880000000000000000", + "isEnabled": true, + "rate": "40740480000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "872500000000000000", + "isEnabled": true, + "rate": "40393260000000" + }, + "out": { + "capacity": "1317500000000000000", + "isEnabled": true, + "rate": "60994980000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1005000000000000000", + "isEnabled": true, + "rate": "46527480000000" + }, + "out": { + "capacity": "1310000000000000000", + "isEnabled": true, + "rate": "60647760000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "865000000000000000", + "isEnabled": true, + "rate": "40046040000000" + }, + "out": { + "capacity": "1645000000000000000", + "isEnabled": true, + "rate": "76156920000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1087500000000000000", + "isEnabled": true, + "rate": "50346900000000" + }, + "out": { + "capacity": "1432500000000000000", + "isEnabled": true, + "rate": "66319020000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "1220000000000000000", + "isEnabled": true, + "rate": "56481120000000" + }, + "out": { + "capacity": "1592500000000000000", + "isEnabled": true, + "rate": "73726380000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1337500000000000000", + "isEnabled": true, + "rate": "61920900000000" + }, + "out": { + "capacity": "1622500000000000000", + "isEnabled": true, + "rate": "75115260000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "770000000000000000", + "isEnabled": true, + "rate": "35647920000000" + }, + "out": { + "capacity": "750000000000000000", + "isEnabled": true, + "rate": "34722000000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1147500000000000000", + "isEnabled": true, + "rate": "53124660000000" + }, + "out": { + "capacity": "1625000000000000000", + "isEnabled": true, + "rate": "75231000000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "109250000", + "isEnabled": true, + "rate": "5057" + }, + "out": { + "capacity": "1305000000000000000", + "isEnabled": true, + "rate": "60416280000000" + } + }, + "standard": { + "in": { + "capacity": "250000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1307500000000000000", + "isEnabled": true, + "rate": "60532020000000" + }, + "out": { + "capacity": "792500000000000000", + "isEnabled": true, + "rate": "36689580000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": null, + "standard": null + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1365000000000000000", + "isEnabled": true, + "rate": "63194040000000" + }, + "out": { + "capacity": "1002500000000000000", + "isEnabled": true, + "rate": "46411740000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "795000000000000000", + "isEnabled": true, + "rate": "36805320000000" + }, + "out": { + "capacity": "1267500000000000000", + "isEnabled": true, + "rate": "58680180000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1487500000000000000", + "isEnabled": true, + "rate": "68865300000000" + }, + "out": { + "capacity": "1200000000000000000", + "isEnabled": true, + "rate": "55555200000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1150000000000000000", + "isEnabled": true, + "rate": "53240400000000" + }, + "out": { + "capacity": "1192500000000000000", + "isEnabled": true, + "rate": "55207980000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": null, + "standard": null + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 3, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1677500000000000000", + "isEnabled": true, + "rate": "77661540000000" + }, + "out": { + "capacity": "1550000000000000000", + "isEnabled": true, + "rate": "71758800000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "752500000000000000", + "isEnabled": true, + "rate": "34837740000000" + }, + "out": { + "capacity": "850000000000000000", + "isEnabled": true, + "rate": "39351600000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "772500000000000000", + "isEnabled": true, + "rate": "35763660000000" + }, + "out": { + "capacity": "1375000000000000000", + "isEnabled": true, + "rate": "63657000000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1050000000000000000", + "isEnabled": true, + "rate": "48610800000000" + }, + "out": { + "capacity": "1452500000000000000", + "isEnabled": true, + "rate": "67244940000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1010000000000000000", + "isEnabled": true, + "rate": "46758960000000" + }, + "out": { + "capacity": "800000000000000000", + "isEnabled": true, + "rate": "37036800000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1725000000000000000", + "isEnabled": true, + "rate": "79860600000000" + }, + "out": { + "capacity": "1552500000000000000", + "isEnabled": true, + "rate": "71874540000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1297500000000000000", + "isEnabled": true, + "rate": "60069060000000" + }, + "out": { + "capacity": "1255000000000000000", + "isEnabled": true, + "rate": "58101480000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "982500000000000000", + "isEnabled": true, + "rate": "45485820000000" + }, + "out": { + "capacity": "1667500000000000000", + "isEnabled": true, + "rate": "77198580000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "ethereum-mainnet-ink-1": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "997500000000000000", + "isEnabled": true, + "rate": "46180260000000" + }, + "out": { + "capacity": "1352500000000000000", + "isEnabled": true, + "rate": "62615340000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1600000000000000000", + "isEnabled": true, + "rate": "74073600000000" + }, + "out": { + "capacity": "1220000000000000000", + "isEnabled": true, + "rate": "56481120000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1080000000000000000", + "isEnabled": true, + "rate": "49999680000000" + }, + "out": { + "capacity": "1417500000000000000", + "isEnabled": true, + "rate": "65624580000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1620000000000000000", + "isEnabled": true, + "rate": "74999520000000" + }, + "out": { + "capacity": "1215000000000000000", + "isEnabled": true, + "rate": "56249640000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1397500000000000000", + "isEnabled": true, + "rate": "64698660000000" + }, + "out": { + "capacity": "1175000000000000000", + "isEnabled": true, + "rate": "54397800000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1145000000000000000", + "isEnabled": true, + "rate": "53008920000000" + }, + "out": { + "capacity": "860000000000000000", + "isEnabled": true, + "rate": "39814560000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "1350000000000000000", + "isEnabled": true, + "rate": "62499600000000" + }, + "out": { + "capacity": "1137500000000000000", + "isEnabled": true, + "rate": "52661700000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1527500000000000000", + "isEnabled": true, + "rate": "70717140000000" + }, + "out": { + "capacity": "775000000000000000", + "isEnabled": true, + "rate": "35879400000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1440000000000000000", + "isEnabled": true, + "rate": "66666240000000" + }, + "out": { + "capacity": "1505000000000000000", + "isEnabled": true, + "rate": "69675480000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1117500000000000000", + "isEnabled": true, + "rate": "51735780000000" + }, + "out": { + "capacity": "1362500000000000000", + "isEnabled": true, + "rate": "63078300000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1337500000000000000", + "isEnabled": true, + "rate": "61920900000000" + }, + "out": { + "capacity": "1127500000000000000", + "isEnabled": true, + "rate": "52198740000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "ethereum-mainnet-linea-1": { + "minBlockConfirmation": 10, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1607500000000000000", + "isEnabled": true, + "rate": "74420820000000" + }, + "out": { + "capacity": "1747500000000000000", + "isEnabled": true, + "rate": "80902260000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1685000000000000000", + "isEnabled": true, + "rate": "78008760000000" + }, + "out": { + "capacity": "885000000000000000", + "isEnabled": true, + "rate": "40971960000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1625000000000000000", + "isEnabled": true, + "rate": "75231000000000" + }, + "out": { + "capacity": "765000000000000000", + "isEnabled": true, + "rate": "35416440000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "837500000000000000", + "isEnabled": true, + "rate": "38772900000000" + }, + "out": { + "capacity": "1442500000000000000", + "isEnabled": true, + "rate": "66781980000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1335000000000000000", + "isEnabled": true, + "rate": "61805160000000" + }, + "out": { + "capacity": "767500000000000000", + "isEnabled": true, + "rate": "35532180000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1262500000000000000", + "isEnabled": true, + "rate": "58448700000000" + }, + "out": { + "capacity": "915000000000000000", + "isEnabled": true, + "rate": "42360840000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1127500000000000000", + "isEnabled": true, + "rate": "52198740000000" + }, + "out": { + "capacity": "1712500000000000000", + "isEnabled": true, + "rate": "79281900000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1747500000000000000", + "isEnabled": true, + "rate": "80902260000000" + }, + "out": { + "capacity": "1512500000000000000", + "isEnabled": true, + "rate": "70022700000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "ethereum-mainnet-taiko-1": { + "minBlockConfirmation": 1, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1387500000000000000", + "isEnabled": true, + "rate": "64235700000000" + }, + "out": { + "capacity": "1557500000000000000", + "isEnabled": true, + "rate": "72106020000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "ethereum-mainnet-zksync-1": { + "minBlockConfirmation": 3, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1140000000000000000", + "isEnabled": true, + "rate": "52777440000000" + }, + "out": { + "capacity": "1472500000000000000", + "isEnabled": true, + "rate": "68170860000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "752500000000000000", + "isEnabled": true, + "rate": "34837740000000" + }, + "out": { + "capacity": "775000000000000000", + "isEnabled": true, + "rate": "35879400000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "63600000000000000000", + "isEnabled": true, + "rate": "736064000000000" + }, + "out": { + "capacity": "1580000000000000000", + "isEnabled": true, + "rate": "73147680000000" + } + }, + "standard": { + "in": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1736000000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1327500000000000000", + "isEnabled": true, + "rate": "61457940000000" + }, + "out": { + "capacity": "1260000000000000000", + "isEnabled": true, + "rate": "58332960000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "hyperliquid-mainnet": { + "minBlockConfirmation": 4, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1080000000000000000", + "isEnabled": true, + "rate": "49999680000000" + }, + "out": { + "capacity": "1510000000000000000", + "isEnabled": true, + "rate": "69906960000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1032500000000000000", + "isEnabled": true, + "rate": "47800620000000" + }, + "out": { + "capacity": "865000000000000000", + "isEnabled": true, + "rate": "40046040000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "1690000000000000000", + "isEnabled": true, + "rate": "78240240000000" + }, + "out": { + "capacity": "1535000000000000000", + "isEnabled": true, + "rate": "71064360000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "berachain-mainnet": { + "custom": { + "in": { + "capacity": "1147500000000000000", + "isEnabled": true, + "rate": "53124660000000" + }, + "out": { + "capacity": "1137500000000000000", + "isEnabled": true, + "rate": "52661700000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1620000000000000000", + "isEnabled": true, + "rate": "74999520000000" + }, + "out": { + "capacity": "1117500000000000000", + "isEnabled": true, + "rate": "51735780000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1107500000000000000", + "isEnabled": true, + "rate": "51272820000000" + }, + "out": { + "capacity": "1365000000000000000", + "isEnabled": true, + "rate": "63194040000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1390000000000000000", + "isEnabled": true, + "rate": "64351440000000" + }, + "out": { + "capacity": "1522500000000000000", + "isEnabled": true, + "rate": "70485660000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1672500000000000000", + "isEnabled": true, + "rate": "77430060000000" + }, + "out": { + "capacity": "1412500000000000000", + "isEnabled": true, + "rate": "65393100000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": null, + "standard": null + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1617500000000000000", + "isEnabled": true, + "rate": "74883780000000" + }, + "out": { + "capacity": "812500000000000000", + "isEnabled": true, + "rate": "37615500000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-taiko-1": { + "custom": { + "in": { + "capacity": "1472500000000000000", + "isEnabled": true, + "rate": "68170860000000" + }, + "out": { + "capacity": "1290000000000000000", + "isEnabled": true, + "rate": "59721840000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "1465000000000000000", + "isEnabled": true, + "rate": "67823640000000" + }, + "out": { + "capacity": "92700000000000000000", + "isEnabled": true, + "rate": "1072848000000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "150000000000000000000", + "isEnabled": true, + "rate": "1736000000000000" + } + } + }, + "hyperliquid-mainnet": { + "custom": { + "in": { + "capacity": "1050000000000000000", + "isEnabled": true, + "rate": "48610800000000" + }, + "out": { + "capacity": "1465000000000000000", + "isEnabled": true, + "rate": "67823640000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1332500000000000000", + "isEnabled": true, + "rate": "61689420000000" + }, + "out": { + "capacity": "1422500000000000000", + "isEnabled": true, + "rate": "65856060000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "monad-mainnet": { + "custom": null, + "standard": null + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1675000000000000000", + "isEnabled": true, + "rate": "77545800000000" + }, + "out": { + "capacity": "1730000000000000000", + "isEnabled": true, + "rate": "80092080000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "138750000", + "isEnabled": true, + "rate": "6423" + }, + "out": { + "capacity": "980000000000000000", + "isEnabled": true, + "rate": "45370080000000" + } + }, + "standard": { + "in": { + "capacity": "250000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "922500000000000000", + "isEnabled": true, + "rate": "42708060000000" + }, + "out": { + "capacity": "26220000000000000000", + "isEnabled": true, + "rate": "303470280000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "60000000000000000000", + "isEnabled": true, + "rate": "694440000000000" + } + } + }, + "sonic-mainnet": { + "custom": null, + "standard": null + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "957500000000000000", + "isEnabled": true, + "rate": "44328420000000" + }, + "out": { + "capacity": "1535000000000000000", + "isEnabled": true, + "rate": "71064360000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bitcoin-mainnet-bob-1": { + "custom": null, + "standard": null + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1417500000000000000", + "isEnabled": true, + "rate": "65624580000000" + }, + "out": { + "capacity": "862500000000000000", + "isEnabled": true, + "rate": "39930300000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1370000000000000000", + "isEnabled": true, + "rate": "63425520000000" + }, + "out": { + "capacity": "1042500000000000000", + "isEnabled": true, + "rate": "48263580000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "862500000000000000", + "isEnabled": true, + "rate": "39930300000000" + }, + "out": { + "capacity": "1192500000000000000", + "isEnabled": true, + "rate": "55207980000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1162500000000000000", + "isEnabled": true, + "rate": "53819100000000" + }, + "out": { + "capacity": "1170000000000000000", + "isEnabled": true, + "rate": "54166320000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-linea-1": { + "custom": { + "in": { + "capacity": "1560000000000000000", + "isEnabled": true, + "rate": "72221760000000" + }, + "out": { + "capacity": "1220000000000000000", + "isEnabled": true, + "rate": "56481120000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-zksync-1": { + "custom": { + "in": { + "capacity": "1295000000000000000", + "isEnabled": true, + "rate": "59953320000000" + }, + "out": { + "capacity": "1357500000000000000", + "isEnabled": true, + "rate": "62846820000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1120000000000000000", + "isEnabled": true, + "rate": "51851520000000" + }, + "out": { + "capacity": "1160000000000000000", + "isEnabled": true, + "rate": "53703360000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "sei-mainnet": { + "custom": { + "in": { + "capacity": "1127500000000000000", + "isEnabled": true, + "rate": "52198740000000" + }, + "out": { + "capacity": "772500000000000000", + "isEnabled": true, + "rate": "35763660000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "soneium-mainnet": { + "custom": { + "in": { + "capacity": "1217500000000000000", + "isEnabled": true, + "rate": "56365380000000" + }, + "out": { + "capacity": "807500000000000000", + "isEnabled": true, + "rate": "37384020000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "monad-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "10110000000000000000", + "isEnabled": true, + "rate": "117013140000000" + }, + "out": { + "capacity": "1610000000000000000", + "isEnabled": true, + "rate": "18634140000000" + } + }, + "standard": { + "in": { + "capacity": "30000000000000000000", + "isEnabled": true, + "rate": "347220000000000" + }, + "out": { + "capacity": "5000000000000000000", + "isEnabled": true, + "rate": "57870000000000" + } + } + } + } + }, + "sei-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "1555000000000000000", + "isEnabled": true, + "rate": "71990280000000" + }, + "out": { + "capacity": "1660000000000000000", + "isEnabled": true, + "rate": "76851360000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "1312500000000000000", + "isEnabled": true, + "rate": "60763500000000" + }, + "out": { + "capacity": "1197500000000000000", + "isEnabled": true, + "rate": "55439460000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "1567500000000000000", + "isEnabled": true, + "rate": "72568980000000" + }, + "out": { + "capacity": "1120000000000000000", + "isEnabled": true, + "rate": "51851520000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1722500000000000000", + "isEnabled": true, + "rate": "79744860000000" + }, + "out": { + "capacity": "985000000000000000", + "isEnabled": true, + "rate": "45601560000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1597500000000000000", + "isEnabled": true, + "rate": "73957860000000" + }, + "out": { + "capacity": "1420000000000000000", + "isEnabled": true, + "rate": "65740320000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "153250000", + "isEnabled": true, + "rate": "7094" + }, + "out": { + "capacity": "155750000", + "isEnabled": true, + "rate": "7210" + } + }, + "standard": { + "in": { + "capacity": "250000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "250000000", + "isEnabled": true, + "rate": "11574" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "152500000", + "isEnabled": true, + "rate": "7060" + }, + "out": { + "capacity": "169000000", + "isEnabled": true, + "rate": "7824" + } + }, + "standard": { + "in": { + "capacity": "250000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "250000000", + "isEnabled": true, + "rate": "11574" + } + } + } + } + }, + "soneium-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "bitcoin-mainnet-bob-1": { + "custom": { + "in": { + "capacity": "890000000000000000", + "isEnabled": true, + "rate": "41203440000000" + }, + "out": { + "capacity": "1617500000000000000", + "isEnabled": true, + "rate": "74883780000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "942500000000000000", + "isEnabled": true, + "rate": "43633980000000" + }, + "out": { + "capacity": "1677500000000000000", + "isEnabled": true, + "rate": "77661540000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "22980000000000000000", + "isEnabled": true, + "rate": "265970520000000" + }, + "out": { + "capacity": "1057500000000000000", + "isEnabled": true, + "rate": "48958020000000" + } + }, + "standard": { + "in": { + "capacity": "60000000000000000000", + "isEnabled": true, + "rate": "694440000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1702500000000000000", + "isEnabled": true, + "rate": "78818940000000" + }, + "out": { + "capacity": "1387500000000000000", + "isEnabled": true, + "rate": "64235700000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1150000000000000000", + "isEnabled": true, + "rate": "53240400000000" + }, + "out": { + "capacity": "1580000000000000000", + "isEnabled": true, + "rate": "73147680000000" + } + }, + "standard": { + "in": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + }, + "out": { + "capacity": "2500000000000000000", + "isEnabled": true, + "rate": "115740000000000" + } + } + } + } + } + }, + "XSWAP": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "12120000000000000000000000", + "isEnabled": true, + "rate": "280578000000000000000" + }, + "out": { + "capacity": "8600000000000000000000000", + "isEnabled": true, + "rate": "199090000000000000000" + } + }, + "standard": { + "in": { + "capacity": "20000000000000000000000000", + "isEnabled": true, + "rate": "463000000000000000000" + }, + "out": { + "capacity": "20000000000000000000000000", + "isEnabled": true, + "rate": "463000000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "13420000000000000000000000", + "isEnabled": true, + "rate": "310673000000000000000" + }, + "out": { + "capacity": "9240000000000000000000000", + "isEnabled": true, + "rate": "213906000000000000000" + } + }, + "standard": { + "in": { + "capacity": "20000000000000000000000000", + "isEnabled": true, + "rate": "463000000000000000000" + }, + "out": { + "capacity": "20000000000000000000000000", + "isEnabled": true, + "rate": "463000000000000000000" + } + } + } + } + } + }, + "XTFBRICK1": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 9, + "remote": { + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "memento-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "memento-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "memento-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "XTFCLOBOND": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 5, + "remote": { + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "memento-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "matic-mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "memento-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "memento-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "matic-mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "YBTC.B": { + "avalanche-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bitcoin-mainnet-bitlayer-1": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bsc-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plume-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "bsc-mainnet": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-mainnet": { + "custom": null, + "standard": null + }, + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-mainnet-ink-1": { + "minBlockConfirmation": 5, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 9, + "remote": { + "avalanche-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-mainnet-ink-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plasma-mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "plasma-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "plume-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "bitcoin-mainnet-bitlayer-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "YGG": { + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ronin-mainnet": { + "custom": { + "in": { + "capacity": "1208000000000000000000000", + "isEnabled": true, + "rate": "13981452400000000000" + }, + "out": { + "capacity": "1116000000000000000000000", + "isEnabled": true, + "rate": "12916646000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148100000000000000" + }, + "out": { + "capacity": "1800000000000000000000000", + "isEnabled": true, + "rate": "20833300000000000000" + } + } + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 6, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1194000000000000000000000", + "isEnabled": true, + "rate": "13819415700000000000" + }, + "out": { + "capacity": "833400000000000000000000", + "isEnabled": true, + "rate": "9645817900000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23148100000000000000" + }, + "out": { + "capacity": "1800000000000000000000000", + "isEnabled": true, + "rate": "20833300000000000000" + } + } + } + } + } + }, + "YNE": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 9, + "remote": { + "solana-mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "zBTC": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 9, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "484000000", + "isEnabled": true, + "rate": "5601" + }, + "out": { + "capacity": "316000000", + "isEnabled": true, + "rate": "3657" + } + }, + "standard": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "480000000", + "isEnabled": true, + "rate": "5555" + }, + "out": { + "capacity": "353000000", + "isEnabled": true, + "rate": "4085" + } + }, + "standard": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "328000000", + "isEnabled": true, + "rate": "3796" + }, + "out": { + "capacity": "639000000", + "isEnabled": true, + "rate": "7395" + } + }, + "standard": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "479000000", + "isEnabled": true, + "rate": "5543" + }, + "out": { + "capacity": "691000000", + "isEnabled": true, + "rate": "7997" + } + }, + "standard": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "429000000", + "isEnabled": true, + "rate": "4965" + }, + "out": { + "capacity": "419000000", + "isEnabled": true, + "rate": "4849" + } + }, + "standard": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "676000000", + "isEnabled": true, + "rate": "7824" + }, + "out": { + "capacity": "495000000", + "isEnabled": true, + "rate": "5729" + } + }, + "standard": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + } + } + } + } + }, + "solana-mainnet": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "520000000", + "isEnabled": true, + "rate": "6018" + }, + "out": { + "capacity": "409000000", + "isEnabled": true, + "rate": "4733" + } + }, + "standard": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "495000000", + "isEnabled": true, + "rate": "5729" + }, + "out": { + "capacity": "616000000", + "isEnabled": true, + "rate": "7129" + } + }, + "standard": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + } + } + }, + "sonic-mainnet": { + "custom": { + "in": { + "capacity": "325000000", + "isEnabled": true, + "rate": "3761" + }, + "out": { + "capacity": "620000000", + "isEnabled": true, + "rate": "7175" + } + }, + "standard": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + } + } + } + } + }, + "sonic-mainnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-base-1": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "656000000", + "isEnabled": true, + "rate": "7592" + }, + "out": { + "capacity": "621000000", + "isEnabled": true, + "rate": "7187" + } + }, + "standard": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + } + } + }, + "solana-mainnet": { + "custom": { + "in": { + "capacity": "449000000", + "isEnabled": true, + "rate": "5196" + }, + "out": { + "capacity": "574000000", + "isEnabled": true, + "rate": "6643" + } + }, + "standard": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "11574" + } + } + } + } + } + }, + "ZENT": { + "mainnet": { + "minBlockConfirmation": null, + "remote": { + "ronin-mainnet": { + "custom": null, + "standard": null + } + } + }, + "ronin-mainnet": { + "minBlockConfirmation": 2, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "ZeUSD": { + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 10, + "remote": { + "mainnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "ZUN": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1138000000000000000000000", + "isEnabled": true, + "rate": "13166660000000000000" + }, + "out": { + "capacity": "1018000000000000000000000", + "isEnabled": true, + "rate": "11778260000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "686000000000000000000000", + "isEnabled": true, + "rate": "7937020000000000000" + }, + "out": { + "capacity": "792000000000000000000000", + "isEnabled": true, + "rate": "9163440000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "648000000000000000000000", + "isEnabled": true, + "rate": "7497360000000000000" + }, + "out": { + "capacity": "1292000000000000000000000", + "isEnabled": true, + "rate": "14948440000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "988000000000000000000000", + "isEnabled": true, + "rate": "11431160000000000000" + }, + "out": { + "capacity": "1100000000000000000000000", + "isEnabled": true, + "rate": "12727000000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": null, + "standard": null + }, + "mainnet": { + "custom": { + "in": { + "capacity": "1106000000000000000000000", + "isEnabled": true, + "rate": "12796420000000000000" + }, + "out": { + "capacity": "934000000000000000000000", + "isEnabled": true, + "rate": "10806380000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "1384000000000000000000000", + "isEnabled": true, + "rate": "16012880000000000000" + }, + "out": { + "capacity": "1010000000000000000000000", + "isEnabled": true, + "rate": "11685700000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1072000000000000000000000", + "isEnabled": true, + "rate": "12403040000000000000" + }, + "out": { + "capacity": "698000000000000000000000", + "isEnabled": true, + "rate": "8075860000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "996000000000000000000000", + "isEnabled": true, + "rate": "11523720000000000000" + }, + "out": { + "capacity": "626000000000000000000000", + "isEnabled": true, + "rate": "7242820000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "966000000000000000000000", + "isEnabled": true, + "rate": "11176620000000000000" + }, + "out": { + "capacity": "1170000000000000000000000", + "isEnabled": true, + "rate": "13536900000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "1078000000000000000000000", + "isEnabled": true, + "rate": "12472460000000000000" + }, + "out": { + "capacity": "970000000000000000000000", + "isEnabled": true, + "rate": "11222900000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "682000000000000000000000", + "isEnabled": true, + "rate": "7890740000000000000" + }, + "out": { + "capacity": "618000000000000000000000", + "isEnabled": true, + "rate": "7150260000000000000" + } + }, + "standard": { + "in": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + }, + "out": { + "capacity": "2000000000000000000000000", + "isEnabled": true, + "rate": "23140000000000000000" + } + } + } + } + } + }, + "zunETH": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "39096000000000000000", + "isEnabled": true, + "rate": "904638000000000" + }, + "out": { + "capacity": "25128000000000000000", + "isEnabled": true, + "rate": "581434000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "37080000000000000000", + "isEnabled": true, + "rate": "857990000000000" + }, + "out": { + "capacity": "22032000000000000000", + "isEnabled": true, + "rate": "509796000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "39456000000000000000", + "isEnabled": true, + "rate": "912968000000000" + }, + "out": { + "capacity": "48456000000000000000", + "isEnabled": true, + "rate": "1121218000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "49248000000000000000", + "isEnabled": true, + "rate": "1139544000000000" + }, + "out": { + "capacity": "45360000000000000000", + "isEnabled": true, + "rate": "1049580000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "25344000000000000000", + "isEnabled": true, + "rate": "586432000000000" + }, + "out": { + "capacity": "45504000000000000000", + "isEnabled": true, + "rate": "1052912000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "32256000000000000000", + "isEnabled": true, + "rate": "746368000000000" + }, + "out": { + "capacity": "36072000000000000000", + "isEnabled": true, + "rate": "834666000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "33696000000000000000", + "isEnabled": true, + "rate": "779688000000000" + }, + "out": { + "capacity": "41184000000000000000", + "isEnabled": true, + "rate": "952952000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "40752000000000000000", + "isEnabled": true, + "rate": "942956000000000" + }, + "out": { + "capacity": "39888000000000000000", + "isEnabled": true, + "rate": "922964000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "23472000000000000000", + "isEnabled": true, + "rate": "543116000000000" + }, + "out": { + "capacity": "38160000000000000000", + "isEnabled": true, + "rate": "882980000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "37008000000000000000", + "isEnabled": true, + "rate": "856324000000000" + }, + "out": { + "capacity": "36576000000000000000", + "isEnabled": true, + "rate": "846328000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "45072000000000000000", + "isEnabled": true, + "rate": "1042916000000000" + }, + "out": { + "capacity": "46152000000000000000", + "isEnabled": true, + "rate": "1067906000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "35712000000000000000", + "isEnabled": true, + "rate": "826336000000000" + }, + "out": { + "capacity": "33480000000000000000", + "isEnabled": true, + "rate": "774690000000000" + } + }, + "standard": { + "in": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + }, + "out": { + "capacity": "72000000000000000000", + "isEnabled": true, + "rate": "1666000000000000" + } + } + } + } + } + }, + "zunUSD": { + "ethereum-mainnet-arbitrum-1": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "125000000000000000000000", + "isEnabled": true, + "rate": "2893500000000000000" + }, + "out": { + "capacity": "129250000000000000000000", + "isEnabled": true, + "rate": "2991879000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "155750000000000000000000", + "isEnabled": true, + "rate": "3605301000000000000" + }, + "out": { + "capacity": "91250000000000000000000", + "isEnabled": true, + "rate": "2112255000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "113750000000000000000000", + "isEnabled": true, + "rate": "2633085000000000000" + }, + "out": { + "capacity": "147250000000000000000000", + "isEnabled": true, + "rate": "3408543000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + } + } + }, + "ethereum-mainnet-base-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "77500000000000000000000", + "isEnabled": true, + "rate": "1793970000000000000" + }, + "out": { + "capacity": "89000000000000000000000", + "isEnabled": true, + "rate": "2060172000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "171250000000000000000000", + "isEnabled": true, + "rate": "3964095000000000000" + }, + "out": { + "capacity": "117250000000000000000000", + "isEnabled": true, + "rate": "2714103000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "109250000000000000000000", + "isEnabled": true, + "rate": "2528919000000000000" + }, + "out": { + "capacity": "138000000000000000000000", + "isEnabled": true, + "rate": "3194424000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + } + } + }, + "ethereum-mainnet-optimism-1": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "123750000000000000000000", + "isEnabled": true, + "rate": "2864565000000000000" + }, + "out": { + "capacity": "116250000000000000000000", + "isEnabled": true, + "rate": "2690955000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "158000000000000000000000", + "isEnabled": true, + "rate": "3657384000000000000" + }, + "out": { + "capacity": "97250000000000000000000", + "isEnabled": true, + "rate": "2251143000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "mainnet": { + "custom": { + "in": { + "capacity": "86000000000000000000000", + "isEnabled": true, + "rate": "1990728000000000000" + }, + "out": { + "capacity": "126000000000000000000000", + "isEnabled": true, + "rate": "2916648000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + } + } + }, + "mainnet": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-mainnet-arbitrum-1": { + "custom": { + "in": { + "capacity": "92500000000000000000000", + "isEnabled": true, + "rate": "2141190000000000000" + }, + "out": { + "capacity": "131750000000000000000000", + "isEnabled": true, + "rate": "3049749000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "ethereum-mainnet-base-1": { + "custom": { + "in": { + "capacity": "172250000000000000000000", + "isEnabled": true, + "rate": "3987243000000000000" + }, + "out": { + "capacity": "86500000000000000000000", + "isEnabled": true, + "rate": "2002302000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + }, + "ethereum-mainnet-optimism-1": { + "custom": { + "in": { + "capacity": "101250000000000000000000", + "isEnabled": true, + "rate": "2343735000000000000" + }, + "out": { + "capacity": "124250000000000000000000", + "isEnabled": true, + "rate": "2876139000000000000" + } + }, + "standard": { + "in": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + }, + "out": { + "capacity": "250000000000000000000000", + "isEnabled": true, + "rate": "5787000000000000000" + } + } + } + } + } + } +} diff --git a/src/__mocks__/rate-limits-testnet.json b/src/__mocks__/rate-limits-testnet.json new file mode 100644 index 00000000000..0dfaf068b79 --- /dev/null +++ b/src/__mocks__/rate-limits-testnet.json @@ -0,0 +1,7465 @@ +{ + "CCIP-BnM": { + "abstract-testnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "45500000000000000000000", + "isEnabled": true, + "rate": "75985000000000000000" + }, + "out": { + "capacity": "60300000000000000000000", + "isEnabled": true, + "rate": "100701000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "apechain-testnet-curtis": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "53700000000000000000000", + "isEnabled": true, + "rate": "89679000000000000000" + }, + "out": { + "capacity": "45300000000000000000000", + "isEnabled": true, + "rate": "75651000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "aptos-testnet": { + "minBlockConfirmation": 6, + "remote": { + "bsc-testnet": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "sonic-testnet-blaze": { + "custom": { + "in": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + }, + "out": { + "capacity": "100000000000", + "isEnabled": true, + "rate": "100000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "avalanche-fuji-testnet": { + "minBlockConfirmation": 10, + "remote": { + "bsc-testnet": { + "custom": { + "in": { + "capacity": "44900000000000000000000", + "isEnabled": true, + "rate": "74983000000000000000" + }, + "out": { + "capacity": "48500000000000000000000", + "isEnabled": true, + "rate": "80995000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "45500000000000000000000", + "isEnabled": true, + "rate": "75985000000000000000" + }, + "out": { + "capacity": "47900000000000000000000", + "isEnabled": true, + "rate": "79993000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "33700000000000000000000", + "isEnabled": true, + "rate": "56279000000000000000" + }, + "out": { + "capacity": "56300000000000000000000", + "isEnabled": true, + "rate": "94021000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "66400000000000000000000", + "isEnabled": true, + "rate": "110888000000000000000" + }, + "out": { + "capacity": "42900000000000000000000", + "isEnabled": true, + "rate": "71643000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "60700000000000000000000", + "isEnabled": true, + "rate": "101369000000000000000" + }, + "out": { + "capacity": "44300000000000000000000", + "isEnabled": true, + "rate": "73981000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "41800000000000000000000", + "isEnabled": true, + "rate": "69806000000000000000" + }, + "out": { + "capacity": "44100000000000000000000", + "isEnabled": true, + "rate": "73647000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "shibarium-testnet-puppynet": { + "custom": { + "in": { + "capacity": "42300000000000000000000", + "isEnabled": true, + "rate": "70641000000000000000" + }, + "out": { + "capacity": "58500000000000000000000", + "isEnabled": true, + "rate": "97695000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "51800000000000000000000", + "isEnabled": true, + "rate": "86506000000000000000" + }, + "out": { + "capacity": "50400000000000000000000", + "isEnabled": true, + "rate": "84168000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "57900000000000000000000", + "isEnabled": true, + "rate": "96693000000000000000" + }, + "out": { + "capacity": "46000000000000000000000", + "isEnabled": true, + "rate": "76820000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "bitcoin-testnet-bsquared-1": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "68000000000000000000000", + "isEnabled": true, + "rate": "113560000000000000000" + }, + "out": { + "capacity": "58300000000000000000000", + "isEnabled": true, + "rate": "97361000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "bitcoin-testnet-rootstock": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "35000000000000000000000", + "isEnabled": true, + "rate": "58450000000000000000" + }, + "out": { + "capacity": "47800000000000000000000", + "isEnabled": true, + "rate": "79826000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "bitcoin-testnet-sepolia-bob-1": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "39000000000000000000000", + "isEnabled": true, + "rate": "65130000000000000000" + }, + "out": { + "capacity": "40400000000000000000000", + "isEnabled": true, + "rate": "67468000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "bsc-testnet": { + "minBlockConfirmation": 7, + "remote": { + "aptos-testnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "52400000000000000000000", + "isEnabled": true, + "rate": "87508000000000000000" + }, + "out": { + "capacity": "59100000000000000000000", + "isEnabled": true, + "rate": "98697000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "42400000000000000000000", + "isEnabled": true, + "rate": "70808000000000000000" + }, + "out": { + "capacity": "38400000000000000000000", + "isEnabled": true, + "rate": "64128000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "32900000000000000000000", + "isEnabled": true, + "rate": "54943000000000000000" + }, + "out": { + "capacity": "65800000000000000000000", + "isEnabled": true, + "rate": "109886000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "65900000000000000000000", + "isEnabled": true, + "rate": "110053000000000000000" + }, + "out": { + "capacity": "65600000000000000000000", + "isEnabled": true, + "rate": "109552000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "solana-devnet": { + "custom": { + "in": { + "capacity": "34100000000000000000000", + "isEnabled": true, + "rate": "56947000000000000000" + }, + "out": { + "capacity": "64300000000000000000000", + "isEnabled": true, + "rate": "107381000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "62600000000000000000000", + "isEnabled": true, + "rate": "104542000000000000000" + }, + "out": { + "capacity": "37500000000000000000000", + "isEnabled": true, + "rate": "62625000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "57400000000000000000000", + "isEnabled": true, + "rate": "95858000000000000000" + }, + "out": { + "capacity": "33900000000000000000000", + "isEnabled": true, + "rate": "56613000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "celo-testnet-alfajores": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "36700000000000000000000", + "isEnabled": true, + "rate": "61289000000000000000" + }, + "out": { + "capacity": "44400000000000000000000", + "isEnabled": true, + "rate": "74148000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "cronos-testnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "47900000000000000000000", + "isEnabled": true, + "rate": "79993000000000000000" + }, + "out": { + "capacity": "35600000000000000000000", + "isEnabled": true, + "rate": "59452000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-holesky": { + "minBlockConfirmation": 1, + "remote": { + "polygon-testnet-tatara": { + "custom": { + "in": { + "capacity": "58500000000000000000000", + "isEnabled": true, + "rate": "97695000000000000000" + }, + "out": { + "capacity": "68700000000000000000000", + "isEnabled": true, + "rate": "114729000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-holesky-fraxtal-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "49000000000000000000000", + "isEnabled": true, + "rate": "81830000000000000000" + }, + "out": { + "capacity": "53400000000000000000000", + "isEnabled": true, + "rate": "89178000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-holesky-taiko-1": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "51400000000000000000000", + "isEnabled": true, + "rate": "85838000000000000000" + }, + "out": { + "capacity": "42300000000000000000000", + "isEnabled": true, + "rate": "70641000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-hoodi-morph": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-testnet-sepolia": { + "minBlockConfirmation": 3, + "remote": { + "abstract-testnet": { + "custom": { + "in": { + "capacity": "66900000000000000000000", + "isEnabled": true, + "rate": "111723000000000000000" + }, + "out": { + "capacity": "35800000000000000000000", + "isEnabled": true, + "rate": "59786000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "apechain-testnet-curtis": { + "custom": { + "in": { + "capacity": "65500000000000000000000", + "isEnabled": true, + "rate": "109385000000000000000" + }, + "out": { + "capacity": "55500000000000000000000", + "isEnabled": true, + "rate": "92685000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "aptos-testnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "avalanche-fuji-testnet": { + "custom": null, + "standard": null + }, + "bitcoin-testnet-bsquared-1": { + "custom": { + "in": { + "capacity": "68800000000000000000000", + "isEnabled": true, + "rate": "114896000000000000000" + }, + "out": { + "capacity": "65900000000000000000000", + "isEnabled": true, + "rate": "110053000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bitcoin-testnet-rootstock": { + "custom": { + "in": { + "capacity": "60300000000000000000000", + "isEnabled": true, + "rate": "100701000000000000000" + }, + "out": { + "capacity": "64300000000000000000000", + "isEnabled": true, + "rate": "107381000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bitcoin-testnet-sepolia-bob-1": { + "custom": { + "in": { + "capacity": "54200000000000000000000", + "isEnabled": true, + "rate": "90514000000000000000" + }, + "out": { + "capacity": "57200000000000000000000", + "isEnabled": true, + "rate": "95524000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bsc-testnet": { + "custom": { + "in": { + "capacity": "48300000000000000000000", + "isEnabled": true, + "rate": "80661000000000000000" + }, + "out": { + "capacity": "42500000000000000000000", + "isEnabled": true, + "rate": "70975000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "celo-testnet-alfajores": { + "custom": { + "in": { + "capacity": "58700000000000000000000", + "isEnabled": true, + "rate": "98029000000000000000" + }, + "out": { + "capacity": "62800000000000000000000", + "isEnabled": true, + "rate": "104876000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "cronos-testnet": { + "custom": { + "in": { + "capacity": "44500000000000000000000", + "isEnabled": true, + "rate": "74315000000000000000" + }, + "out": { + "capacity": "67400000000000000000000", + "isEnabled": true, + "rate": "112558000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-holesky-fraxtal-1": { + "custom": { + "in": { + "capacity": "33000000000000000000000", + "isEnabled": true, + "rate": "55110000000000000000" + }, + "out": { + "capacity": "41800000000000000000000", + "isEnabled": true, + "rate": "69806000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-holesky-taiko-1": { + "custom": { + "in": { + "capacity": "45200000000000000000000", + "isEnabled": true, + "rate": "75484000000000000000" + }, + "out": { + "capacity": "57800000000000000000000", + "isEnabled": true, + "rate": "96526000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-hoodi-morph": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia-andromeda-1": { + "custom": { + "in": { + "capacity": "40100000000000000000000", + "isEnabled": true, + "rate": "66967000000000000000" + }, + "out": { + "capacity": "65600000000000000000000", + "isEnabled": true, + "rate": "109552000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": null, + "standard": null + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "54700000000000000000000", + "isEnabled": true, + "rate": "91349000000000000000" + }, + "out": { + "capacity": "33900000000000000000000", + "isEnabled": true, + "rate": "56613000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-blast-1": { + "custom": { + "in": { + "capacity": "65000000000000000000000", + "isEnabled": true, + "rate": "108550000000000000000" + }, + "out": { + "capacity": "65400000000000000000000", + "isEnabled": true, + "rate": "109218000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-hashkey-1": { + "custom": { + "in": { + "capacity": "57700000000000000000000", + "isEnabled": true, + "rate": "96359000000000000000" + }, + "out": { + "capacity": "52000000000000000000000", + "isEnabled": true, + "rate": "86840000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-lisk-1": { + "custom": null, + "standard": null + }, + "ethereum-testnet-sepolia-mantle-1": { + "custom": { + "in": { + "capacity": "65200000000000000000000", + "isEnabled": true, + "rate": "108884000000000000000" + }, + "out": { + "capacity": "58600000000000000000000", + "isEnabled": true, + "rate": "97862000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-mode-1": { + "custom": { + "in": { + "capacity": "44100000000000000000000", + "isEnabled": true, + "rate": "73647000000000000000" + }, + "out": { + "capacity": "62900000000000000000000", + "isEnabled": true, + "rate": "105043000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "38200000000000000000000", + "isEnabled": true, + "rate": "63794000000000000000" + }, + "out": { + "capacity": "57100000000000000000000", + "isEnabled": true, + "rate": "95357000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-unichain-1": { + "custom": { + "in": { + "capacity": "37700000000000000000000", + "isEnabled": true, + "rate": "62959000000000000000" + }, + "out": { + "capacity": "31400000000000000000000", + "isEnabled": true, + "rate": "52438000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-worldchain-1": { + "custom": { + "in": { + "capacity": "63400000000000000000000", + "isEnabled": true, + "rate": "105878000000000000000" + }, + "out": { + "capacity": "35300000000000000000000", + "isEnabled": true, + "rate": "58951000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-zksync-1": { + "custom": { + "in": { + "capacity": "57400000000000000000000", + "isEnabled": true, + "rate": "95858000000000000000" + }, + "out": { + "capacity": "69300000000000000000000", + "isEnabled": true, + "rate": "115731000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "hedera-testnet": { + "custom": { + "in": { + "capacity": "57700000000000000000000", + "isEnabled": true, + "rate": "96359000000000000000" + }, + "out": { + "capacity": "60700000000000000000000", + "isEnabled": true, + "rate": "101369000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ink-testnet-sepolia": { + "custom": null, + "standard": null + }, + "jovay-testnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "memento-testnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "metal-testnet": { + "custom": { + "in": { + "capacity": "69400000000000000000000", + "isEnabled": true, + "rate": "115898000000000000000" + }, + "out": { + "capacity": "30100000000000000000000", + "isEnabled": true, + "rate": "50267000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "mint-testnet": { + "custom": { + "in": { + "capacity": "36700000000000000000000", + "isEnabled": true, + "rate": "61289000000000000000" + }, + "out": { + "capacity": "40700000000000000000000", + "isEnabled": true, + "rate": "67969000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "plume-testnet-sepolia": { + "custom": { + "in": { + "capacity": "58900000000000000000000", + "isEnabled": true, + "rate": "98363000000000000000" + }, + "out": { + "capacity": "49300000000000000000000", + "isEnabled": true, + "rate": "82331000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polkadot-testnet-astar-shibuya": { + "custom": { + "in": { + "capacity": "61300000000000000000000", + "isEnabled": true, + "rate": "102371000000000000000" + }, + "out": { + "capacity": "35700000000000000000000", + "isEnabled": true, + "rate": "59619000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "54500000000000000000000", + "isEnabled": true, + "rate": "91015000000000000000" + }, + "out": { + "capacity": "37700000000000000000000", + "isEnabled": true, + "rate": "62959000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ronin-testnet-saigon": { + "custom": { + "in": { + "capacity": "33300000000000000000000", + "isEnabled": true, + "rate": "55611000000000000000" + }, + "out": { + "capacity": "47800000000000000000000", + "isEnabled": true, + "rate": "79826000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "sei-testnet-atlantic": { + "custom": { + "in": { + "capacity": "30600000000000000000000", + "isEnabled": true, + "rate": "51102000000000000000" + }, + "out": { + "capacity": "57500000000000000000000", + "isEnabled": true, + "rate": "96025000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "shibarium-testnet-puppynet": { + "custom": { + "in": { + "capacity": "42000000000000000000000", + "isEnabled": true, + "rate": "70140000000000000000" + }, + "out": { + "capacity": "49700000000000000000000", + "isEnabled": true, + "rate": "82999000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "solana-devnet": { + "custom": { + "in": { + "capacity": "65200000000000000000000", + "isEnabled": true, + "rate": "108884000000000000000" + }, + "out": { + "capacity": "56100000000000000000000", + "isEnabled": true, + "rate": "93687000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "sonic-testnet-blaze": { + "custom": { + "in": { + "capacity": "40700000000000000000000", + "isEnabled": true, + "rate": "67969000000000000000" + }, + "out": { + "capacity": "54700000000000000000000", + "isEnabled": true, + "rate": "91349000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "tac-testnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "69900000000000000000000", + "isEnabled": true, + "rate": "116733000000000000000" + }, + "out": { + "capacity": "47600000000000000000000", + "isEnabled": true, + "rate": "79492000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "35100000000000000000000", + "isEnabled": true, + "rate": "58617000000000000000" + }, + "out": { + "capacity": "48200000000000000000000", + "isEnabled": true, + "rate": "80494000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdc-testnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-testnet-sepolia-andromeda-1": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "49000000000000000000000", + "isEnabled": true, + "rate": "81830000000000000000" + }, + "out": { + "capacity": "37600000000000000000000", + "isEnabled": true, + "rate": "62792000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "minBlockConfirmation": 3, + "remote": { + "aptos-testnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "37100000000000000000000", + "isEnabled": true, + "rate": "61957000000000000000" + }, + "out": { + "capacity": "30000000000000000000000", + "isEnabled": true, + "rate": "50100000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "45600000000000000000000", + "isEnabled": true, + "rate": "76152000000000000000" + }, + "out": { + "capacity": "34800000000000000000000", + "isEnabled": true, + "rate": "58116000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "59900000000000000000000", + "isEnabled": true, + "rate": "100033000000000000000" + }, + "out": { + "capacity": "38000000000000000000000", + "isEnabled": true, + "rate": "63460000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "34500000000000000000000", + "isEnabled": true, + "rate": "57615000000000000000" + }, + "out": { + "capacity": "51400000000000000000000", + "isEnabled": true, + "rate": "85838000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "shibarium-testnet-puppynet": { + "custom": { + "in": { + "capacity": "38900000000000000000000", + "isEnabled": true, + "rate": "64963000000000000000" + }, + "out": { + "capacity": "51300000000000000000000", + "isEnabled": true, + "rate": "85671000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "solana-devnet": { + "custom": { + "in": { + "capacity": "58100000000000000000000", + "isEnabled": true, + "rate": "97027000000000000000" + }, + "out": { + "capacity": "57500000000000000000000", + "isEnabled": true, + "rate": "96025000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "31100000000000000000000", + "isEnabled": true, + "rate": "51937000000000000000" + }, + "out": { + "capacity": "66900000000000000000000", + "isEnabled": true, + "rate": "111723000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "38500000000000000000000", + "isEnabled": true, + "rate": "64295000000000000000" + }, + "out": { + "capacity": "42500000000000000000000", + "isEnabled": true, + "rate": "70975000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "minBlockConfirmation": 5, + "remote": { + "aptos-testnet": { + "custom": null, + "standard": null + }, + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "31200000000000000000000", + "isEnabled": true, + "rate": "52104000000000000000" + }, + "out": { + "capacity": "62900000000000000000000", + "isEnabled": true, + "rate": "105043000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bsc-testnet": { + "custom": { + "in": { + "capacity": "68400000000000000000000", + "isEnabled": true, + "rate": "114228000000000000000" + }, + "out": { + "capacity": "43600000000000000000000", + "isEnabled": true, + "rate": "72812000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": null, + "standard": null + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "33700000000000000000000", + "isEnabled": true, + "rate": "56279000000000000000" + }, + "out": { + "capacity": "44300000000000000000000", + "isEnabled": true, + "rate": "73981000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-mode-1": { + "custom": { + "in": { + "capacity": "60000000000000000000000", + "isEnabled": true, + "rate": "100200000000000000000" + }, + "out": { + "capacity": "34500000000000000000000", + "isEnabled": true, + "rate": "57615000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "63600000000000000000000", + "isEnabled": true, + "rate": "106212000000000000000" + }, + "out": { + "capacity": "43000000000000000000000", + "isEnabled": true, + "rate": "71810000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "shibarium-testnet-puppynet": { + "custom": { + "in": { + "capacity": "54000000000000000000000", + "isEnabled": true, + "rate": "90180000000000000000" + }, + "out": { + "capacity": "46900000000000000000000", + "isEnabled": true, + "rate": "78323000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "solana-devnet": { + "custom": { + "in": { + "capacity": "48100000000000000000000", + "isEnabled": true, + "rate": "80327000000000000000" + }, + "out": { + "capacity": "34600000000000000000000", + "isEnabled": true, + "rate": "57782000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "51900000000000000000000", + "isEnabled": true, + "rate": "86673000000000000000" + }, + "out": { + "capacity": "42500000000000000000000", + "isEnabled": true, + "rate": "70975000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-blast-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "39000000000000000000000", + "isEnabled": true, + "rate": "65130000000000000000" + }, + "out": { + "capacity": "48200000000000000000000", + "isEnabled": true, + "rate": "80494000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-hashkey-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "43700000000000000000000", + "isEnabled": true, + "rate": "72979000000000000000" + }, + "out": { + "capacity": "33800000000000000000000", + "isEnabled": true, + "rate": "56446000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-lisk-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "35400000000000000000000", + "isEnabled": true, + "rate": "59118000000000000000" + }, + "out": { + "capacity": "46300000000000000000000", + "isEnabled": true, + "rate": "77321000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-mantle-1": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "34700000000000000000000", + "isEnabled": true, + "rate": "57949000000000000000" + }, + "out": { + "capacity": "51500000000000000000000", + "isEnabled": true, + "rate": "86005000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-mode-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "42500000000000000000000", + "isEnabled": true, + "rate": "70975000000000000000" + }, + "out": { + "capacity": "49200000000000000000000", + "isEnabled": true, + "rate": "82164000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "46900000000000000000000", + "isEnabled": true, + "rate": "78323000000000000000" + }, + "out": { + "capacity": "40200000000000000000000", + "isEnabled": true, + "rate": "67134000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "minBlockConfirmation": 1, + "remote": { + "aptos-testnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "61000000000000000000000", + "isEnabled": true, + "rate": "101870000000000000000" + }, + "out": { + "capacity": "48800000000000000000000", + "isEnabled": true, + "rate": "81496000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "47300000000000000000000", + "isEnabled": true, + "rate": "78991000000000000000" + }, + "out": { + "capacity": "38600000000000000000000", + "isEnabled": true, + "rate": "64462000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "54100000000000000000000", + "isEnabled": true, + "rate": "90347000000000000000" + }, + "out": { + "capacity": "54900000000000000000000", + "isEnabled": true, + "rate": "91683000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "53400000000000000000000", + "isEnabled": true, + "rate": "89178000000000000000" + }, + "out": { + "capacity": "52300000000000000000000", + "isEnabled": true, + "rate": "87341000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "51100000000000000000000", + "isEnabled": true, + "rate": "85337000000000000000" + }, + "out": { + "capacity": "40400000000000000000000", + "isEnabled": true, + "rate": "67468000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "shibarium-testnet-puppynet": { + "custom": { + "in": { + "capacity": "34700000000000000000000", + "isEnabled": true, + "rate": "57949000000000000000" + }, + "out": { + "capacity": "33500000000000000000000", + "isEnabled": true, + "rate": "55945000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "solana-devnet": { + "custom": { + "in": { + "capacity": "49600000000000000000000", + "isEnabled": true, + "rate": "82832000000000000000" + }, + "out": { + "capacity": "65900000000000000000000", + "isEnabled": true, + "rate": "110053000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "53500000000000000000000", + "isEnabled": true, + "rate": "89345000000000000000" + }, + "out": { + "capacity": "35800000000000000000000", + "isEnabled": true, + "rate": "59786000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "69700000000000000000000", + "isEnabled": true, + "rate": "116399000000000000000" + }, + "out": { + "capacity": "69400000000000000000000", + "isEnabled": true, + "rate": "115898000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-unichain-1": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "61100000000000000000000", + "isEnabled": true, + "rate": "102037000000000000000" + }, + "out": { + "capacity": "64200000000000000000000", + "isEnabled": true, + "rate": "107214000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-worldchain-1": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "32400000000000000000000", + "isEnabled": true, + "rate": "54108000000000000000" + }, + "out": { + "capacity": "47700000000000000000000", + "isEnabled": true, + "rate": "79659000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-zksync-1": { + "minBlockConfirmation": null, + "remote": { + "ethereum-testnet-sepolia": { + "custom": null, + "standard": null + } + } + }, + "hedera-testnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "68100000000000000000000", + "isEnabled": true, + "rate": "113727000000000000000" + }, + "out": { + "capacity": "64900000000000000000000", + "isEnabled": true, + "rate": "108383000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ink-testnet-sepolia": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "62400000000000000000000", + "isEnabled": true, + "rate": "104208000000000000000" + }, + "out": { + "capacity": "68900000000000000000000", + "isEnabled": true, + "rate": "115063000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "jovay-testnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "memento-testnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "metal-testnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "57500000000000000000000", + "isEnabled": true, + "rate": "96025000000000000000" + }, + "out": { + "capacity": "59900000000000000000000", + "isEnabled": true, + "rate": "100033000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "mint-testnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "44900000000000000000000", + "isEnabled": true, + "rate": "74983000000000000000" + }, + "out": { + "capacity": "57400000000000000000000", + "isEnabled": true, + "rate": "95858000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "plume-testnet-sepolia": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "45900000000000000000000", + "isEnabled": true, + "rate": "76653000000000000000" + }, + "out": { + "capacity": "32800000000000000000000", + "isEnabled": true, + "rate": "54776000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "polkadot-testnet-astar-shibuya": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "41800000000000000000000", + "isEnabled": true, + "rate": "69806000000000000000" + }, + "out": { + "capacity": "50300000000000000000000", + "isEnabled": true, + "rate": "84001000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "polygon-testnet-amoy": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "40000000000000000000000", + "isEnabled": true, + "rate": "66800000000000000000" + }, + "out": { + "capacity": "55200000000000000000000", + "isEnabled": true, + "rate": "92184000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bsc-testnet": { + "custom": { + "in": { + "capacity": "37800000000000000000000", + "isEnabled": true, + "rate": "63126000000000000000" + }, + "out": { + "capacity": "41600000000000000000000", + "isEnabled": true, + "rate": "69472000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": null, + "standard": null + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "62200000000000000000000", + "isEnabled": true, + "rate": "103874000000000000000" + }, + "out": { + "capacity": "65300000000000000000000", + "isEnabled": true, + "rate": "109051000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "59500000000000000000000", + "isEnabled": true, + "rate": "99365000000000000000" + }, + "out": { + "capacity": "64600000000000000000000", + "isEnabled": true, + "rate": "107882000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "53700000000000000000000", + "isEnabled": true, + "rate": "89679000000000000000" + }, + "out": { + "capacity": "61200000000000000000000", + "isEnabled": true, + "rate": "102204000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "polygon-testnet-tatara": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-testnet-holesky": { + "custom": { + "in": { + "capacity": "37500000000000000000000", + "isEnabled": true, + "rate": "62625000000000000000" + }, + "out": { + "capacity": "68700000000000000000000", + "isEnabled": true, + "rate": "114729000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ronin-testnet-saigon": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "53400000000000000000000", + "isEnabled": true, + "rate": "89178000000000000000" + }, + "out": { + "capacity": "39700000000000000000000", + "isEnabled": true, + "rate": "66299000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "sei-testnet-atlantic": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "62900000000000000000000", + "isEnabled": true, + "rate": "105043000000000000000" + }, + "out": { + "capacity": "34200000000000000000000", + "isEnabled": true, + "rate": "57114000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "shibarium-testnet-puppynet": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "46200000000000000000000", + "isEnabled": true, + "rate": "77154000000000000000" + }, + "out": { + "capacity": "65700000000000000000000", + "isEnabled": true, + "rate": "109719000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "48100000000000000000000", + "isEnabled": true, + "rate": "80327000000000000000" + }, + "out": { + "capacity": "58500000000000000000000", + "isEnabled": true, + "rate": "97695000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "34500000000000000000000", + "isEnabled": true, + "rate": "57615000000000000000" + }, + "out": { + "capacity": "69400000000000000000000", + "isEnabled": true, + "rate": "115898000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": null, + "standard": null + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "45100000000000000000000", + "isEnabled": true, + "rate": "75317000000000000000" + }, + "out": { + "capacity": "63200000000000000000000", + "isEnabled": true, + "rate": "105544000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "solana-devnet": { + "minBlockConfirmation": 9, + "remote": { + "bsc-testnet": { + "custom": { + "in": { + "capacity": "62200000000000", + "isEnabled": true, + "rate": "103874000000" + }, + "out": { + "capacity": "50400000000000", + "isEnabled": true, + "rate": "84168000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + }, + "out": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "54200000000000", + "isEnabled": true, + "rate": "90514000000" + }, + "out": { + "capacity": "55300000000000", + "isEnabled": true, + "rate": "92351000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + }, + "out": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "60900000000000", + "isEnabled": true, + "rate": "101703000000" + }, + "out": { + "capacity": "65000000000000", + "isEnabled": true, + "rate": "108550000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + }, + "out": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "40800000000000", + "isEnabled": true, + "rate": "68136000000" + }, + "out": { + "capacity": "68300000000000", + "isEnabled": true, + "rate": "114061000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + }, + "out": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "36800000000000", + "isEnabled": true, + "rate": "61456000000" + }, + "out": { + "capacity": "41500000000000", + "isEnabled": true, + "rate": "69305000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + }, + "out": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + } + } + }, + "sonic-testnet-blaze": { + "custom": { + "in": { + "capacity": "64300000000000", + "isEnabled": true, + "rate": "107381000000" + }, + "out": { + "capacity": "31800000000000", + "isEnabled": true, + "rate": "53106000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + }, + "out": { + "capacity": "100000000000000", + "isEnabled": true, + "rate": "167000000000" + } + } + } + } + }, + "sonic-testnet-blaze": { + "minBlockConfirmation": 9, + "remote": { + "aptos-testnet": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "68500000000000000000000", + "isEnabled": true, + "rate": "114395000000000000000" + }, + "out": { + "capacity": "49500000000000000000000", + "isEnabled": true, + "rate": "82665000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "solana-devnet": { + "custom": { + "in": { + "capacity": "33200000000000000000000", + "isEnabled": true, + "rate": "55444000000000000000" + }, + "out": { + "capacity": "43200000000000000000000", + "isEnabled": true, + "rate": "72144000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "tac-testnet": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "wemix-testnet": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "45600000000000000000000", + "isEnabled": true, + "rate": "76152000000000000000" + }, + "out": { + "capacity": "44700000000000000000000", + "isEnabled": true, + "rate": "74649000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bsc-testnet": { + "custom": { + "in": { + "capacity": "60500000000000000000000", + "isEnabled": true, + "rate": "101035000000000000000" + }, + "out": { + "capacity": "52500000000000000000000", + "isEnabled": true, + "rate": "87675000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "45100000000000000000000", + "isEnabled": true, + "rate": "75317000000000000000" + }, + "out": { + "capacity": "41800000000000000000000", + "isEnabled": true, + "rate": "69806000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "38300000000000000000000", + "isEnabled": true, + "rate": "63961000000000000000" + }, + "out": { + "capacity": "30700000000000000000000", + "isEnabled": true, + "rate": "51269000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "66000000000000000000000", + "isEnabled": true, + "rate": "110220000000000000000" + }, + "out": { + "capacity": "38700000000000000000000", + "isEnabled": true, + "rate": "64629000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "37700000000000000000000", + "isEnabled": true, + "rate": "62959000000000000000" + }, + "out": { + "capacity": "42700000000000000000000", + "isEnabled": true, + "rate": "71309000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "xdai-testnet-chiado": { + "minBlockConfirmation": 4, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "44700000000000000000000", + "isEnabled": true, + "rate": "74649000000000000000" + }, + "out": { + "capacity": "38100000000000000000000", + "isEnabled": true, + "rate": "63627000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bsc-testnet": { + "custom": { + "in": { + "capacity": "59100000000000000000000", + "isEnabled": true, + "rate": "98697000000000000000" + }, + "out": { + "capacity": "51300000000000000000000", + "isEnabled": true, + "rate": "85671000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "52500000000000000000000", + "isEnabled": true, + "rate": "87675000000000000000" + }, + "out": { + "capacity": "61300000000000000000000", + "isEnabled": true, + "rate": "102371000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "40300000000000000000000", + "isEnabled": true, + "rate": "67301000000000000000" + }, + "out": { + "capacity": "51500000000000000000000", + "isEnabled": true, + "rate": "86005000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "50000000000000000000000", + "isEnabled": true, + "rate": "83500000000000000000" + }, + "out": { + "capacity": "54500000000000000000000", + "isEnabled": true, + "rate": "91015000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "56900000000000000000000", + "isEnabled": true, + "rate": "95023000000000000000" + }, + "out": { + "capacity": "45900000000000000000000", + "isEnabled": true, + "rate": "76653000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "64700000000000000000000", + "isEnabled": true, + "rate": "108049000000000000000" + }, + "out": { + "capacity": "53500000000000000000000", + "isEnabled": true, + "rate": "89345000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "xdc-testnet": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + }, + "out": { + "capacity": "1000000000000000000000", + "isEnabled": true, + "rate": "1000000000000000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "CCIP-LnM": { + "avalanche-fuji-testnet": { + "minBlockConfirmation": 8, + "remote": { + "bsc-testnet": { + "custom": { + "in": { + "capacity": "31500000000000000000000", + "isEnabled": true, + "rate": "52605000000000000000" + }, + "out": { + "capacity": "49900000000000000000000", + "isEnabled": true, + "rate": "83333000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "58000000000000000000000", + "isEnabled": true, + "rate": "96860000000000000000" + }, + "out": { + "capacity": "47600000000000000000000", + "isEnabled": true, + "rate": "79492000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "43000000000000000000000", + "isEnabled": true, + "rate": "71810000000000000000" + }, + "out": { + "capacity": "57200000000000000000000", + "isEnabled": true, + "rate": "95524000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "32600000000000000000000", + "isEnabled": true, + "rate": "54442000000000000000" + }, + "out": { + "capacity": "49100000000000000000000", + "isEnabled": true, + "rate": "81997000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "37400000000000000000000", + "isEnabled": true, + "rate": "62458000000000000000" + }, + "out": { + "capacity": "37600000000000000000000", + "isEnabled": true, + "rate": "62792000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "56600000000000000000000", + "isEnabled": true, + "rate": "94522000000000000000" + }, + "out": { + "capacity": "64000000000000000000000", + "isEnabled": true, + "rate": "106880000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "38000000000000000000000", + "isEnabled": true, + "rate": "63460000000000000000" + }, + "out": { + "capacity": "34800000000000000000000", + "isEnabled": true, + "rate": "58116000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": null, + "standard": null + } + } + }, + "bsc-testnet": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "60000000000000000000000", + "isEnabled": true, + "rate": "100200000000000000000" + }, + "out": { + "capacity": "60200000000000000000000", + "isEnabled": true, + "rate": "100534000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "42400000000000000000000", + "isEnabled": true, + "rate": "70808000000000000000" + }, + "out": { + "capacity": "51700000000000000000000", + "isEnabled": true, + "rate": "86339000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "46000000000000000000000", + "isEnabled": true, + "rate": "76820000000000000000" + }, + "out": { + "capacity": "48100000000000000000000", + "isEnabled": true, + "rate": "80327000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "67200000000000000000000", + "isEnabled": true, + "rate": "112224000000000000000" + }, + "out": { + "capacity": "69300000000000000000000", + "isEnabled": true, + "rate": "115731000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "65300000000000000000000", + "isEnabled": true, + "rate": "109051000000000000000" + }, + "out": { + "capacity": "39300000000000000000000", + "isEnabled": true, + "rate": "65631000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "48700000000000000000000", + "isEnabled": true, + "rate": "81329000000000000000" + }, + "out": { + "capacity": "60000000000000000000000", + "isEnabled": true, + "rate": "100200000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "celo-testnet-alfajores": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "67700000000000000000000", + "isEnabled": true, + "rate": "113059000000000000000" + }, + "out": { + "capacity": "64100000000000000000000", + "isEnabled": true, + "rate": "107047000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "44500000000000000000000", + "isEnabled": true, + "rate": "74315000000000000000" + }, + "out": { + "capacity": "64400000000000000000000", + "isEnabled": true, + "rate": "107548000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bsc-testnet": { + "custom": { + "in": { + "capacity": "68800000000000000000000", + "isEnabled": true, + "rate": "114896000000000000000" + }, + "out": { + "capacity": "35200000000000000000000", + "isEnabled": true, + "rate": "58784000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "celo-testnet-alfajores": { + "custom": { + "in": { + "capacity": "41000000000000000000000", + "isEnabled": true, + "rate": "68470000000000000000" + }, + "out": { + "capacity": "60800000000000000000000", + "isEnabled": true, + "rate": "101536000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-andromeda-1": { + "custom": { + "in": { + "capacity": "68000000000000000000000", + "isEnabled": true, + "rate": "113560000000000000000" + }, + "out": { + "capacity": "45500000000000000000000", + "isEnabled": true, + "rate": "75985000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "52900000000000000000000", + "isEnabled": true, + "rate": "88343000000000000000" + }, + "out": { + "capacity": "36700000000000000000000", + "isEnabled": true, + "rate": "61289000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "35000000000000000000000", + "isEnabled": true, + "rate": "58450000000000000000" + }, + "out": { + "capacity": "47700000000000000000000", + "isEnabled": true, + "rate": "79659000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-blast-1": { + "custom": { + "in": { + "capacity": "50300000000000000000000", + "isEnabled": true, + "rate": "84001000000000000000" + }, + "out": { + "capacity": "47800000000000000000000", + "isEnabled": true, + "rate": "79826000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-linea-1": { + "custom": { + "in": { + "capacity": "51600000000000000000000", + "isEnabled": true, + "rate": "86172000000000000000" + }, + "out": { + "capacity": "43400000000000000000000", + "isEnabled": true, + "rate": "72478000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-mantle-1": { + "custom": { + "in": { + "capacity": "54400000000000000000000", + "isEnabled": true, + "rate": "90848000000000000000" + }, + "out": { + "capacity": "52000000000000000000000", + "isEnabled": true, + "rate": "86840000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-mode-1": { + "custom": { + "in": { + "capacity": "53800000000000000000000", + "isEnabled": true, + "rate": "89846000000000000000" + }, + "out": { + "capacity": "59400000000000000000000", + "isEnabled": true, + "rate": "99198000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "59300000000000000000000", + "isEnabled": true, + "rate": "99031000000000000000" + }, + "out": { + "capacity": "37700000000000000000000", + "isEnabled": true, + "rate": "62959000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-polygon-zkevm-1": { + "custom": { + "in": { + "capacity": "65400000000000000000000", + "isEnabled": true, + "rate": "109218000000000000000" + }, + "out": { + "capacity": "32400000000000000000000", + "isEnabled": true, + "rate": "54108000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-scroll-1": { + "custom": { + "in": { + "capacity": "67400000000000000000000", + "isEnabled": true, + "rate": "112558000000000000000" + }, + "out": { + "capacity": "53200000000000000000000", + "isEnabled": true, + "rate": "88844000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-xlayer-1": { + "custom": { + "in": { + "capacity": "68700000000000000000000", + "isEnabled": true, + "rate": "114729000000000000000" + }, + "out": { + "capacity": "55500000000000000000000", + "isEnabled": true, + "rate": "92685000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-zksync-1": { + "custom": { + "in": { + "capacity": "40800000000000000000000", + "isEnabled": true, + "rate": "68136000000000000000" + }, + "out": { + "capacity": "62400000000000000000000", + "isEnabled": true, + "rate": "104208000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polkadot-testnet-astar-shibuya": { + "custom": { + "in": { + "capacity": "114228000000000000000", + "isEnabled": true, + "rate": "68400000000000000000" + }, + "out": { + "capacity": "84001000000000000000", + "isEnabled": true, + "rate": "50300000000000000000" + } + }, + "standard": { + "in": { + "capacity": "167000000000000000000", + "isEnabled": true, + "rate": "100000000000000000000" + }, + "out": { + "capacity": "167000000000000000000", + "isEnabled": true, + "rate": "100000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "36900000000000000000000", + "isEnabled": true, + "rate": "61623000000000000000" + }, + "out": { + "capacity": "44600000000000000000000", + "isEnabled": true, + "rate": "74482000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ronin-testnet-saigon": { + "custom": { + "in": { + "capacity": "59400000000000000000000", + "isEnabled": true, + "rate": "99198000000000000000" + }, + "out": { + "capacity": "38200000000000000000000", + "isEnabled": true, + "rate": "63794000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "69700000000000000000000", + "isEnabled": true, + "rate": "116399000000000000000" + }, + "out": { + "capacity": "101703000000000000000", + "isEnabled": true, + "rate": "60900000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "167000000000000000000", + "isEnabled": true, + "rate": "100000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "58500000000000000000000", + "isEnabled": true, + "rate": "97695000000000000000" + }, + "out": { + "capacity": "33200000000000000000000", + "isEnabled": true, + "rate": "55444000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-andromeda-1": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "61100000000000000000000", + "isEnabled": true, + "rate": "102037000000000000000" + }, + "out": { + "capacity": "48100000000000000000000", + "isEnabled": true, + "rate": "80327000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "minBlockConfirmation": 5, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "47300000000000000000000", + "isEnabled": true, + "rate": "78991000000000000000" + }, + "out": { + "capacity": "30900000000000000000000", + "isEnabled": true, + "rate": "51603000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "69900000000000000000000", + "isEnabled": true, + "rate": "116733000000000000000" + }, + "out": { + "capacity": "48500000000000000000000", + "isEnabled": true, + "rate": "80995000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "41300000000000000000000", + "isEnabled": true, + "rate": "68971000000000000000" + }, + "out": { + "capacity": "52700000000000000000000", + "isEnabled": true, + "rate": "88009000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "41900000000000000000000", + "isEnabled": true, + "rate": "69973000000000000000" + }, + "out": { + "capacity": "33200000000000000000000", + "isEnabled": true, + "rate": "55444000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "34500000000000000000000", + "isEnabled": true, + "rate": "57615000000000000000" + }, + "out": { + "capacity": "66400000000000000000000", + "isEnabled": true, + "rate": "110888000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "31400000000000000000000", + "isEnabled": true, + "rate": "52438000000000000000" + }, + "out": { + "capacity": "47300000000000000000000", + "isEnabled": true, + "rate": "78991000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "minBlockConfirmation": 1, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "44400000000000000000000", + "isEnabled": true, + "rate": "74148000000000000000" + }, + "out": { + "capacity": "61600000000000000000000", + "isEnabled": true, + "rate": "102872000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bsc-testnet": { + "custom": { + "in": { + "capacity": "46400000000000000000000", + "isEnabled": true, + "rate": "77488000000000000000" + }, + "out": { + "capacity": "55000000000000000000000", + "isEnabled": true, + "rate": "91850000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "50200000000000000000000", + "isEnabled": true, + "rate": "83834000000000000000" + }, + "out": { + "capacity": "32300000000000000000000", + "isEnabled": true, + "rate": "53941000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "61800000000000000000000", + "isEnabled": true, + "rate": "103206000000000000000" + }, + "out": { + "capacity": "39200000000000000000000", + "isEnabled": true, + "rate": "65464000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-mode-1": { + "custom": { + "in": { + "capacity": "47000000000000000000000", + "isEnabled": true, + "rate": "78490000000000000000" + }, + "out": { + "capacity": "57500000000000000000000", + "isEnabled": true, + "rate": "96025000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "32600000000000000000000", + "isEnabled": true, + "rate": "54442000000000000000" + }, + "out": { + "capacity": "37300000000000000000000", + "isEnabled": true, + "rate": "62291000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "35600000000000000000000", + "isEnabled": true, + "rate": "59452000000000000000" + }, + "out": { + "capacity": "44000000000000000000000", + "isEnabled": true, + "rate": "73480000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-blast-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "35900000000000000000000", + "isEnabled": true, + "rate": "59953000000000000000" + }, + "out": { + "capacity": "43900000000000000000000", + "isEnabled": true, + "rate": "73313000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-kroma-1": { + "minBlockConfirmation": 1, + "remote": { + "wemix-testnet": { + "custom": { + "in": { + "capacity": "48200000000000000000000", + "isEnabled": true, + "rate": "80494000000000000000" + }, + "out": { + "capacity": "53500000000000000000000", + "isEnabled": true, + "rate": "89345000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-linea-1": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "63800000000000000000000", + "isEnabled": true, + "rate": "106546000000000000000" + }, + "out": { + "capacity": "65400000000000000000000", + "isEnabled": true, + "rate": "109218000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-mantle-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "63200000000000000000000", + "isEnabled": true, + "rate": "105544000000000000000" + }, + "out": { + "capacity": "35500000000000000000000", + "isEnabled": true, + "rate": "59285000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-mode-1": { + "minBlockConfirmation": 4, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "50700000000000000000000", + "isEnabled": true, + "rate": "84669000000000000000" + }, + "out": { + "capacity": "49500000000000000000000", + "isEnabled": true, + "rate": "82665000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "40900000000000000000000", + "isEnabled": true, + "rate": "68303000000000000000" + }, + "out": { + "capacity": "45900000000000000000000", + "isEnabled": true, + "rate": "76653000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "68400000000000000000000", + "isEnabled": true, + "rate": "114228000000000000000" + }, + "out": { + "capacity": "41500000000000000000000", + "isEnabled": true, + "rate": "69305000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "52900000000000000000000", + "isEnabled": true, + "rate": "88343000000000000000" + }, + "out": { + "capacity": "59700000000000000000000", + "isEnabled": true, + "rate": "99699000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "50400000000000000000000", + "isEnabled": true, + "rate": "84168000000000000000" + }, + "out": { + "capacity": "54800000000000000000000", + "isEnabled": true, + "rate": "91516000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "61100000000000000000000", + "isEnabled": true, + "rate": "102037000000000000000" + }, + "out": { + "capacity": "57200000000000000000000", + "isEnabled": true, + "rate": "95524000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "54100000000000000000000", + "isEnabled": true, + "rate": "90347000000000000000" + }, + "out": { + "capacity": "48600000000000000000000", + "isEnabled": true, + "rate": "81162000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "33300000000000000000000", + "isEnabled": true, + "rate": "55611000000000000000" + }, + "out": { + "capacity": "38900000000000000000000", + "isEnabled": true, + "rate": "64963000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "52100000000000000000000", + "isEnabled": true, + "rate": "87007000000000000000" + }, + "out": { + "capacity": "61200000000000000000000", + "isEnabled": true, + "rate": "102204000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-polygon-zkevm-1": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "46000000000000000000000", + "isEnabled": true, + "rate": "76820000000000000000" + }, + "out": { + "capacity": "42000000000000000000000", + "isEnabled": true, + "rate": "70140000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-scroll-1": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "41500000000000000000000", + "isEnabled": true, + "rate": "69305000000000000000" + }, + "out": { + "capacity": "57000000000000000000000", + "isEnabled": true, + "rate": "95190000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-xlayer-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "55100000000000000000000", + "isEnabled": true, + "rate": "92017000000000000000" + }, + "out": { + "capacity": "52200000000000000000000", + "isEnabled": true, + "rate": "87174000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ethereum-testnet-sepolia-zksync-1": { + "minBlockConfirmation": 9, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "69000000000000000000000", + "isEnabled": true, + "rate": "115230000000000000000" + }, + "out": { + "capacity": "48400000000000000000000", + "isEnabled": true, + "rate": "80828000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "polkadot-testnet-astar-shibuya": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "78490000000000000000", + "isEnabled": true, + "rate": "47000000000000000000" + }, + "out": { + "capacity": "92351000000000000000", + "isEnabled": true, + "rate": "55300000000000000000" + } + }, + "standard": { + "in": { + "capacity": "167000000000000000000", + "isEnabled": true, + "rate": "100000000000000000000" + }, + "out": { + "capacity": "167000000000000000000", + "isEnabled": true, + "rate": "100000000000000000000" + } + } + } + } + }, + "polygon-testnet-amoy": { + "minBlockConfirmation": 6, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "63700000000000000000000", + "isEnabled": true, + "rate": "106379000000000000000" + }, + "out": { + "capacity": "41100000000000000000000", + "isEnabled": true, + "rate": "68637000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bsc-testnet": { + "custom": { + "in": { + "capacity": "64800000000000000000000", + "isEnabled": true, + "rate": "108216000000000000000" + }, + "out": { + "capacity": "58500000000000000000000", + "isEnabled": true, + "rate": "97695000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "58400000000000000000000", + "isEnabled": true, + "rate": "97528000000000000000" + }, + "out": { + "capacity": "37100000000000000000000", + "isEnabled": true, + "rate": "61957000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "36600000000000000000000", + "isEnabled": true, + "rate": "61122000000000000000" + }, + "out": { + "capacity": "56400000000000000000000", + "isEnabled": true, + "rate": "94188000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "wemix-testnet": { + "custom": { + "in": { + "capacity": "32300000000000000000000", + "isEnabled": true, + "rate": "53941000000000000000" + }, + "out": { + "capacity": "30900000000000000000000", + "isEnabled": true, + "rate": "51603000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "xdai-testnet-chiado": { + "custom": { + "in": { + "capacity": "34200000000000000000000", + "isEnabled": true, + "rate": "57114000000000000000" + }, + "out": { + "capacity": "68200000000000000000000", + "isEnabled": true, + "rate": "113894000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "ronin-testnet-saigon": { + "minBlockConfirmation": 7, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "56900000000000000000000", + "isEnabled": true, + "rate": "95023000000000000000" + }, + "out": { + "capacity": "53000000000000000000000", + "isEnabled": true, + "rate": "88510000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "wemix-testnet": { + "minBlockConfirmation": 2, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "54300000000000000000000", + "isEnabled": true, + "rate": "90681000000000000000" + }, + "out": { + "capacity": "46600000000000000000000", + "isEnabled": true, + "rate": "77822000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bsc-testnet": { + "custom": { + "in": { + "capacity": "68900000000000000000000", + "isEnabled": true, + "rate": "115063000000000000000" + }, + "out": { + "capacity": "66400000000000000000000", + "isEnabled": true, + "rate": "110888000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "43200000000000000000000", + "isEnabled": true, + "rate": "72144000000000000000" + }, + "out": { + "capacity": "43200000000000000000000", + "isEnabled": true, + "rate": "72144000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "33200000000000000000000", + "isEnabled": true, + "rate": "55444000000000000000" + }, + "out": { + "capacity": "64100000000000000000000", + "isEnabled": true, + "rate": "107047000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-kroma-1": { + "custom": { + "in": { + "capacity": "48600000000000000000000", + "isEnabled": true, + "rate": "81162000000000000000" + }, + "out": { + "capacity": "37500000000000000000000", + "isEnabled": true, + "rate": "62625000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "63600000000000000000000", + "isEnabled": true, + "rate": "106212000000000000000" + }, + "out": { + "capacity": "59500000000000000000000", + "isEnabled": true, + "rate": "99365000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "63200000000000000000000", + "isEnabled": true, + "rate": "105544000000000000000" + }, + "out": { + "capacity": "35200000000000000000000", + "isEnabled": true, + "rate": "58784000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + }, + "xdai-testnet-chiado": { + "minBlockConfirmation": 10, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "63600000000000000000000", + "isEnabled": true, + "rate": "106212000000000000000" + }, + "out": { + "capacity": "36900000000000000000000", + "isEnabled": true, + "rate": "61623000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "bsc-testnet": { + "custom": { + "in": { + "capacity": "68700000000000000000000", + "isEnabled": true, + "rate": "114729000000000000000" + }, + "out": { + "capacity": "67200000000000000000000", + "isEnabled": true, + "rate": "112224000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "64900000000000000000000", + "isEnabled": true, + "rate": "108383000000000000000" + }, + "out": { + "capacity": "37200000000000000000000", + "isEnabled": true, + "rate": "62124000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "59800000000000000000000", + "isEnabled": true, + "rate": "99866000000000000000" + }, + "out": { + "capacity": "60800000000000000000000", + "isEnabled": true, + "rate": "101536000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "60300000000000000000000", + "isEnabled": true, + "rate": "100701000000000000000" + }, + "out": { + "capacity": "60500000000000000000000", + "isEnabled": true, + "rate": "101035000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "30800000000000000000000", + "isEnabled": true, + "rate": "51436000000000000000" + }, + "out": { + "capacity": "32800000000000000000000", + "isEnabled": true, + "rate": "54776000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "33200000000000000000000", + "isEnabled": true, + "rate": "55444000000000000000" + }, + "out": { + "capacity": "46400000000000000000000", + "isEnabled": true, + "rate": "77488000000000000000" + } + }, + "standard": { + "in": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + }, + "out": { + "capacity": "100000000000000000000000", + "isEnabled": true, + "rate": "167000000000000000000" + } + } + } + } + } + }, + "syrupUSDC": { + "ethereum-testnet-sepolia": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-devnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "solana-devnet": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "syrupUSDT": { + "ethereum-testnet-sepolia": { + "minBlockConfirmation": 1, + "remote": { + "ethereum-testnet-sepolia-mantle-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "plasma-testnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-testnet-sepolia-mantle-1": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "plasma-testnet": { + "minBlockConfirmation": 5, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + }, + "USDC": { + "avalanche-fuji-testnet": { + "minBlockConfirmation": 10, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-testnet-sepolia": { + "minBlockConfirmation": 8, + "remote": { + "avalanche-fuji-testnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-devnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "minBlockConfirmation": 8, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-testnet-sepolia-base-1": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "minBlockConfirmation": 3, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-devnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "ethereum-testnet-sepolia-unichain-1": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-devnet": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + }, + "polygon-testnet-amoy": { + "minBlockConfirmation": 2, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "solana-devnet": { + "custom": null, + "standard": null + } + } + }, + "solana-devnet": { + "minBlockConfirmation": 6, + "remote": { + "ethereum-testnet-sepolia": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia-optimism-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "ethereum-testnet-sepolia-unichain-1": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + }, + "polygon-testnet-amoy": { + "custom": { + "in": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + }, + "out": { + "capacity": "1000000000", + "isEnabled": true, + "rate": "1000000" + } + }, + "standard": { + "in": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + }, + "out": { + "capacity": "0", + "isEnabled": false, + "rate": "0" + } + } + } + } + } + } +} diff --git a/src/components/Address.tsx b/src/components/Address.tsx index 5544b5e225b..1acc8b3c07d 100644 --- a/src/components/Address.tsx +++ b/src/components/Address.tsx @@ -55,6 +55,7 @@ const AddressComponent = ({ padding: 1px 5px; border-radius: var(--border-radius-10); word-break: break-word; + color: var(--blue-600); } .addressContainer { diff --git a/src/components/AddressReact.tsx b/src/components/AddressReact.tsx index 84648e9f3e4..46d3e69bace 100644 --- a/src/components/AddressReact.tsx +++ b/src/components/AddressReact.tsx @@ -40,6 +40,7 @@ const AddressComponent = ({ contractUrl, address, endLength, urlClass, urlId }: padding: 1px 0px; border-radius: var(--border-radius-10); word-break: break-word; + color: var(--blue-600); } .addressContainer { diff --git a/src/components/CCIP/AddButton/AddButton.astro b/src/components/CCIP/AddButton/AddButton.astro new file mode 100644 index 00000000000..bd52b43b126 --- /dev/null +++ b/src/components/CCIP/AddButton/AddButton.astro @@ -0,0 +1,47 @@ +--- +export interface Props { + href: string + text: string + urlClass?: string +} + +const { href, text, urlClass } = Astro.props +--- + + + Add + {text} + + + diff --git a/src/components/CCIP/Cards/Card.css b/src/components/CCIP/Cards/Card.css new file mode 100644 index 00000000000..bb77dae5555 --- /dev/null +++ b/src/components/CCIP/Cards/Card.css @@ -0,0 +1,40 @@ +.card__container { + display: flex; + padding: var(--space-6x); + gap: var(--space-3x); + width: 100%; + background: var(--white); + border: 1px solid var(--gray-200); + border-radius: var(--space-1x); + /* Optimize rendering performance */ + contain: layout style paint; + will-change: background-color; +} + +.card__container:hover { + background-color: var(--gray-50); +} + +.card__container img, +.card__container object, +.card__container object img { + width: var(--space-10x); + height: var(--space-10x); + margin-top: auto; + margin-bottom: auto; +} + +.card__container h3 { + font-size: var(--space-4x); + font-weight: var(--font-weight-medium); + line-height: var(--space-6x); + color: var(--gray-950); + margin-bottom: var(--space-1x); +} + +.card__container p { + margin-bottom: 0; + font-size: var(--space-3x); + line-height: var(--space-5x); + color: var(--gray-500); +} diff --git a/src/components/CCIP/Cards/Card.tsx b/src/components/CCIP/Cards/Card.tsx new file mode 100644 index 00000000000..669bd9155ff --- /dev/null +++ b/src/components/CCIP/Cards/Card.tsx @@ -0,0 +1,43 @@ +import { memo, type ReactNode } from "react" +import "./Card.css" + +interface CardProps { + logo: ReactNode + title: string + subtitle?: string + link?: string + onClick?: () => void + ariaLabel?: string +} + +const Card = memo(function Card({ logo, title, subtitle, link, onClick, ariaLabel }: CardProps) { + const content = ( + <> + {logo} +
+

{title}

+ {subtitle &&

{subtitle}

} +
+ + ) + + if (link) { + return ( + +
{content}
+
+ ) + } + + if (onClick) { + return ( + + ) + } + + return
{content}
+}) + +export default Card diff --git a/src/components/CCIP/Cards/NetworkCard.tsx b/src/components/CCIP/Cards/NetworkCard.tsx index 839f4389d4d..5d5ee0f4e99 100644 --- a/src/components/CCIP/Cards/NetworkCard.tsx +++ b/src/components/CCIP/Cards/NetworkCard.tsx @@ -1,5 +1,5 @@ import { memo } from "react" -import "./NetworkCard.css" +import Card from "./Card.tsx" interface NetworkCardProps { name: string @@ -9,17 +9,9 @@ interface NetworkCardProps { } const NetworkCard = memo(function NetworkCard({ name, totalLanes, totalTokens, logo }: NetworkCardProps) { - return ( -
- -
-

{name}

-

- {totalLanes} {totalLanes > 1 ? "lanes" : "lane"} | {totalTokens} {totalTokens > 1 ? "tokens" : "token"} -

-
-
- ) + const subtitle = `${totalLanes} ${totalLanes === 1 ? "lane" : "lanes"} | ${totalTokens} ${totalTokens === 1 ? "token" : "tokens"}` + + return } title={name} subtitle={subtitle} /> }) export default NetworkCard diff --git a/src/components/CCIP/Cards/TokenCard.css b/src/components/CCIP/Cards/TokenCard.css index c2d092aa132..ae035e97a19 100644 --- a/src/components/CCIP/Cards/TokenCard.css +++ b/src/components/CCIP/Cards/TokenCard.css @@ -1,19 +1,11 @@ .token-card__container { display: flex; - width: 100%; - height: 110px; - min-width: 110px; - margin: 0 auto; - flex-direction: column; - align-items: center; - text-align: center; - padding: var(--space-4x); + padding: var(--space-6x); gap: var(--space-3x); - background: #ffffff; + width: 100%; + background: var(--white); border: 1px solid var(--gray-200); border-radius: var(--space-1x); - justify-content: center; - cursor: pointer; /* Optimize rendering performance */ contain: layout style paint; will-change: background-color; @@ -27,14 +19,24 @@ .token-card__container object img { width: var(--space-10x); height: var(--space-10x); + margin-top: auto; + margin-bottom: auto; border-radius: 50%; } .token-card__container h3 { font-size: var(--space-4x); - font-weight: 500; + font-weight: var(--font-weight-medium); + line-height: var(--space-6x); color: var(--gray-950); + margin-bottom: var(--space-1x); +} + +.token-card__container p { margin-bottom: 0; + font-size: var(--space-3x); + line-height: var(--space-5x); + color: var(--gray-500); } .truncate { @@ -49,3 +51,58 @@ height: 124px; } } + +/* Square variant styles */ +.token-card__square-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: var(--space-6x); + width: 100%; + background: var(--white); + border: 1px solid var(--gray-200); + border-radius: var(--space-1x); + text-align: center; +} + +.token-card__square-container:hover { + background-color: var(--gray-50); +} + +.token-card__square-logo { + display: flex; + align-items: center; + justify-content: center; + margin-bottom: var(--space-4x); +} + +.token-card__square-logo object, +.token-card__square-logo object img { + width: var(--space-16x); + height: var(--space-16x); + border-radius: 50%; +} + +.token-card__square-content { + display: flex; + flex-direction: column; + align-items: center; +} + +.token-card__square-content h3 { + font-size: var(--space-4x); + font-weight: var(--font-weight-medium); + line-height: var(--space-6x); + color: var(--gray-950); + margin-bottom: var(--space-1x); + text-align: center; +} + +.token-card__square-content p { + margin-bottom: 0; + font-size: var(--space-3x); + line-height: var(--space-5x); + color: var(--gray-500); + text-align: center; +} diff --git a/src/components/CCIP/Cards/TokenCard.tsx b/src/components/CCIP/Cards/TokenCard.tsx index 653908ec260..51372209112 100644 --- a/src/components/CCIP/Cards/TokenCard.tsx +++ b/src/components/CCIP/Cards/TokenCard.tsx @@ -1,5 +1,6 @@ import { memo } from "react" import { fallbackTokenIconUrl } from "~/features/utils/index.ts" +import Card from "./Card.tsx" import "./TokenCard.css" interface TokenCardProps { @@ -7,42 +8,71 @@ interface TokenCardProps { logo?: string link?: string onClick?: () => void + totalNetworks?: number + variant?: "default" | "square" } -const TokenCard = memo(function TokenCard({ id, logo, link, onClick }: TokenCardProps) { - if (link) { - return ( - -
- {/* We cannot use the normal Image/onError syntax as a fallback as the element is server rendered - and the onerror does not seem to work correctly. Using Picture will also not work. */} - - {`${id} - +const TokenCard = memo(function TokenCard({ + id, + logo, + link, + onClick, + totalNetworks, + variant = "default", +}: TokenCardProps) { + const logoElement = ( + + {`${id} + + ) + + const subtitle = + totalNetworks !== undefined ? `${totalNetworks} ${totalNetworks === 1 ? "network" : "networks"}` : undefined + + if (variant === "square") { + const content = ( + <> +
{logoElement}
+

{id}

+ {subtitle &&

{subtitle}

}
-
+ ) - } - if (onClick) { - return ( - - ) + if (link) { + return ( + +
{content}
+
+ ) + } + + if (onClick) { + return ( + + ) + } + + return
{content}
} return ( -
- - - -

{id}

-
+ ) }) diff --git a/src/components/CCIP/Chain/Chain.astro b/src/components/CCIP/Chain/Chain.astro index fd726a209a2..484387ac050 100644 --- a/src/components/CCIP/Chain/Chain.astro +++ b/src/components/CCIP/Chain/Chain.astro @@ -6,6 +6,7 @@ import { Network, getAllNetworkLanes, getAllNetworks, + getAllUniqueVerifiers, getSearchLanes, getTokensOfChain, Version, @@ -17,6 +18,7 @@ import ChainTokenGrid from "./ChainTokenGrid" import { generateChainStructuredData } from "~/utils/ccipStructuredData" import StructuredData from "~/components/StructuredData.astro" import { DOCS_BASE_URL } from "~/utils/structuredData" +import AddButton from "~/components/CCIP/AddButton/AddButton.astro" interface Props { environment: Environment @@ -48,6 +50,11 @@ const lanes = await getAllNetworkLanes({ const searchLanes = getSearchLanes({ environment }) +const allVerifiers = getAllUniqueVerifiers({ + environment, + version: Version.V1_2_0, +}) + // Generate dynamic metadata for this specific chain const environmentText = environment === Environment.Mainnet ? "Mainnet" : "Testnet" const logoPath = network.logo || "" @@ -106,6 +113,7 @@ const chainStructuredData = generateChainStructuredData( network={network} environment={environment} lanes={searchLanes} + verifiers={allVerifiers} client:load />
@@ -127,15 +135,12 @@ const chainStructuredData = generateChainStructuredData(

Tokens ({allTokens.length})

{ - network.chainType !== "solana" && network.chainType !== "aptos" && ( - - Add - Add my token - + network.chainType !== "solana" && network.chainType !== "aptos" && network.chainType !== "ton" && ( + ) }
@@ -180,6 +185,14 @@ const chainStructuredData = generateChainStructuredData( grid-template-columns: 1fr; gap: var(--space-2x); } + :global(.chain-add-button) { + border-color: var(--blue-600) !important; + color: var(--blue-600) !important; + } + + :global(.chain-add-button:hover) { + background-color: var(--blue-100) !important; + } @media (min-width: 50em) { .layout { @@ -193,8 +206,12 @@ const chainStructuredData = generateChainStructuredData( display: grid; --doc-padding: var(--space-10x); padding: var(--doc-padding) var(--space-8x); - grid-template-columns: 1fr 1fr; - gap: var(--space-24x); + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + gap: var(--space-8x); + } + + .layout > div { + min-width: 0; } .networks__grid { diff --git a/src/components/CCIP/Chain/ChainTokenGrid.css b/src/components/CCIP/Chain/ChainTokenGrid.css index 9f61a1e8472..aa0bcdbcc86 100644 --- a/src/components/CCIP/Chain/ChainTokenGrid.css +++ b/src/components/CCIP/Chain/ChainTokenGrid.css @@ -6,7 +6,6 @@ @media (min-width: 992px) { .tokens__grid { - min-height: 420px; grid-template-columns: 1fr 1fr 1fr 1fr; gap: var(--space-4x); } diff --git a/src/components/CCIP/Chain/ChainTokenGrid.tsx b/src/components/CCIP/Chain/ChainTokenGrid.tsx index ad2502efcff..5ff684f3fef 100644 --- a/src/components/CCIP/Chain/ChainTokenGrid.tsx +++ b/src/components/CCIP/Chain/ChainTokenGrid.tsx @@ -1,7 +1,7 @@ import { Environment, Version, Network } from "~/config/data/ccip/types.ts" import { getAllTokenLanes, getTokenData } from "~/config/data/ccip/data.ts" import TokenCard from "../Cards/TokenCard.tsx" -import { drawerContentStore } from "../Drawer/drawerStore.ts" +import { drawerContentStore, DrawerWidth, drawerWidthStore } from "../Drawer/drawerStore.ts" import TokenDrawer from "../Drawer/TokenDrawer.tsx" import { directoryToSupportedChain, getChainIcon, getChainTypeAndFamily, getTitle } from "~/features/utils/index.ts" import { useState } from "react" @@ -36,6 +36,7 @@ function ChainTokenGrid({ tokens, network, environment }: ChainTokenGridProps) { id={token.id} logo={token.logo} key={token.id} + variant="square" onClick={() => { const selectedNetwork = Object.keys(data) .map((key) => { @@ -53,8 +54,10 @@ function ChainTokenGrid({ tokens, network, environment }: ChainTokenGridProps) { tokenSymbol: data[key].symbol, tokenDecimals: data[key].decimals, tokenAddress: data[key].tokenAddress, - tokenPoolType: data[key].poolType, - tokenPoolAddress: data[key].poolAddress || "", + tokenPoolType: data[key].pool?.type ?? "burnMint", + tokenPoolRawType: data[key].pool?.rawType ?? "", + tokenPoolAddress: data[key].pool?.address ?? "", + tokenPoolVersion: data[key].pool?.version ?? "", explorer: network.explorer, chainType, } @@ -67,6 +70,7 @@ function ChainTokenGrid({ tokens, network, environment }: ChainTokenGridProps) { version: Version.V1_2_0, token: token.id, })[selectedNetwork.key] + drawerWidthStore.set(DrawerWidth.Wide) drawerContentStore.set(() => ( } -function ChainHero({ chains, tokens, network, token, environment, lanes }: ChainHeroProps) { +function ChainHero({ + chains, + tokens, + network, + token, + environment, + lanes, + verifiers = [], + breadcrumbItems, +}: ChainHeroProps) { // Get chain-specific tooltip configuration const chainTooltipConfig = network?.chain ? getChainTooltip(network.chain) : null @@ -99,21 +119,30 @@ function ChainHero({ chains, tokens, network, token, environment, lanes }: Chain
- +
@@ -137,7 +166,9 @@ function ChainHero({ chains, tokens, network, token, environment, lanes }: Chain }} > {network?.name || token?.id} - {token?.name} + + {token?.id === "USDC" ? "USD Coin" : token?.name} + {chainTooltipConfig && ( ( - <> +
{label} {tooltip}
{children}
- +
) function LaneDetailsHero({ @@ -83,20 +84,14 @@ function LaneDetailsHero({ destinationNetwork, onRamp, offRamp, + sourceAddress, destinationAddress, - enforceOutOfOrder, explorer, inOutbound, + inDrawer = false, }: LaneDetailsHeroProps) { - // Map boolean values to display strings - const getOutOfOrderText = (value?: boolean) => { - if (value === true) return "Required" - if (value === false) return "Optional" - return "N/A" - } - return ( -
+
{/* Display networks with direction based on lane type */}
{inOutbound === LaneFilter.Inbound ? ( @@ -115,16 +110,7 @@ function LaneDetailsHero({
- {/* Display address information based on lane type */} - {inOutbound === LaneFilter.Inbound ? ( - - - - ) : ( + {onRamp && ( )} - - {destinationAddress ? : "n/a"}{" "} - + {offRamp && ( + + + + )} + + {sourceAddress && ( + } + > + + + )} - {inOutbound === LaneFilter.Outbound && ( + {destinationAddress && ( - } + label="Destination chain selector" + clipboardType="destination-chain-selector" + tooltip={} > - {getOutOfOrderText(enforceOutOfOrder)} + )}
diff --git a/src/components/CCIP/ChainHero/TokenDetailsHero.tsx b/src/components/CCIP/ChainHero/TokenDetailsHero.tsx index 94ce250d01f..1f3bb45bfbf 100644 --- a/src/components/CCIP/ChainHero/TokenDetailsHero.tsx +++ b/src/components/CCIP/ChainHero/TokenDetailsHero.tsx @@ -1,9 +1,8 @@ import Address from "~/components/AddressReact.tsx" import { getExplorerAddressUrl, fallbackTokenIconUrl } from "~/features/utils/index.ts" -import { PoolType } from "~/config/data/ccip/types.ts" -import { tokenPoolDisplay } from "~/config/data/ccip/utils.ts" import "./ChainHero.css" import { ExplorerInfo, ChainType } from "~/config/types.ts" +import { getNetworkIconUrl } from "~/config/data/ccip/data.ts" interface TokenDetailsHeroProps { network: { @@ -19,18 +18,19 @@ interface TokenDetailsHeroProps { logo: string decimals: number address: string - poolType: PoolType + poolRawType: string poolAddress: string } + inDrawer?: boolean } -function TokenDetailsHero({ network, token }: TokenDetailsHeroProps) { +function TokenDetailsHero({ network, token, inDrawer = false }: TokenDetailsHeroProps) { return ( -
+
- +
Token pool type
-
{tokenPoolDisplay(token.poolType)}
+
{token.poolRawType ?? "—"}
Token pool address
diff --git a/src/components/CCIP/Drawer/Drawer.css b/src/components/CCIP/Drawer/Drawer.css index f42721fad1d..0b8d48a4d6a 100644 --- a/src/components/CCIP/Drawer/Drawer.css +++ b/src/components/CCIP/Drawer/Drawer.css @@ -52,6 +52,11 @@ width: 75%; } + /* Wide drawer for lane details - full width minus ESC button width and spacing */ + .drawer__container--wide { + width: calc(100% - var(--space-12x) - var(--space-8x)); + } + .drawer__closeMobile { display: none; } diff --git a/src/components/CCIP/Drawer/Drawer.tsx b/src/components/CCIP/Drawer/Drawer.tsx index 9120bb98b0f..7846947b9dc 100644 --- a/src/components/CCIP/Drawer/Drawer.tsx +++ b/src/components/CCIP/Drawer/Drawer.tsx @@ -1,6 +1,6 @@ import { useStore } from "@nanostores/react" import "./Drawer.css" -import { drawerContentStore } from "./drawerStore.ts" +import { drawerContentStore, drawerWidthStore, DrawerWidth } from "./drawerStore.ts" import { useRef, useEffect, useState } from "react" import { clsx } from "~/lib/clsx/clsx.ts" import type { ReactNode } from "react" @@ -9,6 +9,7 @@ function Drawer() { const drawerRef = useRef(null) const drawerContentRef = useRef(null) const $drawerContent = useStore(drawerContentStore) as (() => ReactNode) | ReactNode | null + const $drawerWidth = useStore(drawerWidthStore) const [isOpened, setIsOpened] = useState(false) // exit when press esc @@ -47,6 +48,7 @@ function Drawer() { // Use transitionend event instead of setTimeout for better performance const handleTransitionEnd = () => { drawerContentStore.set(null) + drawerWidthStore.set(DrawerWidth.Default) drawerRef.current?.removeEventListener("transitionend", handleTransitionEnd) } @@ -62,7 +64,12 @@ function Drawer() { ref={drawerRef} onClick={handleClickOutside} > -
+
@@ -551,7 +551,7 @@ export const NetworkDropdown = ({ userAddress }: Props) => {
diff --git a/src/features/ccip/components/billing/TokenCalculator.tsx b/src/features/ccip/components/billing/TokenCalculator.tsx index 29e3eb4ed9b..5c43622ccb8 100644 --- a/src/features/ccip/components/billing/TokenCalculator.tsx +++ b/src/features/ccip/components/billing/TokenCalculator.tsx @@ -58,6 +58,7 @@ const fetchData = (endpoint: string, fetchParams: Partial = {}): Fe version, }) + if (!mechanism) return { fees: { token, mechanism: undefined, fee: undefined } } const networkFee = calculateNetworkFeesForTokenMechanism(mechanism, sourceBlockchain, destinationBlockchain) return { fees: { token, mechanism, fee: networkFee } } diff --git a/src/features/chainlink-automation/common/ChainlinkAutomation.astro b/src/features/chainlink-automation/common/ChainlinkAutomation.astro index bea2da769b8..bf4bc6b154b 100644 --- a/src/features/chainlink-automation/common/ChainlinkAutomation.astro +++ b/src/features/chainlink-automation/common/ChainlinkAutomation.astro @@ -2,10 +2,11 @@ import StreamsLookupInterfaceComponent from "./StreamsLookupInterface.mdx" import ILogAutomationComponent from "./iLogAutomation.mdx" import DeprecationCalloutComponent from "./deprecation.mdx" +import CreCalloutComponent from "./cre-callout.mdx" export type Props = { section?: "ilogautomation" | "streamslookup" - callout?: "deprecation" + callout?: "deprecation" | "cre" } const { section, callout } = Astro.props as Props --- @@ -15,3 +16,5 @@ const { section, callout } = Astro.props as Props {section === "streamslookup" && } {callout === "deprecation" && } + +{callout === "cre" && } diff --git a/src/features/chainlink-automation/common/cre-callout.mdx b/src/features/chainlink-automation/common/cre-callout.mdx new file mode 100644 index 00000000000..63c3f2219d3 --- /dev/null +++ b/src/features/chainlink-automation/common/cre-callout.mdx @@ -0,0 +1,7 @@ +import { Aside } from "@components" + + diff --git a/src/features/chainlink-automation/components/NetworkIcons.tsx b/src/features/chainlink-automation/components/NetworkIcons.tsx index e8ba7419b95..52b60afa43c 100644 --- a/src/features/chainlink-automation/components/NetworkIcons.tsx +++ b/src/features/chainlink-automation/components/NetworkIcons.tsx @@ -1,6 +1,7 @@ /** @jsxImportSource preact */ import { useEffect } from "preact/compat" import { normalizeTechnologyName } from "@features/utils/index.ts" +import { getNetworkIconUrl } from "~/config/data/ccip/data.ts" // Component to add icons to network headings in the Automation supported-networks page export default function NetworkIcons() { @@ -42,13 +43,13 @@ export default function NetworkIcons() { // Get the normalized technology name for icon path const normalizedTech = normalizeTechnologyName(technology) - const iconPath = `/assets/chains/${normalizedTech}.svg` + const iconPath = getNetworkIconUrl(normalizedTech) console.log(`Adding icon for ${technology}, normalized to ${normalizedTech}, path: ${iconPath}`) // Create the icon element const icon = document.createElement("img") - icon.src = iconPath + icon.src = iconPath || "" icon.alt = `${technology} icon` icon.style.width = "24px" icon.style.height = "24px" diff --git a/src/features/chainlink-functions/common/ChainlinkFunctions.astro b/src/features/chainlink-functions/common/ChainlinkFunctions.astro index 89dc99c65d7..afd02141344 100644 --- a/src/features/chainlink-functions/common/ChainlinkFunctions.astro +++ b/src/features/chainlink-functions/common/ChainlinkFunctions.astro @@ -5,6 +5,7 @@ import CustomAutomatedFunctionsConsumerComponent from "./CustomAutomatedFunction import GuidesPrerequisitesComponent from "./GuidesPrerequisites.mdx" import GuidesWithAutomationPrerequisitesComponent from "./GuidesWithAutomationPrerequisites.mdx" import DenoImportNotesComponent from "./DenoImportNotes.mdx" +import CreCalloutComponent from "./cre-callout.mdx" export type Props = { section?: @@ -14,8 +15,9 @@ export type Props = { | "prerequisites-guides" | "prerequisites-guides-with-automation" | "deno-importe-notes" + callout?: "cre" } -const { section } = Astro.props as Props +const { section, callout } = Astro.props as Props --- {section === "functions-consumer" && } @@ -29,3 +31,5 @@ const { section } = Astro.props as Props {section === "prerequisites-guides-with-automation" && } {section === "deno-importe-notes" && } + +{callout === "cre" && } diff --git a/src/features/chainlink-functions/common/cre-callout.mdx b/src/features/chainlink-functions/common/cre-callout.mdx new file mode 100644 index 00000000000..3d34ef39ee5 --- /dev/null +++ b/src/features/chainlink-functions/common/cre-callout.mdx @@ -0,0 +1,7 @@ +import { Aside } from "@components" + + diff --git a/src/features/chainlink-functions/components/NetworkIcons.tsx b/src/features/chainlink-functions/components/NetworkIcons.tsx index 3942514c5f4..03184e362ae 100644 --- a/src/features/chainlink-functions/components/NetworkIcons.tsx +++ b/src/features/chainlink-functions/components/NetworkIcons.tsx @@ -1,6 +1,7 @@ /** @jsxImportSource preact */ import { useEffect } from "preact/compat" import { normalizeTechnologyName } from "@features/utils/index.ts" +import { getNetworkIconUrl } from "~/config/data/ccip/data.ts" // List of valid network names that should have icons const VALID_NETWORKS = ["Arbitrum", "Avalanche", "BASE", "Celo", "Ethereum", "OP", "Polygon", "Soneium", "ZKSync"] @@ -30,11 +31,11 @@ export default function NetworkIcons() { // Get the normalized technology name for the icon path const normalizedTech = normalizeTechnologyName(technology) - const iconPath = `/assets/chains/${normalizedTech}.svg` + const iconPath = getNetworkIconUrl(normalizedTech) // Create the icon element const icon = document.createElement("img") - icon.src = iconPath + icon.src = iconPath || "" icon.alt = `${technology} icon` icon.style.width = "24px" icon.style.height = "24px" diff --git a/src/features/common/Tooltip/SimplePreactTooltip.tsx b/src/features/common/Tooltip/SimplePreactTooltip.tsx index 1c7c5993d07..0dc630d6524 100644 --- a/src/features/common/Tooltip/SimplePreactTooltip.tsx +++ b/src/features/common/Tooltip/SimplePreactTooltip.tsx @@ -4,7 +4,7 @@ import { useState } from "preact/hooks" export const SimplePreactTooltip = ({ label, tip, - imgURL = "https://smartcontract.imgix.net/icons/info.svg?auto=compress%2Cformat", + imgURL = "https://d2f70xi62kby8n.cloudfront.net/icons/info.svg?auto=compress%2Cformat", labelStyle = {}, tooltipStyle = {}, }) => { diff --git a/src/features/common/Tooltip/Tooltip.tsx b/src/features/common/Tooltip/Tooltip.tsx index e7dd9eb3ba8..37a2c2ca398 100644 --- a/src/features/common/Tooltip/Tooltip.tsx +++ b/src/features/common/Tooltip/Tooltip.tsx @@ -45,7 +45,7 @@ interface TooltipProps { /** * URL for the tooltip icon. Defaults to Chainlink's info icon. - * @default "https://smartcontract.imgix.net/icons/info.svg?auto=compress%2Cformat" + * @default "https://d2f70xi62kby8n.cloudfront.net/icons/info.svg?auto=compress%2Cformat" */ imgURL?: string @@ -138,7 +138,7 @@ interface TooltipProps { export const Tooltip = ({ label, tip, - imgURL = "https://smartcontract.imgix.net/icons/info.svg?auto=compress%2Cformat", + imgURL = "https://d2f70xi62kby8n.cloudfront.net/icons/info.svg?auto=compress%2Cformat", style = {}, labelStyle = {}, position = "top", diff --git a/src/features/data-streams/common/MarketEventsTabs.astro b/src/features/data-streams/common/MarketEventsTabs.astro new file mode 100644 index 00000000000..25fa87baa76 --- /dev/null +++ b/src/features/data-streams/common/MarketEventsTabs.astro @@ -0,0 +1,20 @@ +--- +import { PageTabs } from "@components" + +const marketEventsPages = [ + { + name: "Standard (v8)", + url: "/data-streams/rwa-streams/handling-market-events", + }, + { + name: "Advanced (v11)", + url: "/data-streams/rwa-streams/handling-market-events-v11", + }, +] +--- + + diff --git a/src/features/data-streams/common/ReportSchemaTabs.astro b/src/features/data-streams/common/ReportSchemaTabs.astro index 60d2d5349fe..d3b6101ffe7 100644 --- a/src/features/data-streams/common/ReportSchemaTabs.astro +++ b/src/features/data-streams/common/ReportSchemaTabs.astro @@ -31,7 +31,7 @@ const allReportSchemaPages = [ url: "/data-streams/reference/report-schema-v11", }, { - name: "NAV (v9)", + name: "SmartData (v9)", url: "/data-streams/reference/report-schema-v9", }, { diff --git a/src/features/data-streams/common/dsNotes.mdx b/src/features/data-streams/common/dsNotes.mdx index 4e076a0b994..c336255f801 100644 --- a/src/features/data-streams/common/dsNotes.mdx +++ b/src/features/data-streams/common/dsNotes.mdx @@ -1,6 +1,6 @@ import { Aside } from "@components" diff --git a/src/features/data/api/backend.ts b/src/features/data/api/backend.ts index fb3dc24aa13..14ffc98fc0d 100644 --- a/src/features/data/api/backend.ts +++ b/src/features/data/api/backend.ts @@ -2,15 +2,18 @@ import EleventyFetch from "@11ty/eleventy-fetch" import { ChainMetadata, mergeWithMVRFeeds } from "./index.ts" import { Chain, POR_MVR_FEEDS_URL } from "../chains.ts" -export const getServerSideChainMetadata = async (chains: Chain[]): Promise> => { +export const getServerSideChainMetadata = async ( + chains: Chain[], + skipCache = false +): Promise> => { const cache = {} for (const chain of chains) { const requests = chain.networks.map((nw) => nw?.rddUrl ? EleventyFetch(nw?.rddUrl, { - duration: "1d", // save for 1 day - type: "json", // we'll parse JSON for you + duration: skipCache ? "0s" : "1d", + type: "json", }).then((metadata) => ({ ...nw, metadata: metadata.filter( @@ -26,7 +29,7 @@ export const getServerSideChainMetadata = async (chains: Chain[]): Promise hr { .filterDropdown_searchInput { height: 42px; border: var(--border-width-primary) solid var(--color-border-primary); - background-image: url(https://smartcontract.imgix.net/icons/searchIcon_blue_noborder.svg?auto=compress%2Cformat); + background-image: url(https://d2f70xi62kby8n.cloudfront.net/icons/searchIcon_blue_noborder.svg?auto=compress%2Cformat); background-repeat: no-repeat; background-position: left var(--space-2x) top 50%; padding-left: var(--space-8x); @@ -139,7 +139,7 @@ div.shutDate > hr { padding: var(--space-3x) var(--space-6x) var(--space-3x) var(--space-4x); border: var(--border-width-primary) solid var(--color-border-primary); border-radius: var(--border-radius-primary); - background-image: url(https://smartcontract.imgix.net/icons/Caret.svg?auto=compress%2Cformat); + background-image: url(https://d2f70xi62kby8n.cloudfront.net/icons/Caret.svg?auto=compress%2Cformat); background-repeat: no-repeat; background-position: right var(--space-2x) top 50%; list-style: none; diff --git a/src/features/feeds/components/FeedList.tsx b/src/features/feeds/components/FeedList.tsx index f3071e16b08..e5f87de7769 100644 --- a/src/features/feeds/components/FeedList.tsx +++ b/src/features/feeds/components/FeedList.tsx @@ -1,6 +1,6 @@ /** @jsxImportSource preact */ import { useEffect, useState, useRef, useMemo } from "preact/hooks" -import { MainnetTable, TestnetTable, StreamsNetworkAddressesTable } from "./Tables.tsx" +import { MainnetTable, TestnetTable, StreamsNetworkAddressesTable, StreamsTHead, StreamsTr } from "./Tables.tsx" import feedList from "./FeedList.module.css" import tableStyles from "./Tables.module.css" import { clsx } from "~/lib/clsx/clsx.ts" @@ -13,14 +13,16 @@ import { getFeedCategories } from "../../../db/feedCategories.js" import SectionWrapper from "~/components/SectionWrapper/SectionWrapper.tsx" import button from "@chainlink/design-system/button.module.css" import { updateTableOfContents } from "~/components/TableOfContents/tocStore.ts" -import alertIcon from "../../../components/Alert/Assets/alert-icon.svg" import { ChainSelector } from "~/components/ChainSelector/ChainSelector.tsx" +import { isFeedVisible } from "../utils/feedVisibility.ts" +import { updateUrlClean, clearFilters } from "./urlStateHelpers.ts" export type DataFeedType = | "default" | "smartdata" | "rates" | "usGovernmentMacroeconomicData" + | "tokenizedEquity" | "streamsCrypto" | "streamsRwa" | "streamsNav" @@ -29,6 +31,7 @@ export type DataFeedType = type SchemaFilterValue = "all" | "v8" | "v11" type StreamsRwaFeedTypeValue = "all" | "datalink" | "equities" | "forex" +type TradingHoursFilterValue = "all" | "regular" | "extended" | "overnight" type FilterOption = { label: string @@ -59,10 +62,19 @@ const feedTypeFilterOptions: FilterOption[] = [ { label: "Forex Streams", value: "forex" }, ] +const tradingHoursFilterOptions: FilterOption[] = [ + { label: "All Time Segments", value: "all" }, + { label: "Regular Hours", value: "regular" }, + { label: "Extended Hours", value: "extended" }, + { label: "Overnight Hours", value: "overnight" }, +] + const isSchemaFilterValue = (value: unknown): value is SchemaFilterValue => value === "all" || value === "v8" || value === "v11" const isStreamsRwaFeedTypeValue = (value: unknown): value is StreamsRwaFeedTypeValue => value === "all" || value === "datalink" || value === "equities" || value === "forex" +const isTradingHoursFilterValue = (value: unknown): value is TradingHoursFilterValue => + value === "all" || value === "regular" || value === "extended" || value === "overnight" const FilterDropdown = ({ label, @@ -122,6 +134,8 @@ export const FeedList = ({ initialCache, allowNetworkTableExpansion = false, defaultNetworkTableExpanded = false, + force24x5Only = false, + tokenizedEquityProvider, }: { initialNetwork: string dataFeedType: DataFeedType @@ -129,6 +143,8 @@ export const FeedList = ({ initialCache?: Record allowNetworkTableExpansion?: boolean defaultNetworkTableExpanded?: boolean + force24x5Only?: boolean + tokenizedEquityProvider?: string }) => { const chains = ecosystem === "deprecating" ? ALL_CHAINS : CHAINS const isStreams = @@ -259,10 +275,16 @@ export const FeedList = ({ }, []) // Regular query string states - const [searchValue, setSearchValue] = useQueryString("search", "") - const [testnetSearchValue, setTestnetSearchValue] = useQueryString("testnetSearch", "") - const [selectedFeedCategories, setSelectedFeedCategories] = useQueryString("categories", []) - const [currentPage, setCurrentPage] = useQueryString("page", "1") + const [searchValue, setSearchValue] = useQueryString("search") + const [testnetSearchValue, setTestnetSearchValue] = useQueryString("testnetSearch") + const [selectedFeedCategoriesRaw, setSelectedFeedCategories] = useQueryString("categories") + // Ensure categories is always an array + const selectedFeedCategories = Array.isArray(selectedFeedCategoriesRaw) + ? selectedFeedCategoriesRaw + : selectedFeedCategoriesRaw + ? [selectedFeedCategoriesRaw] + : [] + const [currentPage, setCurrentPage] = useQueryString("page") // Initialize all other states const [showCategoriesDropdown, setShowCategoriesDropdown] = useState(false) @@ -282,12 +304,43 @@ export const FeedList = ({ const setTestnetStreamCategoryFilter = (next: StreamsRwaFeedTypeValue) => { setTestnetStreamCategoryFilterParam(next === "all" ? [] : next) } - const [showExtraDetails, setShowExtraDetails] = useState(false) + + // Checkbox states backed by URL params + const [showDetailsParam, setShowDetailsParam] = useQueryString("showDetails") + const showExtraDetails = showDetailsParam === "true" + const setShowExtraDetails = (value: boolean) => { + setShowDetailsParam(value ? "true" : "") + updateUrlClean({ showDetails: value || undefined }) + } + + const [showSvrParam, setShowSvrParam] = useQueryString("showSvr") + const showOnlySVR = showSvrParam === "true" + const setShowOnlySVR = (value: boolean) => { + setShowSvrParam(value ? "true" : "") + updateUrlClean({ showSvr: value || undefined }) + if (value) paginate(1) + } + + // MVR and DEX filters are not in URL (too specialized) const [showOnlyMVRFeeds, setShowOnlyMVRFeeds] = useState(false) const [showOnlyMVRFeedsTestnet, setShowOnlyMVRFeedsTestnet] = useState(false) - const [showOnlySVR, setShowOnlySVR] = useState(false) const [showOnlyDEXFeeds, setShowOnlyDEXFeeds] = useState(false) const [showOnlyDEXFeedsTestnet, setShowOnlyDEXFeedsTestnet] = useState(false) + const [show24x5FeedsParam, setShow24x5FeedsParam] = useQueryString("show24x5") + const show24x5Feeds = force24x5Only || show24x5FeedsParam === "true" + const setShow24x5Feeds = (value: boolean) => { + if (!force24x5Only) { + setShow24x5FeedsParam(value ? "true" : []) + } + } + const [tradingHoursFilterParam, setTradingHoursFilterParam] = useQueryString("tradingHours") + const tradingHoursFilter = + typeof tradingHoursFilterParam === "string" && isTradingHoursFilterValue(tradingHoursFilterParam) + ? tradingHoursFilterParam + : "all" + const setTradingHoursFilter = (next: TradingHoursFilterValue) => { + setTradingHoursFilterParam(next === "all" ? [] : next) + } const [rwaSchemaFilterParam, setRwaSchemaFilterParam] = useQueryString("schema") const rwaSchemaFilter = typeof rwaSchemaFilterParam === "string" && isSchemaFilterValue(rwaSchemaFilterParam) ? rwaSchemaFilterParam : "all" @@ -302,6 +355,21 @@ export const FeedList = ({ const setTestnetRwaSchemaFilter = (next: SchemaFilterValue) => { setTestnetRwaSchemaFilterParam(next === "all" ? [] : next) } + const [show24x5FeedsTestnetParam, setShow24x5FeedsTestnetParam] = useQueryString("testnetShow24x5") + const show24x5FeedsTestnet = force24x5Only || show24x5FeedsTestnetParam === "true" + const setShow24x5FeedsTestnet = (value: boolean) => { + if (!force24x5Only) { + setShow24x5FeedsTestnetParam(value ? "true" : []) + } + } + const [testnetTradingHoursFilterParam, setTestnetTradingHoursFilterParam] = useQueryString("testnetTradingHours") + const testnetTradingHoursFilter = + typeof testnetTradingHoursFilterParam === "string" && isTradingHoursFilterValue(testnetTradingHoursFilterParam) + ? testnetTradingHoursFilterParam + : "all" + const setTestnetTradingHoursFilter = (next: TradingHoursFilterValue) => { + setTestnetTradingHoursFilterParam(next === "all" ? [] : next) + } const [openDropdownId, setOpenDropdownId] = useState(null) const handleDropdownToggle = (dropdownId: string, isOpen: boolean) => { setOpenDropdownId((current) => { @@ -312,17 +380,26 @@ export const FeedList = ({ }) } const closeAllDropdowns = () => setOpenDropdownId(null) - const paginate = (pageNumber) => setCurrentPage(String(pageNumber)) - // Disable pagination for deprecating feeds by using a very high page size - const addrPerPage = ecosystem === "deprecating" ? 10000 : 8 - const lastAddr = Number(currentPage) * addrPerPage + const paginate = (pageNumber) => { + const pageStr = String(pageNumber) + setCurrentPage(pageStr) + updateUrlClean({ page: pageNumber === 1 ? undefined : pageNumber }) + } + const addrPerPage = ecosystem === "deprecating" && isStreams ? 10 : ecosystem === "deprecating" ? 10000 : 8 + const currentPageNum = Number(currentPage) || 1 + const lastAddr = currentPageNum * addrPerPage const firstAddr = lastAddr - addrPerPage // Pagination for testnet table - const [testnetCurrentPage, setTestnetCurrentPage] = useQueryString("testnetPage", "1") - const testnetPaginate = (pageNumber) => setTestnetCurrentPage(String(pageNumber)) - const testnetAddrPerPage = ecosystem === "deprecating" ? 10000 : 8 - const testnetLastAddr = Number(testnetCurrentPage) * testnetAddrPerPage + const [testnetCurrentPage, setTestnetCurrentPage] = useQueryString("testnetPage") + const testnetPaginate = (pageNumber) => { + const pageStr = String(pageNumber) + setTestnetCurrentPage(pageStr) + updateUrlClean({ testnetPage: pageNumber === 1 ? undefined : pageNumber }) + } + const testnetAddrPerPage = ecosystem === "deprecating" && isStreams ? 10 : ecosystem === "deprecating" ? 10000 : 8 + const testnetPageNum = Number(testnetCurrentPage) || 1 + const testnetLastAddr = testnetPageNum * testnetAddrPerPage const testnetFirstAddr = testnetLastAddr - testnetAddrPerPage // Dynamic feed categories loaded from Supabase @@ -330,6 +407,7 @@ export const FeedList = ({ { key: "low", name: "Low Market Risk" }, { key: "medium", name: "Medium Market Risk" }, { key: "high", name: "High Market Risk" }, + { key: "veryhigh", name: "Very High Market Risk" }, { key: "custom", name: "Custom" }, { key: "new", name: "New Token" }, { key: "deprecating", name: "Deprecating" }, @@ -355,7 +433,20 @@ export const FeedList = ({ const [streamsChain] = useState(initialNetwork) const activeChain = isStreams ? streamsChain : currentNetwork - // Find the selected chain from available chains + // Filter chains by dataFeedType tag to get only chains that support this feed type + const filteredChainsByTag = useMemo(() => { + return chains.filter((chain) => { + if (dataFeedType.includes("streams")) return chain.tags?.includes("streams") ?? false + if (dataFeedType === "smartdata") return chain.tags?.includes("smartData") ?? false + if (dataFeedType === "rates") return chain.tags?.includes("rates") ?? false + if (dataFeedType === "usGovernmentMacroeconomicData") + return chain.tags?.includes("usGovernmentMacroeconomicData") ?? false + if (dataFeedType === "tokenizedEquity") return chain.tags?.includes("tokenizedEquity") ?? false + return chain.tags?.includes("default") ?? false + }) + }, [chains, dataFeedType]) + + // Find the selected chain from available chains (filtered by dataFeedType) const selectedChain = useMemo(() => { // During SSR, try to find the chain from URL param if activeChain is not available if (!activeChain) { @@ -364,21 +455,21 @@ export const FeedList = ({ const urlParams = new URLSearchParams(window.location.search) const networkParam = urlParams.get("network") if (networkParam) { - const foundFromUrl = chains.find((c) => c.page === networkParam) + const foundFromUrl = filteredChainsByTag.find((c) => c.page === networkParam) if (foundFromUrl) { return foundFromUrl } } } - return chains[0] // fallback only if no activeChain + return filteredChainsByTag[0] || chains[0] // fallback to first filtered chain } - const foundChain = chains.find((c) => c.page === activeChain) + const foundChain = filteredChainsByTag.find((c) => c.page === activeChain) if (!foundChain) { - return chains[0] + return filteredChainsByTag[0] || chains[0] } return foundChain - }, [activeChain, chains]) + }, [activeChain, filteredChainsByTag, chains]) const chainMetadata = useGetChainMetadata(selectedChain, initialCache && initialCache[selectedChain.page]) const wrapperRef = useRef(null) @@ -500,56 +591,54 @@ export const FeedList = ({ function handleNetworkSelect(chain: Chain) { closeAllDropdowns() if (!isStreams) { - const params = new URLSearchParams(window.location.search) - params.set("network", chain.page) - // Clear hash when changing networks - const newUrl = window.location.pathname + "?" + params.toString() - window.history.replaceState({ path: newUrl }, "", newUrl) setCurrentNetwork(chain.page) + // Clear all filters and pagination when switching networks + setSearchValue("") + setTestnetSearchValue("") + setSelectedFeedCategories([]) + setCurrentPage("") + setTestnetCurrentPage("") + setShowOnlyMVRFeeds(false) + setShowOnlyMVRFeedsTestnet(false) + // Update URL with just the network (and networkType if not mainnet) + const params = new URLSearchParams(window.location.search) + const networkType = params.get("networkType") + updateUrlClean({ + network: chain.page, + networkType: networkType === "testnet" ? "testnet" : undefined, + search: undefined, + testnetSearch: undefined, + page: undefined, + testnetPage: undefined, + }) } - setSearchValue("") - setSelectedFeedCategories([]) - setCurrentPage("1") - setShowOnlyMVRFeeds(false) - setShowOnlyMVRFeedsTestnet(false) } // Network type change handler for testnet/mainnet switching function handleNetworkTypeChange(networkType: "mainnet" | "testnet") { closeAllDropdowns() - // Update the selected network type setSelectedNetworkType(networkType) - // Update URL parameters to reflect network type state - if (typeof window !== "undefined") { - const params = new URLSearchParams(window.location.search) - - if (networkType === "testnet") { - // Set networkType parameter to testnet - params.set("networkType", "testnet") - // Ensure testnetPage is set (default to 1 if not present) - if (!params.get("testnetPage")) { - params.set("testnetPage", "1") - } - } else { - // Remove testnet-specific parameters when switching to mainnet - params.delete("networkType") - params.delete("testnetSearch") - // Keep testnetPage for potential future navigation - } - - const newUrl = window.location.pathname + "?" + params.toString() - window.history.replaceState({ path: newUrl }, "", newUrl) - } - // Reset filters and pagination when switching network types setSearchValue("") setTestnetSearchValue("") setSelectedFeedCategories([]) - setCurrentPage("1") - setTestnetCurrentPage("1") + setCurrentPage("") + setTestnetCurrentPage("") setShowOnlyMVRFeeds(false) setShowOnlyMVRFeedsTestnet(false) + + // Update URL with clean params + const params = new URLSearchParams(window.location.search) + const network = params.get("network") + updateUrlClean({ + network: network || undefined, + networkType: networkType === "testnet" ? "testnet" : undefined, + search: undefined, + testnetSearch: undefined, + page: undefined, + testnetPage: undefined, + }) } const handleCategorySelection = (category) => { @@ -567,18 +656,14 @@ export const FeedList = ({ } useEffect(() => { + // Clean up empty search params if (searchValue === "") { - const searchParams = new URLSearchParams(window.location.search) - searchParams.delete("search") - const hashFragment = window.location.hash - const newUrl = window.location.pathname + "?" + searchParams.toString() + hashFragment - window.history.replaceState({ path: newUrl }, "", newUrl) - const inputElement = document.getElementById("search") as HTMLInputElement - if (inputElement) { - inputElement.placeholder = "Search" - } + updateUrlClean({ search: undefined }) } - }, [chainMetadata.processedData, searchValue]) + if (testnetSearchValue === "") { + updateUrlClean({ testnetSearch: undefined }) + } + }, [searchValue, testnetSearchValue]) const useOutsideAlerter = (ref: RefObject) => { useEffect(() => { @@ -606,24 +691,35 @@ export const FeedList = ({ const networkTypes = { mainnet: false, testnet: false } // Filter networks by feed type - const filteredNetworks = chainMetadata.processedData.networks.filter((network) => { - if (isDeprecating) { - let foundDeprecated = false - network.metadata?.forEach((feed: any) => { - if (feed.feedCategory === "deprecating") { - foundDeprecated = true - } - }) - return foundDeprecated - } + const filteredNetworks = chainMetadata.processedData.networks + .filter((network) => { + if (isDeprecating) { + let foundDeprecated = false + network.metadata?.forEach((feed: any) => { + if (feed.feedCategory === "deprecating") { + foundDeprecated = true + } + }) + // A deprecating network is relevant only if it still has at least one non-hidden deprecating feed + if (!foundDeprecated) return false + const hasVisible = network.metadata?.some( + (feed: any) => feed.feedCategory === "deprecating" && !feed.docs?.hidden + ) + return !!hasVisible + } - if (isStreams) return network.tags?.includes("streams") - if (isSmartData) return network.tags?.includes("smartData") - if (isRates) return network.tags?.includes("rates") - if (isUSGovernmentMacroeconomicData) return network.tags?.includes("usGovernmentMacroeconomicData") + if (isStreams) return network.tags?.includes("streams") + if (isSmartData) return network.tags?.includes("smartData") + if (isRates) return network.tags?.includes("rates") + if (isUSGovernmentMacroeconomicData) return network.tags?.includes("usGovernmentMacroeconomicData") - return true - }) + return true + }) + .filter((network) => { + // Ensure the network has at least one visible feed for the current dataFeedType + const feeds = network.metadata || [] + return feeds.some((feed: any) => isFeedVisible(feed, dataFeedType, ecosystem, { tokenizedEquityProvider })) + }) // Check available network types filteredNetworks.forEach((network) => { @@ -689,7 +785,7 @@ export const FeedList = ({ dataFeedType === "streamsCrypto" ? "Mainnet Crypto Streams" : dataFeedType === "streamsNav" - ? "Mainnet NAV Streams" + ? "Mainnet SmartData Streams" : dataFeedType === "streamsExRate" ? "Mainnet Exchange Rate Streams" : dataFeedType === "streamsBacked" @@ -699,7 +795,7 @@ export const FeedList = ({ dataFeedType === "streamsCrypto" ? "Testnet Crypto Streams" : dataFeedType === "streamsNav" - ? "Testnet NAV Streams" + ? "Testnet SmartData Streams" : dataFeedType === "streamsExRate" ? "Testnet Exchange Rate Streams" : dataFeedType === "streamsBacked" @@ -732,6 +828,199 @@ export const FeedList = ({ dataFeedType === "streamsExRate" || dataFeedType === "streamsBacked" ) { + // For deprecating streams, show two separate tables: mainnet and testnet + if (isDeprecating) { + const mainnetDeprecatingStreams: any[] = [] + const testnetDeprecatingStreams: any[] = [] + + if (initialCache) { + Object.values(initialCache).forEach((chainData: any) => { + // Only check Arbitrum chains for streams + if (chainData.page === "arbitrum") { + chainData.networks?.forEach((network: any) => { + network.metadata?.forEach((item: any) => { + // Only include items that are actual streams (have verifier contract type and feedId) + // and have a shutdown date + if (item.contractType === "verifier" && item.feedId && item.docs?.shutdownDate) { + const streamWithNetwork = { + ...item, + networkName: network.name, + } + if (network.networkType === "mainnet") { + mainnetDeprecatingStreams.push(streamWithNetwork) + } else if (network.networkType === "testnet") { + testnetDeprecatingStreams.push(streamWithNetwork) + } + } + }) + }) + } + }) + } + + // Sort alphabetically by asset name or product name + const sortStreams = (streams: any[]) => { + return streams.sort((a, b) => { + const nameA = (a.assetName || a.docs?.clicProductName || "").toUpperCase() + const nameB = (b.assetName || b.docs?.clicProductName || "").toUpperCase() + return nameA.localeCompare(nameB) + }) + } + + sortStreams(mainnetDeprecatingStreams) + sortStreams(testnetDeprecatingStreams) + + // Apply search filter for mainnet + const filteredMainnetStreams = mainnetDeprecatingStreams.filter((stream) => { + if (!searchValue || typeof searchValue !== "string") return true + const searchLower = searchValue.toLowerCase() + return ( + stream.feedId?.toLowerCase().includes(searchLower) || + stream.assetName?.toLowerCase().includes(searchLower) || + stream.feedType?.toLowerCase().includes(searchLower) || + stream.networkName?.toLowerCase().includes(searchLower) || + stream.docs?.clicProductName?.toLowerCase().includes(searchLower) + ) + }) + + // Apply search filter for testnet + const filteredTestnetStreams = testnetDeprecatingStreams.filter((stream) => { + if (!testnetSearchValue || typeof testnetSearchValue !== "string") return true + const searchLower = testnetSearchValue.toLowerCase() + return ( + stream.feedId?.toLowerCase().includes(searchLower) || + stream.assetName?.toLowerCase().includes(searchLower) || + stream.feedType?.toLowerCase().includes(searchLower) || + stream.networkName?.toLowerCase().includes(searchLower) || + stream.docs?.clicProductName?.toLowerCase().includes(searchLower) + ) + }) + + // Calculate mainnet pagination + const paginatedMainnetStreams = filteredMainnetStreams.slice(firstAddr, lastAddr) + + // Calculate testnet pagination + const paginatedTestnetStreams = filteredTestnetStreams.slice(testnetFirstAddr, testnetLastAddr) + + return ( + <> + {chainMetadata.loading && !chainMetadata.processedData && !initialCache &&

Loading...

} + {chainMetadata.error &&

There was an error loading the streams...

} + + +
+ { + setSearchValue((event.target as HTMLInputElement).value) + setCurrentPage("1") + }} + /> +
+ {filteredMainnetStreams.length > 0 ? ( + <> +
+ + + + {paginatedMainnetStreams.map((stream, index) => ( + + ))} + +
+
+ {filteredMainnetStreams.length > addrPerPage && ( +
+ +

+ {firstAddr + 1}- + {lastAddr > filteredMainnetStreams.length ? filteredMainnetStreams.length : lastAddr} of{" "} + {filteredMainnetStreams.length} +

+ +
+ )} + + ) : ( +

No mainnet deprecating streams found.

+ )} +
+ + +
+ { + setTestnetSearchValue((event.target as HTMLInputElement).value) + setTestnetCurrentPage("1") + }} + /> +
+ {filteredTestnetStreams.length > 0 ? ( + <> +
+ + + + {paginatedTestnetStreams.map((stream, index) => ( + + ))} + +
+
+ {filteredTestnetStreams.length > testnetAddrPerPage && ( +
+ +

+ {testnetFirstAddr + 1}- + {testnetLastAddr > filteredTestnetStreams.length + ? filteredTestnetStreams.length + : testnetLastAddr}{" "} + of {filteredTestnetStreams.length} +

+ +
+ )} + + ) : ( +

No testnet deprecating streams found.

+ )} +
+ + ) + } + + // Regular streams view (non-deprecating) const mainnetFeeds: ChainNetwork[] = [] const testnetFeeds: ChainNetwork[] = [] @@ -747,20 +1036,24 @@ export const FeedList = ({ return ( <> - {allowNetworkTableExpansion ? ( -
- -
- ) : ( - - - + {!isDeprecating && ( + <> + {allowNetworkTableExpansion ? ( +
+ +
+ ) : ( + + + + )} + )} - handleDropdownToggle("main-schema", isOpen)} - onClose={closeAllDropdowns} - label="Filter schema" - options={schemaFilterOptions} - value={rwaSchemaFilter} - groupId="schema-main" - onSelect={(next) => { - setRwaSchemaFilter(next) - setCurrentPage("1") - }} - /> - handleDropdownToggle("main-feed-type", isOpen)} - onClose={closeAllDropdowns} - label="Filter category" - options={feedTypeFilterOptions} - value={streamCategoryFilter} - groupId="feed-type-main" - onSelect={(next) => { - setStreamCategoryFilter(next) - setCurrentPage("1") - }} - /> - {(searchValue || rwaSchemaFilter !== "all" || streamCategoryFilter !== "all") && ( + {!show24x5Feeds && ( + <> + handleDropdownToggle("main-schema", isOpen)} + onClose={closeAllDropdowns} + label="Filter schema" + options={schemaFilterOptions} + value={rwaSchemaFilter} + groupId="schema-main" + onSelect={(next) => { + setRwaSchemaFilter(next) + setCurrentPage("1") + }} + /> + handleDropdownToggle("main-feed-type", isOpen)} + onClose={closeAllDropdowns} + label="Filter category" + options={feedTypeFilterOptions} + value={streamCategoryFilter} + groupId="feed-type-main" + onSelect={(next) => { + setStreamCategoryFilter(next) + setCurrentPage("1") + }} + /> + + )} + {!force24x5Only && ( +
+ +
+ )} + {show24x5Feeds && ( + handleDropdownToggle("main-trading-hours", isOpen)} + onClose={closeAllDropdowns} + label="Time segment" + options={tradingHoursFilterOptions} + value={tradingHoursFilter} + groupId="trading-hours-main" + onSelect={(next) => { + setTradingHoursFilter(next) + setCurrentPage("1") + }} + /> + )} + {(searchValue || rwaSchemaFilter !== "all" || streamCategoryFilter !== "all" || show24x5Feeds) && (
)} + {isTokenizedEquityFeed && ( + + )} + {stablecoinBound && ( + + )}
{metadata.docs.shutdownDate && (
@@ -271,30 +367,40 @@ const DefaultTr = ({ network, metadata, showExtraDetails, batchedCategoryData, d )}
-
- - - {metadata.proxyAddress ?? metadata.transmissionsAccount} - -
+ {shouldHideAddress ? ( + // Calculated-price feeds show a contact email instead of proxy address + + Contact us:{" "} + + {TOKENIZED_EQUITY_CONTACT_EMAIL} + + + ) : ( +
+ + + {metadata.proxyAddress ?? metadata.transmissionsAccount} + +
+ )}
{metadata.assetName && ( @@ -336,31 +442,43 @@ const DefaultTr = ({ network, metadata, showExtraDetails, batchedCategoryData, d {isAaveSVR(metadata) ? "AAVE SVR Proxy:" : "SVR Proxy:"}
- - - {metadata.secondaryProxyAddress} - + {shouldHideAddress ? ( + // Calculated-price feeds show a contact email instead of SVR proxy address + + Contact us:{" "} + + {TOKENIZED_EQUITY_CONTACT_EMAIL} + + + ) : ( + <> + + + {metadata.secondaryProxyAddress} + + + )}
- {isAaveSVR(metadata) && ( + {isAaveSVR(metadata) && !shouldHideAddress && (
⚠️ Aave Dedicated Feed: This SVR proxy feed is dedicated exclusively for use by the Aave protocol. Learn more about{" "} @@ -370,7 +488,7 @@ const DefaultTr = ({ network, metadata, showExtraDetails, batchedCategoryData, d .
)} - {isSharedSVR(metadata) && ( + {isSharedSVR(metadata) && !shouldHideAddress && (
🔗 SVR Feed: This SVR proxy feed is usable by any protocol. Learn more about{" "} @@ -408,19 +526,15 @@ const SmartDataTr = ({ network, metadata, showExtraDetails, batchedCategoryData // Only show MVR badge if explicitly flagged as MVR const finalIsMVRFeed = isMVRFlagSet && hasDecoding - // Resolve final category from batch (fallback to metadata) - const contractAddress = metadata.contractAddress || metadata.proxyAddress - const networkIdentifier = getNetworkIdentifier(network) - let finalTier = - contractAddress && batchedCategoryData?.size - ? (getFeedCategoryFromBatch(batchedCategoryData, contractAddress, networkIdentifier, metadata.feedCategory) - ?.final ?? metadata.feedCategory) - : metadata.feedCategory - - // Override with deprecating category if feed has shutdown date - if (metadata.docs?.shutdownDate) { - finalTier = "deprecating" - } + // Use the pre-computed finalCategory from enriched metadata + // (already includes deprecating status and Supabase risk tier) + const finalTier = metadata.finalCategory || metadata.feedCategory + + // Stablecoin price-bound note for Stablecoin Stability Assessment feeds + const isStablecoinAssessment = metadata.docs?.assetClass === "Stablecoin Stability Assessment" + const stablecoinBound = isStablecoinAssessment + ? getMaxSubmissionValueBound(metadata.maxSubmissionValue, metadata.decimals) + : null return ( @@ -472,6 +586,18 @@ const SmartDataTr = ({ network, metadata, showExtraDetails, batchedCategoryData
)} + {stablecoinBound && ( + + )} @@ -630,11 +756,34 @@ const SmartDataTr = ({ network, metadata, showExtraDetails, batchedCategoryData export const StreamsNetworkAddressesTable = ({ allowExpansion = false, defaultExpanded = false, + initialSearch = "", }: { allowExpansion?: boolean defaultExpanded?: boolean + initialSearch?: string } = {}) => { - const [searchValue, setSearchValue] = useState("") + // null = untouched; string = user has set a value + const [searchState, setSearchState] = useState(null) + + const urlSearch = + typeof window !== "undefined" ? (new URLSearchParams(window.location.search).get("streamsNetwork") ?? "") : "" + + // Priority: user-typed value → SSR prop (when Astro can pass it) → URL param (client fallback) + const searchValue = searchState ?? (initialSearch || urlSearch) + + const updateSearch = (value: string) => { + setSearchState(value) + if (typeof window === "undefined") return + const params = new URLSearchParams(window.location.search) + if (value) { + params.set("streamsNetwork", value) + } else { + params.delete("streamsNetwork") + } + const queryString = params.toString() + const newUrl = window.location.pathname + (queryString ? "?" + queryString : "") + window.location.hash + window.history.replaceState({ path: newUrl }, "", newUrl) + } const normalizedSearch = searchValue.toLowerCase().replaceAll(" ", "") @@ -663,10 +812,10 @@ export const StreamsNetworkAddressesTable = ({ placeholder="Search" className={feedList.filterDropdown_searchInput} value={searchValue} - onInput={(e) => setSearchValue((e.target as HTMLInputElement).value)} + onInput={(e) => updateSearch((e.target as HTMLInputElement).value)} /> {searchValue && ( - )} @@ -682,7 +831,7 @@ export const StreamsNetworkAddressesTable = ({ - {filteredNetworks.length === 0 ? ( + {typeof window === "undefined" ? null : filteredNetworks.length === 0 ? ( No results found @@ -719,9 +868,19 @@ export const StreamsNetworkAddressesTable = ({ {network.network}
- {network.mainnet?.label} + + {network.mainnet?.label} + {network.mainnet?.note && ( +
+ )} + - {network.isSolana ? ( + {network.isCanton ? ( + See Canton integration guide → + ) : network.isSolana ? ( <>
Verifier Program ID: @@ -767,7 +926,15 @@ export const StreamsNetworkAddressesTable = ({
)} - {network.testnet?.label} + + {network.testnet?.label} + {network.testnet?.note && ( +
+ )} + {network.isSolana ? ( <> @@ -841,7 +1008,7 @@ export const StreamsNetworkAddressesTable = ({ ) } -const StreamsTHead = () => ( +export const StreamsTHead = () => ( Stream @@ -861,204 +1028,297 @@ const streamsCategoryMap = { }, } -const StreamsTr = ({ metadata, isMainnet }) => ( - - -
- {metadata.pair[0]}/{metadata.pair[1]} - {metadata.feedType === "Crypto-DEX" && ( - - DEX State Price - - )} -
- {metadata.docs.shutdownDate && ( -
-
- Deprecating: -
- {metadata.docs.shutdownDate} -
- )} - - -
- {metadata.feedId} - -
-
-
- {isMainnet && metadata.docs.clicProductName && metadata.feedType !== "Tokenized Equities" && ( -
-
- Full name: -
-
{metadata.docs.clicProductName}
-
- )} - {metadata.assetName && ( -
-
- Asset name: -
-
{metadata.assetName}
-
- )} - {metadata.docs.assetClass ? ( -
-
- Asset class: -
-
- {metadata.docs.assetClass} - {metadata.docs.assetSubClass && - metadata.docs.assetSubClass !== "Crypto" && - metadata.docs.assetSubClass !== "Equities" - ? " - " + metadata.docs.assetSubClass - : ""} -
-
- ) : null} - {metadata.docs.marketHours ? ( -
-
- Market hours: -
-
- - {metadata.docs.marketHours} - -
-
- ) : null} - {streamsCategoryMap[metadata.feedCategory] ? ( - - ) : null} - {metadata.decimals ? ( -
-
- Decimals: -
-
{metadata.decimals}
-
- ) : null} +export const StreamsTr = ({ metadata, isMainnet }) => { + // Determine if stream is deprecating + const isDeprecating = !!metadata.docs?.shutdownDate + + // Temporary calculated stream detection until proper metadata tagging is implemented + // TODO: Replace with metadata.docs.isCalculated or similar once available + const isCalculatedStream = + metadata.docs?.productTypeCode === "ExRate" && + metadata.docs?.attributeType === "ExchangeRate" && + metadata.docs?.assetClass === "Tokenized Debt" + + return ( + + +
+ {metadata.pair[0]}/{metadata.pair[1]} {metadata.feedType === "Crypto-DEX" && ( -
-
- Report Schema: -
-
- - Report Schema v3 (Crypto DEX) - -
-
- )} - {metadata.feedType === "Crypto" && metadata.docs?.productTypeCode !== "ExRate" && ( -
-
- Report Schema: -
-
- - Report Schema v3 (Crypto) - -
-
- )} - {(metadata.feedType === "Equities" || metadata.feedType === "Forex") && metadata.docs?.schema !== "v11" && ( -
-
- Report Schema: -
-
- - Report Schema v8 (RWA) - -
-
- )} - {metadata.docs?.productTypeCode === "ExRate" && ( -
-
- Report Schema: -
-
- - Report Schema v7 (Redemption Rates) - -
-
- )} - {metadata.feedType === "Net Asset Value" && ( -
-
- Report Schema: -
-
- - Report Schema v9 (NAV) - -
-
- )} - {metadata.feedType === "Tokenized Equities" && ( -
-
- Report Schema: -
-
- - Report Schema v10 (Tokenized Assets) - -
-
+ + DEX State Price + )} - {metadata.docs?.schema === "v11" && ( -
-
- Report Schema: -
-
- - RWA Advanced (v11) - -
-
+ {isCalculatedStream && ( + + Calculated + )} -
-
- - -) +
+ {metadata.docs.shutdownDate && ( +
+
+ + Deprecating: + +
+ {metadata.docs.shutdownDate} +
+ )} + + +
+ {metadata.feedId} + +
+
+
+ {isMainnet && metadata.docs.clicProductName && metadata.feedType !== "Tokenized Equities" && ( +
+
+ Full name: +
+
{metadata.docs.clicProductName}
+
+ )} + {metadata.assetName && ( +
+
+ Asset name: +
+
{metadata.assetName}
+
+ )} + {metadata.docs.assetClass ? ( +
+
+ Asset class: +
+
+ {metadata.docs.assetClass} + {metadata.docs.assetSubClass && + metadata.docs.assetSubClass !== "Crypto" && + metadata.docs.assetSubClass !== "Equities" + ? " - " + metadata.docs.assetSubClass + : ""} +
+
+ ) : null} + {(() => { + const assetSubClass = (metadata.docs as any)?.assetSubClass + const clicProductName = (metadata.docs as any)?.clicProductName || "" + + // Determine the trading hours type from either assetSubClass or clicProductName + let hoursType = "" + let timeRange = "" + + if ( + assetSubClass === "Regular Hours" || + (clicProductName.includes("RegularHours") && + !clicProductName.includes("ExtendedHours") && + !clicProductName.includes("OvernightHours")) + ) { + hoursType = "Regular Hours" + timeRange = "9:30am–4:00pm Mon–Fri" + } else if (assetSubClass === "Extended Hours" || clicProductName.includes("ExtendedHours")) { + hoursType = "Extended Hours" + timeRange = "4:00am–9:30am & 4:00pm–8:00pm Mon–Fri" + } else if (assetSubClass === "Overnight Hours" || clicProductName.includes("OvernightHours")) { + hoursType = "Overnight Hours" + timeRange = "8:00pm–4:00am Sun evening–Fri morning" + } + + if (hoursType) { + return ( +
+
+ Trading hours: +
+
+ + {hoursType} + {" "} + — {timeRange} ET +
+
+ ) + } + return null + })()} + {metadata.docs.marketHours ? ( +
+
+ Market hours: +
+
+ + {metadata.docs.marketHours} + +
+
+ ) : null} + {streamsCategoryMap[metadata.feedCategory] ? ( + + ) : null} + {metadata.decimals ? ( +
+
+ Decimals: +
+
{metadata.decimals}
+
+ ) : null} + {metadata.feedType === "Crypto-DEX" && ( +
+
+ Report Schema: +
+
+ + Report Schema v3 (Crypto DEX) + +
+
+ )} + {metadata.feedType === "Crypto" && metadata.docs?.productTypeCode !== "ExRate" && ( +
+
+ Report Schema: +
+
+ + Report Schema v3 (Crypto) + +
+
+ )} + {(() => { + const schemaVersion = getSchemaVersion(metadata) + const feedType = metadata.feedType || metadata.docs?.feedType + + // RWA streams (Equities, Forex, Datalink) - v8 or v11 + if (feedType === "Equities" || feedType === "Forex" || feedType === "Datalink") { + if (schemaVersion === "v11") { + return ( +
+
+ Report Schema: +
+
+ + Report Schema v11 (RWA Advanced) + +
+
+ ) + } else if (schemaVersion === "v8") { + return ( +
+
+ Report Schema: +
+
+ + Report Schema v8 (RWA Standard) + +
+
+ ) + } + } + + // Exchange Rate streams + if (metadata.docs?.productTypeCode === "ExRate") { + return ( +
+
+ Report Schema: +
+
+ + Report Schema v7 (Redemption Rates) + +
+
+ ) + } + + // NAV streams + if (feedType === "Net Asset Value") { + return ( +
+
+ Report Schema: +
+
+ + Report Schema v9 (NAV) + +
+
+ ) + } + + // Tokenized Equities streams + if (feedType === "Tokenized Equities") { + return ( +
+
+ Report Schema: +
+
+ + Report Schema v10 (Tokenized Assets) + +
+
+ ) + } + + return null + })()} +
+
+ + + ) +} export const MainnetTable = ({ network, @@ -1068,6 +1328,8 @@ export const MainnetTable = ({ showOnlyDEXFeeds, rwaSchemaFilter, streamCategoryFilter, + show24x5Feeds, + tradingHoursFilter, dataFeedType, ecosystem, selectedFeedCategories, @@ -1077,6 +1339,7 @@ export const MainnetTable = ({ currentPage, paginate, searchValue, + tokenizedEquityProvider, }: { network: ChainNetwork showExtraDetails: boolean @@ -1085,6 +1348,8 @@ export const MainnetTable = ({ showOnlyDEXFeeds: boolean rwaSchemaFilter?: "all" | "v8" | "v11" streamCategoryFilter?: "all" | "datalink" | "equities" | "forex" + show24x5Feeds?: boolean + tradingHoursFilter?: "all" | "regular" | "extended" | "overnight" dataFeedType: string ecosystem: string selectedFeedCategories: string[] @@ -1094,6 +1359,7 @@ export const MainnetTable = ({ currentPage: number paginate searchValue: string + tokenizedEquityProvider?: string }) => { if (!network.metadata) return null @@ -1110,122 +1376,89 @@ export const MainnetTable = ({ const isDefault = !isStreams && !isSmartData && !isUSGovernmentMacroeconomicData const isDeprecating = ecosystem === "deprecating" - const filteredMetadata = network.metadata - .sort((a, b) => (a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1)) - .filter((metadata) => { - // --- - // Categorization logic: - // 1. Try to get the risk category for this feed from Supabase (batchedCategoryData). - // - Uses contractAddress and networkIdentifier as lookup keys. - // - If found, use the DB value; if not, fall back to the default from metadata. - // 2. If the risk category is 'hidden', exclude this feed from the docs. - // --- - const contractAddress = metadata.contractAddress || metadata.proxyAddress - const networkIdentifier = getNetworkIdentifier(network) - let batchCategory = metadata.feedCategory - - if (contractAddress && batchedCategoryData?.size) { - const categoryResult = getFeedCategoryFromBatch( - batchedCategoryData, - contractAddress, - networkIdentifier, - metadata.feedCategory - ) - const finalCategory = categoryResult?.final ?? null - - if (finalCategory) { - batchCategory = finalCategory - } - } - - if (batchCategory === "hidden") return false - if (showOnlySVR && !metadata.secondaryProxyAddress) { - return false - } - - if (isDeprecating) return !!metadata.docs.shutdownDate - - if (dataFeedType === "streamsCrypto") { - const isValidStreamsFeed = - metadata.contractType === "verifier" && - (metadata.docs.feedType === "Crypto" || metadata.docs.feedType === "Crypto-DEX") - - if (showOnlyDEXFeeds) { - return isValidStreamsFeed && metadata.docs.feedType === "Crypto-DEX" - } - - return isValidStreamsFeed - } - if (dataFeedType === "streamsRwa") { - const isRwaFeed = - metadata.contractType === "verifier" && - (metadata.docs.feedType === "Equities" || - metadata.docs.feedType === "Forex" || - metadata.docs.feedType === "Datalink") - - if (!isRwaFeed) return false - - // Apply feed type filter - if (streamCategoryFilter === "datalink") { - if (metadata.docs.feedType !== "Datalink") return false - } else if (streamCategoryFilter === "equities") { - if (metadata.docs.feedType !== "Equities") return false - } else if (streamCategoryFilter === "forex") { - if (metadata.docs.feedType !== "Forex") return false - } + // Enrich metadata with final category (combining RDD and Supabase data) + // Priority: deprecating status from RDD > Supabase risk tier > RDD category fallback + const enrichedMetadata = network.metadata.map((metadata) => { + // Check for deprecating status from RDD first (has shutdown date) + if (metadata.docs?.shutdownDate) { + return { ...metadata, finalCategory: "deprecating" } + } - // Apply schema filter - if (rwaSchemaFilter === "v8") { - return metadata.docs?.schema === "v8" || !metadata.docs?.schema - } - if (rwaSchemaFilter === "v11") { - return metadata.docs?.schema === "v11" - } + // Otherwise, get risk category from Supabase (or fall back to RDD) + const contractAddress = metadata.contractAddress || metadata.proxyAddress + const networkIdentifier = getNetworkIdentifier(network) + let finalCategory = metadata.feedCategory + + if (contractAddress && batchedCategoryData?.size) { + const categoryResult = getFeedCategoryFromBatch( + batchedCategoryData, + contractAddress, + networkIdentifier, + metadata.feedCategory + ) + const supabaseCategory = categoryResult?.final ?? null - return true + if (supabaseCategory) { + finalCategory = supabaseCategory } + } - if (dataFeedType === "streamsNav") { - return metadata.contractType === "verifier" && metadata.docs.feedType === "Net Asset Value" - } + return { ...metadata, finalCategory } + }) - if (dataFeedType === "streamsExRate") { - return metadata.contractType === "verifier" && metadata.docs?.productTypeCode === "ExRate" + const filteredMetadata = enrichedMetadata + .sort((a, b) => (a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1)) + .filter((metadata) => { + if (showOnlySVR && !metadata.secondaryProxyAddress) { + return false } - if (dataFeedType === "streamsBacked") { - return metadata.contractType === "verifier" && metadata.docs.feedType === "Tokenized Equities" + if (isDeprecating) { + // Only show feeds (not streams) with shutdown dates + return !!metadata.docs.shutdownDate && !(metadata.contractType === "verifier" && metadata.feedId) } - if (isSmartData) { - if (showOnlyMVRFeeds) { - return !metadata.docs?.hidden && metadata.docs?.isMVR === true && metadata.docs?.deliveryChannelCode !== "DS" + // Use shared visibility logic with filters + return isFeedVisible(metadata, dataFeedType as any, ecosystem, { + showOnlyDEXFeeds, + streamCategoryFilter, + rwaSchemaFilter, + showOnlyMVRFeeds, + tokenizedEquityProvider, + }) + }) + .filter((metadata) => { + // When 24/5 checkbox is checked, ONLY show 24/5 feeds + if (show24x5Feeds) { + const schemaVersion = getSchemaVersion(metadata) + const feedType = metadata.feedType || metadata.docs?.feedType + + // 24/5 feeds are Equities/Forex with v11 schema + const is24x5Feed = (feedType === "Equities" || feedType === "Forex") && schemaVersion === "v11" + + if (!is24x5Feed) return false + + // Apply trading hours sub-filter + if (tradingHoursFilter && tradingHoursFilter !== "all") { + const assetSubClass = (metadata.docs as any)?.assetSubClass + const clicProductName = (metadata.docs as any)?.clicProductName || "" + + // Check both assetSubClass and clicProductName for hours identification + const isRegularHours = + assetSubClass === "Regular Hours" || + (clicProductName.includes("RegularHours") && + !clicProductName.includes("ExtendedHours") && + !clicProductName.includes("OvernightHours")) + const isExtendedHours = assetSubClass === "Extended Hours" || clicProductName.includes("ExtendedHours") + const isOvernightHours = assetSubClass === "Overnight Hours" || clicProductName.includes("OvernightHours") + + if (tradingHoursFilter === "regular" && !isRegularHours) return false + if (tradingHoursFilter === "extended" && !isExtendedHours) return false + if (tradingHoursFilter === "overnight" && !isOvernightHours) return false } - - return ( - !metadata.docs?.hidden && - metadata.docs?.deliveryChannelCode !== "DS" && - (metadata.docs?.productType === "Proof of Reserve" || - metadata.docs?.productType === "NAVLink" || - metadata.docs?.productType === "SmartAUM" || - metadata.docs?.isMVR === true) - ) - } - - if (isUSGovernmentMacroeconomicData) { - const isMacro = metadata.docs?.productTypeCode === "RefMacro" - return isMacro } - // Exclude MVR feeds from default view - return ( - !metadata.docs.porType && - metadata.contractType !== "verifier" && - metadata.docs.productType !== "Proof of Reserve" && - metadata.docs.productType !== "NAVLink" && - metadata.docs.productType !== "SmartAUM" && - metadata.docs?.productTypeCode !== "RefMacro" - ) + return true }) .filter((metadata) => { if (isSmartData) { @@ -1241,9 +1474,12 @@ export const MainnetTable = ({ return included } + // Filter by final category (Supabase risk tier takes precedence over RDD) + // Normalize spaces for comparison (e.g., "very high" → "veryhigh") + const normalizedFinalCategory = metadata.finalCategory?.toLowerCase().replace(/\s+/g, "") return ( selectedFeedCategories.length === 0 || - selectedFeedCategories.map((cat) => cat.toLowerCase()).includes(metadata.feedCategory?.toLowerCase()) + selectedFeedCategories.map((cat) => cat.toLowerCase().replace(/\s+/g, "")).includes(normalizedFinalCategory) ) }) .filter( @@ -1290,7 +1526,7 @@ export const MainnetTable = ({

No results found

@@ -1368,6 +1604,9 @@ export const TestnetTable = ({ showOnlyDEXFeeds, rwaSchemaFilter, streamCategoryFilter, + show24x5Feeds, + tradingHoursFilter, + tokenizedEquityProvider, }: { network: ChainNetwork showExtraDetails: boolean @@ -1383,6 +1622,9 @@ export const TestnetTable = ({ showOnlyDEXFeeds?: boolean rwaSchemaFilter?: "all" | "v8" | "v11" streamCategoryFilter?: "all" | "datalink" | "equities" | "forex" + show24x5Feeds?: boolean + tradingHoursFilter?: "all" | "regular" | "extended" | "overnight" + tokenizedEquityProvider?: string }) => { if (!network.metadata) return null @@ -1399,127 +1641,80 @@ export const TestnetTable = ({ const isUSGovernmentMacroeconomicData = dataFeedType === "usGovernmentMacroeconomicData" const isDefault = !isSmartData && !isRates && !isStreams && !isUSGovernmentMacroeconomicData - const filteredMetadata = network.metadata - .sort((a, b) => (a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1)) - .filter((metadata) => { - // --- - // Categorization logic: - // 1. Try to get the risk category for this feed from Supabase (batchedCategoryData). - // - Uses contractAddress and networkIdentifier as lookup keys. - // - If found, use the DB value; if not, fall back to the default from metadata. - // 2. If the risk category is 'hidden', exclude this feed from the docs. - // --- - const contractAddress = metadata.contractAddress || metadata.proxyAddress - const networkIdentifier = getNetworkIdentifier(network) - let batchCategory = metadata.feedCategory - - if (contractAddress && batchedCategoryData?.size) { - const categoryResult = getFeedCategoryFromBatch( - batchedCategoryData, - contractAddress, - networkIdentifier, - metadata.feedCategory - ) - const finalCategory = categoryResult?.final ?? null - - if (finalCategory) { - batchCategory = finalCategory - } - } - - if (batchCategory === "hidden") return false - if (isStreams) { - if (dataFeedType === "streamsCrypto") { - const isValidStreamsFeed = - metadata.contractType === "verifier" && - (metadata.feedType === "Crypto" || metadata.feedType === "Crypto-DEX") - - if (showOnlyDEXFeeds) { - return isValidStreamsFeed && metadata.feedType === "Crypto-DEX" - } - - return isValidStreamsFeed - } - - if (dataFeedType === "streamsRwa") { - const isRwaFeed = - metadata.contractType === "verifier" && - (metadata.docs.feedType === "Equities" || - metadata.docs.feedType === "Forex" || - metadata.docs.feedType === "Datalink") - - if (!isRwaFeed) return false - - // Apply feed type filter - if (streamCategoryFilter === "datalink") { - if (metadata.docs.feedType !== "Datalink") return false - } else if (streamCategoryFilter === "equities") { - if (metadata.docs.feedType !== "Equities") return false - } else if (streamCategoryFilter === "forex") { - if (metadata.docs.feedType !== "Forex") return false - } - - // Apply schema filter - if (rwaSchemaFilter === "v8") { - return metadata.docs?.schema === "v8" || !metadata.docs?.schema - } - if (rwaSchemaFilter === "v11") { - return metadata.docs?.schema === "v11" - } - - return true - } - - if (dataFeedType === "streamsExRate") { - return metadata.contractType === "verifier" && metadata.docs?.productTypeCode === "ExRate" - } - - if (dataFeedType === "streamsNav") { - return metadata.contractType === "verifier" && metadata.docs.feedType === "Net Asset Value" - } - - if (dataFeedType === "streamsBacked") { - return metadata.contractType === "verifier" && metadata.docs.feedType === "Tokenized Equities" - } - - // If we're in streams mode but didn't match any specific stream type, exclude this feed - return false - } + // Enrich metadata with final category (combining RDD and Supabase data) + // Priority: deprecating status from RDD > Supabase risk tier > RDD category fallback + const enrichedMetadata = network.metadata.map((metadata) => { + // Check for deprecating status from RDD first (has shutdown date) + if (metadata.docs?.shutdownDate) { + return { ...metadata, finalCategory: "deprecating" } + } - if (isSmartData) { - if (showOnlyMVRFeeds) { - return !metadata.docs?.hidden && metadata.docs?.isMVR === true && metadata.docs?.deliveryChannelCode !== "DS" - } + // Otherwise, get risk category from Supabase (or fall back to RDD) + const contractAddress = metadata.contractAddress || metadata.proxyAddress + const networkIdentifier = getNetworkIdentifier(network) + let finalCategory = metadata.feedCategory + + if (contractAddress && batchedCategoryData?.size) { + const categoryResult = getFeedCategoryFromBatch( + batchedCategoryData, + contractAddress, + networkIdentifier, + metadata.feedCategory + ) + const supabaseCategory = categoryResult?.final ?? null - // Otherwise, include all SmartData feeds (MVR, PoR, NAVLink, SmartAUM) - return ( - !metadata.docs?.hidden && - metadata.docs?.deliveryChannelCode !== "DS" && - (metadata.docs?.productType === "Proof of Reserve" || - metadata.docs?.productType === "NAVLink" || - metadata.docs?.productType === "SmartAUM" || - metadata.docs?.isMVR === true) - ) + if (supabaseCategory) { + finalCategory = supabaseCategory } + } - if (isRates) - return !!(metadata.docs.productType === "Rates" || metadata.docs.productSubType === "Realized Volatility") + return { ...metadata, finalCategory } + }) - if (isUSGovernmentMacroeconomicData) { - return metadata.docs?.productTypeCode === "RefMacro" + const filteredMetadata = enrichedMetadata + .sort((a, b) => (a.name.toUpperCase() < b.name.toUpperCase() ? -1 : 1)) + .filter((metadata) => { + // Use shared visibility logic with filters + return isFeedVisible(metadata, dataFeedType as any, undefined, { + showOnlyDEXFeeds, + streamCategoryFilter, + rwaSchemaFilter, + showOnlyMVRFeeds, + tokenizedEquityProvider, + }) + }) + .filter((metadata) => { + // When 24/5 checkbox is checked, ONLY show 24/5 feeds + if (show24x5Feeds) { + const schemaVersion = getSchemaVersion(metadata) + const feedType = metadata.feedType || metadata.docs?.feedType + + // 24/5 feeds are Equities/Forex with v11 schema + const is24x5Feed = (feedType === "Equities" || feedType === "Forex") && schemaVersion === "v11" + + if (!is24x5Feed) return false + + // Apply trading hours sub-filter + if (tradingHoursFilter && tradingHoursFilter !== "all") { + const assetSubClass = (metadata.docs as any)?.assetSubClass + const clicProductName = (metadata.docs as any)?.clicProductName || "" + + // Check both assetSubClass and clicProductName for hours identification + const isRegularHours = + assetSubClass === "Regular Hours" || + (clicProductName.includes("RegularHours") && + !clicProductName.includes("ExtendedHours") && + !clicProductName.includes("OvernightHours")) + const isExtendedHours = assetSubClass === "Extended Hours" || clicProductName.includes("ExtendedHours") + const isOvernightHours = assetSubClass === "Overnight Hours" || clicProductName.includes("OvernightHours") + + if (tradingHoursFilter === "regular" && !isRegularHours) return false + if (tradingHoursFilter === "extended" && !isExtendedHours) return false + if (tradingHoursFilter === "overnight" && !isOvernightHours) return false + } } - // Exclude MVR feeds from default view - return ( - !metadata.feedId && - !metadata.docs.porType && - metadata.docs.productType !== "Rates" && - metadata.docs.productSubType !== "Realized Volatility" && - metadata.docs.productType !== "Proof of Reserve" && - metadata.docs.productType !== "NAVLink" && - metadata.docs.productType !== "SmartAUM" && - metadata.docs?.productTypeCode !== "RefMacro" - ) + return true }) .filter((metadata) => { if (isSmartData) { @@ -1534,9 +1729,12 @@ export const TestnetTable = ({ return included } + // Filter by final category (Supabase risk tier takes precedence over RDD) + // Normalize spaces for comparison (e.g., "very high" → "veryhigh") + const normalizedFinalCategory = metadata.finalCategory?.toLowerCase().replace(/\s+/g, "") return ( selectedFeedCategories.length === 0 || - selectedFeedCategories.map((cat) => cat.toLowerCase()).includes(metadata.feedCategory?.toLowerCase()) + selectedFeedCategories.map((cat) => cat.toLowerCase().replace(/\s+/g, "")).includes(normalizedFinalCategory) ) }) .filter( @@ -1565,7 +1763,7 @@ export const TestnetTable = ({

No results found

diff --git a/src/features/feeds/components/urlStateHelpers.ts b/src/features/feeds/components/urlStateHelpers.ts new file mode 100644 index 00000000000..4203e37b79b --- /dev/null +++ b/src/features/feeds/components/urlStateHelpers.ts @@ -0,0 +1,86 @@ +/** + * URL state management helpers for feed tables + * Clean up empty and default values from URLs + */ + +/** + * Update URL with only non-empty, non-default values + * Removes clutter like search=&page=1 + */ +export function updateUrlClean(updates: Record) { + if (typeof window === "undefined") return + + const params = new URLSearchParams(window.location.search) + + // Apply updates + Object.entries(updates).forEach(([key, value]) => { + // Remove param if undefined, empty string, or default value + if ( + value === undefined || + value === "" || + (key === "page" && value === 1) || + (key === "page" && value === "1") || + (key === "testnetPage" && value === 1) || + (key === "testnetPage" && value === "1") || + (key.includes("Schema") && value === "all") || + (key.includes("FeedType") && value === "all") || + value === false + ) { + params.delete(key) + } else { + params.set(key, String(value)) + } + }) + + // Build URL with params in logical order: network → networkType → filters → pagination + const orderedParams = new URLSearchParams() + const order = [ + "network", + "networkType", + "search", + "testnetSearch", + "categories", + "showSvr", + "showDetails", + "feedType", + "testnetFeedType", + "schema", + "testnetSchema", + "page", + "testnetPage", + ] + + order.forEach((key) => { + if (params.has(key)) { + const values = params.getAll(key) + values.forEach((v) => orderedParams.append(key, v)) + } + }) + + const queryString = orderedParams.toString() + const newUrl = window.location.pathname + (queryString ? "?" + queryString : "") + window.location.hash + window.history.replaceState({ path: newUrl }, "", newUrl) +} + +/** + * Clear all filter-related params, optionally keeping network selection + */ +export function clearFilters(keepNetwork = true) { + if (typeof window === "undefined") return + + const params = new URLSearchParams(window.location.search) + const network = params.get("network") + const networkType = params.get("networkType") + + // Start fresh + const newParams = new URLSearchParams() + + if (keepNetwork) { + if (network) newParams.set("network", network) + if (networkType && networkType !== "mainnet") newParams.set("networkType", networkType) + } + + const queryString = newParams.toString() + const newUrl = window.location.pathname + (queryString ? "?" + queryString : "") + window.location.hash + window.history.replaceState({ path: newUrl }, "", newUrl) +} diff --git a/src/features/feeds/components/useCleanUrlParams.ts b/src/features/feeds/components/useCleanUrlParams.ts new file mode 100644 index 00000000000..b85aa7200e0 --- /dev/null +++ b/src/features/feeds/components/useCleanUrlParams.ts @@ -0,0 +1,184 @@ +/** + * Clean URL parameter management for feed tables + * + * Philosophy: + * - Only add params when they differ from defaults + * - Keep URL minimal and human-readable + * - Order params logically: network → type → filters → pagination + * - Clear related params when context changes (e.g., switching networks) + */ + +import { useCallback } from "preact/hooks" + +export type FeedUrlParams = { + // Network selection + network?: string + networkType?: "mainnet" | "testnet" + + // Search filters + search?: string + testnetSearch?: string + + // Category filters + categories?: string[] + + // Feature flags + showSvr?: boolean + showDetails?: boolean + + // Pagination + page?: number + testnetPage?: number + + // Streams-specific filters + feedType?: string + testnetFeedType?: string + schema?: string + testnetSchema?: string +} + +const DEFAULT_VALUES: Required = { + network: "", + networkType: "mainnet", + search: "", + testnetSearch: "", + categories: [], + showSvr: false, + showDetails: false, + page: 1, + testnetPage: 1, + feedType: "all", + testnetFeedType: "all", + schema: "all", + testnetSchema: "all", +} + +/** + * Build a clean URL with only non-default parameters + */ +function buildCleanUrl(params: Partial, pathname: string, hash = ""): string { + const urlParams = new URLSearchParams() + + // Add params in logical order (network first, then filters, then pagination) + const orderedKeys: (keyof FeedUrlParams)[] = [ + "network", + "networkType", + "search", + "testnetSearch", + "categories", + "showSvr", + "showDetails", + "feedType", + "testnetFeedType", + "schema", + "testnetSchema", + "page", + "testnetPage", + ] + + orderedKeys.forEach((key) => { + const value = params[key] + const defaultValue = DEFAULT_VALUES[key] + + // Skip if value is undefined or matches default + if (value === undefined) return + + // Handle arrays + if (Array.isArray(value)) { + if (value.length === 0) return // Skip empty arrays + value.forEach((v) => urlParams.append(key, v)) + return + } + + // Handle booleans + if (typeof value === "boolean") { + if (!value) return // Only add true values + urlParams.set(key, "true") + return + } + + // Handle strings and numbers + const stringValue = String(value) + const defaultStringValue = String(defaultValue) + + if (stringValue !== defaultStringValue && stringValue !== "") { + urlParams.set(key, stringValue) + } + }) + + const queryString = urlParams.toString() + return pathname + (queryString ? "?" + queryString : "") + hash +} + +/** + * Parse current URL params into a typed object + */ +function parseUrlParams(initialNetwork?: string): FeedUrlParams { + if (typeof window === "undefined") { + return { network: initialNetwork } + } + + const urlParams = new URLSearchParams(window.location.search) + + return { + network: urlParams.get("network") || undefined, + networkType: (urlParams.get("networkType") as "mainnet" | "testnet") || undefined, + search: urlParams.get("search") || undefined, + testnetSearch: urlParams.get("testnetSearch") || undefined, + categories: urlParams.getAll("categories").filter(Boolean), + showSvr: urlParams.get("showSvr") === "true" || undefined, + showDetails: urlParams.get("showDetails") === "true" || undefined, + page: urlParams.get("page") ? parseInt(urlParams.get("page") || "1") : undefined, + testnetPage: urlParams.get("testnetPage") ? parseInt(urlParams.get("testnetPage") || "1") : undefined, + feedType: urlParams.get("feedType") || undefined, + testnetFeedType: urlParams.get("testnetFeedType") || undefined, + schema: urlParams.get("schema") || undefined, + testnetSchema: urlParams.get("testnetSchema") || undefined, + } +} + +export function useCleanUrlParams(initialNetwork: string) { + const updateUrl = useCallback( + (updates: Partial, clearRelated = false) => { + if (typeof window === "undefined") return + + const current = parseUrlParams(initialNetwork) + let newParams: Partial + + if (clearRelated) { + // When clearing related params, start fresh with only the updates + newParams = { ...updates } + } else { + // Merge with existing params + newParams = { ...current, ...updates } + } + + const newUrl = buildCleanUrl(newParams, window.location.pathname, window.location.hash) + window.history.replaceState({ path: newUrl }, "", newUrl) + }, + [initialNetwork] + ) + + const getCurrentParams = useCallback(() => { + return parseUrlParams(initialNetwork) + }, [initialNetwork]) + + const clearAllFilters = useCallback( + (keepNetwork = true) => { + const newParams: Partial = {} + if (keepNetwork) { + const current = parseUrlParams(initialNetwork) + if (current.network) newParams.network = current.network + if (current.networkType) newParams.networkType = current.networkType + } + updateUrl(newParams, true) + }, + [updateUrl, initialNetwork] + ) + + return { + updateUrl, + getCurrentParams, + clearAllFilters, + } +} diff --git a/src/features/feeds/data/StreamsNetworksData.ts b/src/features/feeds/data/StreamsNetworksData.ts index 37ed9544dfe..057a37913c2 100644 --- a/src/features/feeds/data/StreamsNetworksData.ts +++ b/src/features/feeds/data/StreamsNetworksData.ts @@ -2,8 +2,9 @@ export type NetworkDetails = { verifierProxy?: string verifierProgramId?: string accessController?: string - explorerUrl: string + explorerUrl?: string label: string + note?: string } export type NetworkData = { @@ -14,6 +15,7 @@ export type NetworkData = { testnet?: NetworkDetails message?: string isSolana?: boolean + isCanton?: boolean } export const StreamsNetworksData: NetworkData[] = [ @@ -32,6 +34,15 @@ export const StreamsNetworksData: NetworkData[] = [ explorerUrl: "https://chainscan-galileo.0g.ai/address/%s", }, }, + { + network: "ADI Network", + logoUrl: "/assets/chains/adi-network.svg", + mainnet: { + label: "ADI Mainnet", + verifierProxy: "0x29b289DC5f840762FBF605FF4DF37df18FdA4e7a", + explorerUrl: "https://explorer.adifoundation.ai/address/%s", + }, + }, { network: "Apechain", logoUrl: "/assets/chains/apechain.svg", @@ -76,6 +87,15 @@ export const StreamsNetworksData: NetworkData[] = [ explorerUrl: "https://sepolia.arbiscan.io/address/%s", }, }, + { + network: "Arc", + logoUrl: "/assets/chains/arc.svg", + testnet: { + label: "Arc Testnet", + verifierProxy: "0x72790f9eB82db492a7DDb6d2af22A270Dcc3Db64", + explorerUrl: "https://testnet.arcscan.app/address/%s", + }, + }, { network: "Avalanche", logoUrl: "/assets/chains/avalanche.svg", @@ -193,6 +213,15 @@ export const StreamsNetworksData: NetworkData[] = [ explorerUrl: "https://testnet.botanixscan.io/address/%s", }, }, + { + network: "Canton", + logoUrl: "/assets/chains/canton.svg", + isCanton: true, + mainnet: { + label: "Canton Network", + note: "Uses a party-specific VerifierConfig Contract ID issued by Chainlink.", + }, + }, { network: "Celo", logoUrl: "/assets/chains/celo.svg", @@ -221,6 +250,24 @@ export const StreamsNetworksData: NetworkData[] = [ explorerUrl: "https://sepolia.etherscan.io/address/%s", }, }, + { + network: "DogeOS", + logoUrl: "/assets/chains/dogeos.svg", + testnet: { + label: "DogeOS Chikyu Testnet", + verifierProxy: "0x72790f9eB82db492a7DDb6d2af22A270Dcc3Db64", + explorerUrl: "https://blockscout.testnet.dogeos.com/address/%s", + }, + }, + { + network: "Giwa", + logoUrl: "/assets/chains/giwa.svg", + testnet: { + label: "Giwa Sepolia", + verifierProxy: "0x72790f9eB82db492a7DDb6d2af22A270Dcc3Db64", + explorerUrl: "https://sepolia-explorer.giwa.io/address/%s", + }, + }, { network: "Gnosis", logoUrl: "/assets/chains/gnosis-chain.svg", @@ -283,12 +330,12 @@ export const StreamsNetworksData: NetworkData[] = [ mainnet: { label: "HyperEVM Mainnet", verifierProxy: "0x60fAa7faC949aF392DFc858F5d97E3EEfa07E9EB", - explorerUrl: "https://hyperliquid.cloud.blockscout.com/address/%s", + explorerUrl: "https://hyperevmscan.io/address/address/%s", }, testnet: { label: "HyperEVM Testnet", verifierProxy: "0x60fAa7faC949aF392DFc858F5d97E3EEfa07E9EB", - explorerUrl: "https://evm.hyperstats.xyz/address/%s", + explorerUrl: "https://testnet.purrsec.com/address/%s", }, }, { @@ -312,7 +359,12 @@ export const StreamsNetworksData: NetworkData[] = [ mainnet: { label: "Injective EVM Mainnet", verifierProxy: "0x60fAa7faC949aF392DFc858F5d97E3EEfa07E9EB", - explorerUrl: "https://injscan.com/account/inj1vra207kffxhnjt0usk84m9lramaq060t75latq/", // Note: Injective uses Bech32 address format, hardcoding here to avoid confusion + explorerUrl: "https://injscan.com/account/inj1vra207kffxhnjt0usk84m9lramaq060t75latq/", + }, + testnet: { + label: "Injective Testnet", + verifierProxy: "0x60fAa7faC949aF392DFc858F5d97E3EEfa07E9EB", + explorerUrl: "https://testnet.explorer.injective.network/account/inj1wfusl84c9k6f9f7akmf27g4zwrwv8kmyt3r45r/", }, }, { @@ -391,10 +443,15 @@ export const StreamsNetworksData: NetworkData[] = [ network: "MegaETH", logoUrl: "/assets/chains/megaeth.svg", networkStatus: "https://uptime.megaeth.com", + mainnet: { + label: "MegaETH Mainnet", + verifierProxy: "0x60fAa7faC949aF392DFc858F5d97E3EEfa07E9EB", + explorerUrl: "https://megaeth.blockscout.com/address/%s", + }, testnet: { label: "MegaETH Testnet", - verifierProxy: "0xfBFff08fE4169853F7B1b5Ac67eC10dc8806801d", - explorerUrl: "https://www.megaexplorer.xyz/address/%s", + verifierProxy: "0xa33c1F0561eECe58ee7b7349D5BE018dd94EC9B6", + explorerUrl: "https://megaeth-testnet-v2.blockscout.com/address/%s", }, }, { @@ -454,6 +511,34 @@ export const StreamsNetworksData: NetworkData[] = [ explorerUrl: "https://sepolia-optimism.etherscan.io/address/%s", }, }, + { + network: "Perennial", + logoUrl: "/assets/chains/perennial.svg", + mainnet: { + label: "Perennial Mainnet", + verifierProxy: "0xC539169910DE08D237Df0d73BcDa9074c787A4a1", + explorerUrl: "https://explorer.perennial.foundation/address/%s", + }, + testnet: { + label: "Perennial Testnet", + verifierProxy: "0xF94Fc3DfD2875AECBEfDA8b7bFA05884fbF1E042", + explorerUrl: "https://explorer-sepolia.perennial.foundation/address/%s", + }, + }, + { + network: "Pharos", + logoUrl: "/assets/chains/pharos.svg", + mainnet: { + label: "Pharos Mainnet (Private)", + verifierProxy: "0xa094978891512268f4a4a4641B8da1A2a3E3BEB7", + explorerUrl: "https://pharos.socialscan.io/address/%s", + }, + testnet: { + label: "Pharos Atlantic Testnet", + verifierProxy: "0x72790f9eb82db492a7ddb6d2af22a270dcc3db64", + explorerUrl: "https://atlantic.pharosscan.xyz/address/%s", + }, + }, { network: "Polygon", logoUrl: "/assets/chains/polygon.svg", @@ -484,6 +569,15 @@ export const StreamsNetworksData: NetworkData[] = [ explorerUrl: "https://testnet.plasmascan.to/address/%s", }, }, + { + network: "Robinhood Chain", + logoUrl: "/assets/chains/ronin.svg", + testnet: { + label: "Robinhood Chain Testnet", + verifierProxy: "0x72790f9eB82db492a7DDb6d2af22A270Dcc3Db64", + explorerUrl: "https://explorer.testnet.chain.robinhood.com/address/%s", + }, + }, { network: "Ronin", logoUrl: "/assets/chains/ronin.svg", @@ -527,6 +621,15 @@ export const StreamsNetworksData: NetworkData[] = [ explorerUrl: "https://testnet.seitrace.com/address/%s", }, }, + { + network: "Seismic", + logoUrl: "/assets/chains/seismic.svg", + testnet: { + label: "Seismic Testnet", + verifierProxy: "0x72790f9eB82db492a7DDb6d2af22A270Dcc3Db64", + explorerUrl: "https://seismic-testnet.socialscan.io/address/%s", + }, + }, { network: "Shibarium", logoUrl: "/assets/chains/shibarium.svg", @@ -587,6 +690,35 @@ export const StreamsNetworksData: NetworkData[] = [ explorerUrl: "https://explorer.solana.com/address/%s?cluster=devnet", }, }, + { + network: "Stable", + logoUrl: "/assets/chains/stable.svg", + mainnet: { + label: "Stable Mainnet", + verifierProxy: "0x06034790F8b6c2573B91704BeC6Ab380cB590237", + explorerUrl: "https://stablescan.xyz/address/%s", + }, + testnet: { + label: "Stable Testnet", + verifierProxy: "0x72790f9eB82db492a7DDb6d2af22A270Dcc3Db64", + explorerUrl: "https://testnet.stablescan.xyz/address/%s", + }, + }, + { + network: "X Layer", + logoUrl: "/assets/chains/xlayer.svg", + networkStatus: "https://status.xlayer.tech/", + mainnet: { + label: "X Layer Mainnet", + verifierProxy: "0xcE73c8ad08CBDEaCa6078BF0627C8fe0a9a536E7", + explorerUrl: "https://web3.okx.com/explorer/x-layer/address/%s", + }, + testnet: { + label: "X Layer Testnet", + verifierProxy: "0x72790f9eB82db492a7DDb6d2af22A270Dcc3Db64", + explorerUrl: "https://web3.okx.com/explorer/x-layer-testnet/address/%s", + }, + }, { network: "Taiko", logoUrl: "/assets/chains/taiko.svg", diff --git a/src/features/feeds/utils/feedVisibility.ts b/src/features/feeds/utils/feedVisibility.ts new file mode 100644 index 00000000000..5293c671353 --- /dev/null +++ b/src/features/feeds/utils/feedVisibility.ts @@ -0,0 +1,188 @@ +import { DataFeedType } from "../components/FeedList.tsx" + +/** + * Helper function to extract schema version from feed metadata + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function getSchemaVersion(feed: any): string | undefined { + // First try to get from docs.schema + if (feed.docs?.schema) { + return feed.docs.schema + } + + // Fallback: parse from clicProductName + const clicProductName = feed.docs?.clicProductName + if (clicProductName) { + const match = clicProductName.match(/-0(\d{2})$/) + if (match) { + const version = match[1] + if (version === "04" || version === "08") return "v8" + if (version === "11") return "v11" + } + } + + return undefined +} + +/** + * Determines if a feed should be visible based on: + * - Hidden flags (feedCategory === "hidden" or docs.hidden) + * - Data feed type filtering (streams, smartdata, rates, etc.) + * - Ecosystem filtering (deprecating) + * + * This logic is shared between table filtering and network availability checks. + */ +export interface FeedVisibilityOptions { + showOnlyDEXFeeds?: boolean + streamCategoryFilter?: string + rwaSchemaFilter?: string + showOnlyMVRFeeds?: boolean + tokenizedEquityProvider?: string // Filter tokenized equity feeds by provider (e.g., "ondo") +} + +/** + * Determines if a feed should be visible based on: + * - Hidden flags (feedCategory === "hidden" or docs.hidden) + * - Data feed type filtering (streams, smartdata, rates, etc.) + * - Ecosystem filtering (deprecating) + * - Optional filters (DEX only, MVR only, schema version, etc.) + * + * This logic is shared between table filtering and network availability checks. + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function isFeedVisible( + feed: any, + dataFeedType: DataFeedType, + ecosystem = "", + options: FeedVisibilityOptions = {} +): boolean { + // =========================================================================== + // 1. Universal Exclusions + // =========================================================================== + // Tokenized equity feeds are allowed to bypass the hidden flag since they are + // marked hidden in the general feed list but should show on their dedicated page + const isTokenizedEquity = dataFeedType === "tokenizedEquity" + if (feed.docs?.hidden && !isTokenizedEquity) return false + + const isDeprecating = ecosystem === "deprecating" + const isStreams = + dataFeedType === "streamsCrypto" || + dataFeedType === "streamsRwa" || + dataFeedType === "streamsNav" || + dataFeedType === "streamsExRate" || + dataFeedType === "streamsBacked" + const isSmartData = dataFeedType === "smartdata" + const isRates = dataFeedType === "rates" + const isUSGovernmentMacroeconomicData = dataFeedType === "usGovernmentMacroeconomicData" + + // =========================================================================== + // 2. Ecosystem-Specific Logic + // =========================================================================== + // If we are in the "deprecating" ecosystem view, ONLY show deprecating feeds. + if (isDeprecating && feed.feedCategory !== "deprecating") return false + + let isVisible = false + + // =========================================================================== + // 3. Data Feed Type Logic (Base Visibility) + // =========================================================================== + // Determine if the feed belongs to the requested category (Streams, SmartData, etc.) + + if (isStreams) { + // Streams feeds must be verified contracts + if (feed.contractType !== "verifier") return false + + if (dataFeedType === "streamsCrypto") { + isVisible = ["Crypto", "Crypto-DEX"].includes(feed.docs?.feedType) + } else if (dataFeedType === "streamsRwa") { + isVisible = ["Equities", "Forex", "Datalink"].includes(feed.docs?.feedType) + } else if (dataFeedType === "streamsNav") { + isVisible = feed.docs?.feedType === "Net Asset Value" + } else if (dataFeedType === "streamsExRate") { + isVisible = feed.docs?.productTypeCode === "ExRate" + } else if (dataFeedType === "streamsBacked") { + isVisible = feed.docs?.feedType === "Tokenized Equities" + } + } else if (isSmartData) { + // SmartData feeds (excluding DS delivery channel) + if (feed.docs?.deliveryChannelCode === "DS") isVisible = false + else + isVisible = + feed.docs?.isMVR === true || + feed.docs?.productType === "Proof of Reserve" || + feed.docs?.productType === "NAVLink" || + feed.docs?.productType === "SmartAUM" + } else if (isUSGovernmentMacroeconomicData) { + isVisible = feed.docs?.productTypeCode === "RefMacro" + } else if (isRates) { + isVisible = feed.docs?.productType === "Rates" || feed.docs?.productSubType === "Realized Volatility" + } else if (isTokenizedEquity) { + // Tokenized equity feeds (Ondo and other providers) + // Only show true tokenized equity feeds (primaryTokenizedPrice) on this page. + // Generic equity price feeds (e.g. RefPrice) are excluded — they are not + // tokenized equity instruments and should not appear here. + isVisible = + feed.docs?.assetClass === "Equity" && + feed.contractType !== "verifier" && + feed.docs?.productTypeCode === "primaryTokenizedPrice" + } else { + // Default data feeds (Standard Price Feeds) + // Exclude all special types to leave only the standard feeds + isVisible = + !feed.docs?.porType && + feed.contractType !== "verifier" && + feed.docs?.productType !== "Proof of Reserve" && + feed.docs?.productType !== "NAVLink" && + feed.docs?.productType !== "SmartAUM" && + feed.docs?.productType !== "Rates" && + feed.docs?.productTypeCode !== "RefMacro" && + !feed.docs?.isMVR + } + + if (!isVisible) return false + + // =========================================================================== + // 4. Optional Filters (User Selection) + // =========================================================================== + // Apply additional filters selected by the user in the UI + + // Filter: Show only DEX feeds (Streams Crypto) + if (dataFeedType === "streamsCrypto" && options.showOnlyDEXFeeds) { + if (feed.docs?.feedType !== "Crypto-DEX") return false + } + + // Filter: RWA Category & Schema (Streams RWA) + if (dataFeedType === "streamsRwa") { + if (options.streamCategoryFilter === "datalink" && feed.docs.feedType !== "Datalink") return false + if (options.streamCategoryFilter === "equities" && feed.docs.feedType !== "Equities") return false + if (options.streamCategoryFilter === "forex" && feed.docs.feedType !== "Forex") return false + + const schemaVersion = getSchemaVersion(feed) + if (options.rwaSchemaFilter === "v8" && schemaVersion !== "v8") return false + if (options.rwaSchemaFilter === "v11" && schemaVersion !== "v11") return false + } + + // Filter: Show only MVR feeds (SmartData) + if (isSmartData && options.showOnlyMVRFeeds) { + if (feed.docs?.isMVR !== true) return false + } + + // Filter: Tokenized equity feeds by provider + if (isTokenizedEquity && options.tokenizedEquityProvider) { + const provider = options.tokenizedEquityProvider.toLowerCase() + + if (provider === "ondo") { + // Ondo tokenized equity feeds are identified by BOTH: + // 1. "Ondo" in assetName — distinguishes from other tokenized equity providers + // 2. productTypeCode "primaryTokenizedPrice" — distinguishes from ONDO token feeds + // Neither signal alone is sufficient: other providers may share the productTypeCode, + // and ONDO governance token feeds may contain "Ondo" in the asset name. + const assetName = (feed.assetName || "").toLowerCase() + const isOndoFeed = assetName.includes("ondo") && feed.docs?.productTypeCode === "primaryTokenizedPrice" + if (!isOndoFeed) return false + } + // Add more provider patterns here as needed + } + + return true +} diff --git a/src/features/landing/sections/ProductTabs.astro b/src/features/landing/sections/ProductTabs.astro new file mode 100644 index 00000000000..5e7a9b97b8d --- /dev/null +++ b/src/features/landing/sections/ProductTabs.astro @@ -0,0 +1,8 @@ +--- +import { Tabs } from "../components/Tabs" +import productTabs from "./ProductTabs.module.css" +--- + +
+ +
diff --git a/src/features/landing/sections/ProductTabs.module.css b/src/features/landing/sections/ProductTabs.module.css new file mode 100644 index 00000000000..8eed3c59bb1 --- /dev/null +++ b/src/features/landing/sections/ProductTabs.module.css @@ -0,0 +1,4 @@ +.container { + padding-top: var(--space-6x); + padding-bottom: 60px; +} diff --git a/src/features/notifications/data/index.ts b/src/features/notifications/data/index.ts index 58e1b3af575..c5e24f1533f 100644 --- a/src/features/notifications/data/index.ts +++ b/src/features/notifications/data/index.ts @@ -5,5 +5,5 @@ export const NotificationData: BannerContent = { type: "info", linkText: "Start Building.", linkUrl: - "https://chain.link/chainlink-runtime-environment/?utm_source=chainlink-docs&utm_campaign=smartcon-2025&utm_medium=referral", + "https://chain.link/chainlink-runtime-environment?utm_campaign=global-app-banner&utm_medium=referral&utm_source=docs.chain.link", } diff --git a/src/features/redirects/redirects.json b/src/features/redirects/redirects.json index a059180af4f..a00a4d4d04b 100644 --- a/src/features/redirects/redirects.json +++ b/src/features/redirects/redirects.json @@ -2187,7 +2187,7 @@ }, { "source": "ccip/tutorials/get-status-offchain", - "destination": "ccip/tutorials/evm/offchain/get-status-offchain", + "destination": "ccip/tutorials/offchain", "statusCode": 301 }, { @@ -2195,11 +2195,6 @@ "destination": "ccip/tutorials/evm/manual-execution", "statusCode": 301 }, - { - "source": "ccip/tutorials/offchain", - "destination": "ccip/tutorials/evm/offchain", - "statusCode": 301 - }, { "source": "ccip/tutorials/programmable-token-transfers-defensive", "destination": "ccip/tutorials/evm/programmable-token-transfers-defensive", @@ -2237,7 +2232,7 @@ }, { "source": "ccip/tutorials/transfer-tokens-from-eoa", - "destination": "ccip/tutorials/evm/offchain/transfer-tokens-from-eoa", + "destination": "ccip/tutorials/offchain", "statusCode": 301 }, { @@ -2567,7 +2562,107 @@ }, { "source": "ccip/tools-resources/tools", - "destination": "ccip/tools-resources/cli", + "destination": "https://docs.chain.link/ccip/tools/", + "statusCode": 301 + }, + { + "source": "ccip/tools-resources/sdk", + "destination": "https://docs.chain.link/ccip/tools/", + "statusCode": 301 + }, + { + "source": "ccip/tools-resources/cli", + "destination": "https://docs.chain.link/ccip/tools/", + "statusCode": 301 + }, + { + "source": "ccip/ccip-javascript-sdk", + "destination": "https://docs.chain.link/ccip/tools/", + "statusCode": 301 + }, + { + "source": "ccip/tools-resources/ccip-tools", + "destination": "https://docs.chain.link/ccip/tools/", + "statusCode": 301 + }, + { + "source": "ccip/tutorials/evm/offchain", + "destination": "ccip/tutorials/offchain", + "statusCode": 301 + }, + { + "source": "ccip/tutorials/evm/offchain/transfer-tokens-from-eoa", + "destination": "ccip/tutorials/offchain", + "statusCode": 301 + }, + { + "source": "ccip/tutorials/evm/offchain/get-status-offchain", + "destination": "ccip/tutorials/offchain", + "statusCode": 301 + }, + { + "source": "ccip/tutorials/evm/offchain/ccip-tools", + "destination": "ccip/tutorials/offchain", + "statusCode": 301 + }, + { + "source": "ccip/tutorials/evm/offchain/ccip-tools/transfer-tokens-from-eoa", + "destination": "ccip/tutorials/offchain", + "statusCode": 301 + }, + { + "source": "ccip/tutorials/evm/offchain/ccip-tools/get-status-offchain", + "destination": "ccip/tutorials/offchain", + "statusCode": 301 + }, + { + "source": "ccip/tutorials/evm/offchain/ccip-tools/get-supported-tokens", + "destination": "ccip/tutorials/offchain", + "statusCode": 301 + }, + { + "source": "ccip/concepts/architecture/offchain/risk-management-network", + "destination": "ccip/concepts/architecture/offchain/overview", + "statusCode": 301 + }, + { + "source": "cre/guides/workflow/using-evm-client/supported-networks", + "destination": "cre/supported-networks", + "statusCode": 301 + }, + { + "source": "cre/guides/workflow/using-evm-client/supported-networks-go", + "destination": "cre/supported-networks-go", + "statusCode": 301 + }, + { + "source": "cre/guides/workflow/using-evm-client/supported-networks-ts", + "destination": "cre/supported-networks-ts", + "statusCode": 301 + }, + { + "source": "cre/concepts/time-in-cre", + "destination": "cre/guides/workflow/time-in-workflows", + "statusCode": 301 + }, + { + "source": "cre/concepts/time-in-cre-go", + "destination": "cre/guides/workflow/time-in-workflows-go", + "statusCode": 301 + }, + { + "source": "cre/concepts/time-in-cre-ts", + "destination": "cre/guides/workflow/time-in-workflows-ts", + "statusCode": 301 + }, + { + "source": "cre/getting-started/conclusion", + "destination": "cre/getting-started/before-you-build", + "statusCode": 301 + }, + { + "source": "cre/concepts/random-in-cre", + "destination": "cre/guides/workflow/using-randomness", "statusCode": 301 } ] diff --git a/src/features/streams/components/StreamsPage.astro b/src/features/streams/components/StreamsPage.astro new file mode 100644 index 00000000000..ad49e83bc6e --- /dev/null +++ b/src/features/streams/components/StreamsPage.astro @@ -0,0 +1,88 @@ +--- +import { FeedList, DataFeedType } from "@features/feeds/components/FeedList" +import { Aside } from "@components" +export type Props = { + initialNetwork?: string + ecosystem?: string + dataFeedType?: DataFeedType + allowNetworkTableExpansion?: boolean + defaultNetworkTableExpanded?: boolean +} +import { getServerSideChainMetadata } from "~/features/data/api/backend" +import { CHAINS, ALL_CHAINS } from "~/features/data/chains" + +const { initialNetwork, ecosystem, dataFeedType, allowNetworkTableExpansion, defaultNetworkTableExpanded } = Astro.props + +// Skip cache for deprecating page to always fetch fresh data +const isDeprecating = ecosystem === "deprecating" +const initialCache = await getServerSideChainMetadata([...CHAINS, ...ALL_CHAINS], isDeprecating) +--- + +{ + ecosystem === "deprecating" ? ( + <> +

+ Due to the rapid evolution of onchain ecosystems, Chainlink Data Streams feeds are regularly evaluated to ensure + that network usage, cost efficiency, and long-term sustainability remain aligned with the needs of the + ecosystem. +

+

+ As part of this ongoing evaluation, Data Streams feeds without publicly known active users may be scheduled for + deprecation. Doing so not only allows us to keep our Data Streams offering aligned with today's market + landscape, but it also helps to reduce unnecessary costs incurred by Chainlink node operators. This process is + part of a broader ecosystem initiative to maximize the adoption of the Chainlink network while optimizing for + cost-efficiency and long-term economic sustainability. +

+

+ For status updates regarding Data Streams and Data Feeds, users should join the official{" "} + Chainlink Discord and subscribe to the{" "} + data-feeds-user-notifications channel. +

+

+ A list of Data Streams feeds designated for deprecation, along with their corresponding shutdown date, can be + found below. +

+ + + ) : ( + <> +

+ To learn how to use Data Streams, see the{" "} + Fetch and decode reports tutorial. +

+

+ For LINK token and Faucet details, see the{" "} + LINK Token Contracts page. +

+ + + + ) +} + + diff --git a/src/features/tokenized-equity-feeds/common/TokenizedEquityFeeds.astro b/src/features/tokenized-equity-feeds/common/TokenizedEquityFeeds.astro new file mode 100644 index 00000000000..04a7d838aa5 --- /dev/null +++ b/src/features/tokenized-equity-feeds/common/TokenizedEquityFeeds.astro @@ -0,0 +1,10 @@ +--- +import TokenizedEquityNoteComponent from "./tokenizedEquityNote.mdx" + +export type Props = { + section?: "tokenizedEquityNote" +} +const { section } = Astro.props as Props +--- + +{section === "tokenizedEquityNote" && } diff --git a/src/features/tokenized-equity-feeds/common/tokenizedEquityNote.mdx b/src/features/tokenized-equity-feeds/common/tokenizedEquityNote.mdx new file mode 100644 index 00000000000..671554c158b --- /dev/null +++ b/src/features/tokenized-equity-feeds/common/tokenizedEquityNote.mdx @@ -0,0 +1,11 @@ +import { Aside } from "@components" + + diff --git a/src/features/utils/index.ts b/src/features/utils/index.ts index 5b9732cd5a8..bc90c65c621 100644 --- a/src/features/utils/index.ts +++ b/src/features/utils/index.ts @@ -9,8 +9,9 @@ import { ChainFamily, } from "@config/index.ts" import { CCIP_TOKEN_ICON_MAPPINGS } from "@config/data/ccip/tokenIconMappings.ts" +import { TOKEN_ICONS_PATH } from "@config/cdn.ts" import { toQuantity } from "ethers" -import referenceChains from "src/scripts/reference/chains.json" with { type: "json" } +import referenceChains from "~/scripts/reference/chains.json" with { type: "json" } interface AddEthereumChainParameter { chainId: string @@ -117,10 +118,28 @@ export const getChainTypeAndFamily = (supportedChain: SupportedChain): ChainType chainFamily = "evm" break case "aptos": - chainFamily = "mvm" + chainFamily = "aptos" + break + case "sui": + chainFamily = "sui" break case "solana": - chainFamily = "svm" + chainFamily = "solana" + break + case "tron": + chainFamily = "tron" + break + case "canton": + chainFamily = "canton" + break + case "ton": + chainFamily = "ton" + break + case "stellar": + chainFamily = "stellar" + break + case "starknet": + chainFamily = "starknet" break default: throw new Error(`Unknown chain type: ${chainType}`) @@ -156,10 +175,11 @@ export const getTokenIconUrl = (token: string, size = 40) => { // Request appropriately sized images from CloudFront // For 40x40 display, request 80x80 for retina displays (2x) - return `https://d2f70xi62kby8n.cloudfront.net/tokens/${transformTokenName(iconIdentifier)}.webp?auto=compress%2Cformat&q=60&w=${size}&h=${size}&fit=cover` + return `${TOKEN_ICONS_PATH}/${transformTokenName(iconIdentifier)}.webp?auto=compress%2Cformat&q=60&w=${size}&h=${size}&fit=cover` } export const fallbackTokenIconUrl = "/assets/icons/generic-token.svg" +export const fallbackVerifierIconUrl = "/assets/icons/generic-verifier.svg" export const getChainId = (supportedChain: SupportedChain) => { const technology = chainToTechnology[supportedChain] @@ -276,6 +296,8 @@ export const directoryToSupportedChain = (chainInRdd: string): SupportedChain => return "SONEIUM_MINATO" case "ethereum-testnet-holesky": return "ETHEREUM_HOLESKY" + case "ethereum-testnet-hoodi": + return "ETHEREUM_HOODI" case "polkadot-mainnet-astar": return "ASTAR_MAINNET" case "polkadot-testnet-astar-shibuya": @@ -302,8 +324,10 @@ export const directoryToSupportedChain = (chainInRdd: string): SupportedChain => return "SHIBARIUM_PUPPYNET" case "sonic-mainnet": return "SONIC_MAINNET" + case "sonic-testnet": + return "SONIC_TESTNET" case "sonic-testnet-blaze": - return "SONIC_BLAZE" + return "SONIC_TESTNET_BLAZE" case "bitcoin-mainnet-bob-1": return "BOB_MAINNET" case "bitcoin-testnet-sepolia-bob-1": @@ -402,6 +426,8 @@ export const directoryToSupportedChain = (chainInRdd: string): SupportedChain => return "0G_MAINNET" case "megaeth-testnet": return "MEGAETH_TESTNET" + case "megaeth-mainnet": + return "MEGAETH_MAINNET" case "mind-testnet": return "MIND_NETWORK_TESTNET" case "mind-mainnet": @@ -514,6 +540,37 @@ export const directoryToSupportedChain = (chainInRdd: string): SupportedChain => return "NEXON_HENESYS_MAINNET" case "pharos-atlantic-testnet": return "PHAROS_ATLANTIC_TESTNET" + case "pharos-mainnet": + return "PHAROS_MAINNET" + case "morph-mainnet": + return "MORPH_MAINNET" + case "ethereum-testnet-hoodi-morph": + return "MORPH_HOODI_TESTNET" + case "jovay-mainnet": + return "JOVAY_MAINNET" + case "jovay-testnet": + return "JOVAY_TESTNET" + case "stable-mainnet": + return "STABLE_MAINNET" + case "tempo-testnet": + return "TEMPO_TESTNET" + case "arc-testnet": + return "ARC_NETWORK_TESTNET" + case "doge-os-chikyu-testnet": + case "dogeos-testnet-chikyu": + return "DOGE_OS_CHIKYU_TESTNET" + case "adi-testnet": + return "ADI_NETWORK_AB_TESTNET" + case "adi-mainnet": + return "ADI_NETWORK_MAINNET" + case "edge-testnet": + return "EDGE_TESTNET" + case "edge-mainnet": + return "EDGE_MAINNET" + case "robinhood-testnet": + return "ROBINHOOD_TESTNET" + case "ton-testnet": + return "TON_TESTNET" default: throw Error(`Chain not found ${chainInRdd}`) } @@ -595,6 +652,8 @@ export const supportedChainToChainInRdd = (supportedChain: SupportedChain): stri return "ethereum-testnet-sepolia-soneium-1" case "ETHEREUM_HOLESKY": return "ethereum-testnet-holesky" + case "ETHEREUM_HOODI": + return "ethereum-testnet-hoodi" case "ASTAR_MAINNET": return "polkadot-mainnet-astar" case "ASTAR_SHIBUYA": @@ -621,7 +680,9 @@ export const supportedChainToChainInRdd = (supportedChain: SupportedChain): stri return "shibarium-testnet-puppynet" case "SONIC_MAINNET": return "sonic-mainnet" - case "SONIC_BLAZE": + case "SONIC_TESTNET": + return "sonic-testnet" + case "SONIC_TESTNET_BLAZE": return "sonic-testnet-blaze" case "BOB_MAINNET": return "bitcoin-mainnet-bob-1" @@ -717,6 +778,8 @@ export const supportedChainToChainInRdd = (supportedChain: SupportedChain): stri return "0g-mainnet" case "MEGAETH_TESTNET": return "megaeth-testnet" + case "MEGAETH_MAINNET": + return "megaeth-mainnet" case "MIND_NETWORK_TESTNET": return "mind-testnet" case "MIND_NETWORK_MAINNET": @@ -827,6 +890,36 @@ export const supportedChainToChainInRdd = (supportedChain: SupportedChain): stri return "nexon-mainnet-henesys" case "PHAROS_ATLANTIC_TESTNET": return "pharos-atlantic-testnet" + case "PHAROS_MAINNET": + return "pharos-mainnet" + case "MORPH_MAINNET": + return "morph-mainnet" + case "MORPH_HOODI_TESTNET": + return "ethereum-testnet-hoodi-morph" + case "JOVAY_MAINNET": + return "jovay-mainnet" + case "JOVAY_TESTNET": + return "jovay-testnet" + case "STABLE_MAINNET": + return "stable-mainnet" + case "TEMPO_TESTNET": + return "tempo-testnet" + case "ARC_NETWORK_TESTNET": + return "arc-testnet" + case "DOGE_OS_CHIKYU_TESTNET": + return "dogeos-testnet-chikyu" + case "ADI_NETWORK_AB_TESTNET": + return "adi-testnet" + case "ADI_NETWORK_MAINNET": + return "adi-mainnet" + case "EDGE_TESTNET": + return "edge-testnet" + case "EDGE_MAINNET": + return "edge-mainnet" + case "ROBINHOOD_TESTNET": + return "robinhood-testnet" + case "TON_TESTNET": + return "ton-testnet" default: throw Error(`Chain not found ${supportedChain}`) } diff --git a/src/features/utils/networkIcons.ts b/src/features/utils/networkIcons.ts index a16711288ad..2ab3ec73b4b 100644 --- a/src/features/utils/networkIcons.ts +++ b/src/features/utils/networkIcons.ts @@ -39,5 +39,5 @@ export const normalizeTechnologyName = (technology: string): string => { } // Default: convert to lowercase and replace underscores with hyphens - return technology.toLowerCase().replace(/_/g, "-") + return technology.toLowerCase().replace(/[_ ]/g, "-") } diff --git a/src/features/vrf/v2/components/CostTable.tsx b/src/features/vrf/v2/components/CostTable.tsx index 44debc53d9d..72ffd702f08 100644 --- a/src/features/vrf/v2/components/CostTable.tsx +++ b/src/features/vrf/v2/components/CostTable.tsx @@ -4,7 +4,7 @@ import "./costTable.css" import { useCallback, useEffect, useReducer } from "preact/hooks" import { parseUnits, formatUnits, parseEther } from "ethers" import button from "@chainlink/design-system/button.module.css" -import { commify } from "~/utils/index.js" +import { commify } from "~/utils/number.ts" interface Props { method: "vrfSubscription" | "vrfDirectFunding" diff --git a/src/features/vrf/v2/components/Dropdown.tsx b/src/features/vrf/v2/components/Dropdown.tsx index 612b025fbf8..087d2c691a8 100644 --- a/src/features/vrf/v2/components/Dropdown.tsx +++ b/src/features/vrf/v2/components/Dropdown.tsx @@ -82,7 +82,7 @@ export const Dropdown = ({ placeholder = "Select a network...", options }: Props onInput={handleInputChange} /> Caret icon diff --git a/src/hooks/useLaneTokens.ts b/src/hooks/useLaneTokens.ts new file mode 100644 index 00000000000..c6d503cbc0e --- /dev/null +++ b/src/hooks/useLaneTokens.ts @@ -0,0 +1,64 @@ +import { useMemo } from "react" +import { Environment, LaneFilter, Version } from "~/config/data/ccip/types.ts" +import { getTokenData } from "~/config/data/ccip/data.ts" +import { getTokenIconUrl } from "~/features/utils/index.ts" +import { realtimeDataService } from "~/lib/ccip/services/realtime-data-instance.ts" + +export interface ProcessedToken { + id: string + data: ReturnType + logo: string + rateLimits: { + standard: { capacity: string; rate: string; isEnabled: boolean } | null + ftf: { capacity: string; rate: string; isEnabled: boolean } | null + } + isPaused: boolean +} + +interface UseLaneTokensParams { + tokens: string[] | undefined + environment: Environment + rateLimitsData: Record + inOutbound: LaneFilter + searchQuery: string +} + +export function useLaneTokens({ tokens, environment, rateLimitsData, inOutbound, searchQuery }: UseLaneTokensParams) { + const processedTokens = useMemo(() => { + if (!tokens) return [] + + const direction = inOutbound === LaneFilter.Outbound ? "out" : "in" + + return tokens + .filter((token) => token.toLowerCase().includes(searchQuery.toLowerCase())) + .map((token) => { + const data = getTokenData({ + environment, + version: Version.V1_2_0, + tokenId: token || "", + }) + + // Skip tokens with no data + if (!Object.keys(data).length) return null + + const logo = getTokenIconUrl(token) + const tokenLaneData = rateLimitsData[token] + const allLimits = realtimeDataService.getAllRateLimitsForDirection(tokenLaneData?.rateLimits, direction) + const isPaused = allLimits.standard?.capacity === "0" + + return { + id: token, + data, + logo, + rateLimits: allLimits, + isPaused, + } + }) + .filter((token): token is ProcessedToken => token !== null) + }, [tokens, environment, rateLimitsData, inOutbound, searchQuery]) + + return { + tokens: processedTokens, + count: tokens?.length ?? 0, + } +} diff --git a/src/hooks/useMultiLaneRateLimits.ts b/src/hooks/useMultiLaneRateLimits.ts new file mode 100644 index 00000000000..997ba61a430 --- /dev/null +++ b/src/hooks/useMultiLaneRateLimits.ts @@ -0,0 +1,78 @@ +import { useState, useEffect } from "react" +import type { TokenLaneData, Environment } from "~/lib/ccip/types/index.ts" +import { realtimeDataService } from "~/lib/ccip/services/realtime-data-instance.ts" + +interface LaneConfig { + source: string + destination: string +} + +interface UseMultiLaneRateLimitsResult { + rateLimitsMap: Record> + isLoading: boolean + error: Error | null +} + +/** + * Custom hook to fetch rate limits for multiple lanes + * Useful for components that need to display rate limits across multiple lanes + * @param lanes - Array of lane configurations with source and destination + * @param environment - Network environment (mainnet/testnet) + * @returns Map of rate limits keyed by lane (source-destination), loading state, and error state + */ +export function useMultiLaneRateLimits(lanes: LaneConfig[], environment: Environment): UseMultiLaneRateLimitsResult { + const [rateLimitsMap, setRateLimitsMap] = useState>>({}) + const [isLoading, setIsLoading] = useState(true) + const [error, setError] = useState(null) + + useEffect(() => { + let isMounted = true + + const fetchAllRateLimits = async () => { + setIsLoading(true) + setError(null) + + try { + const newRateLimits: Record> = {} + + // Fetch all lanes in parallel + const promises = lanes.map(async ({ source, destination }) => { + const laneKey = `${source}-${destination}` + const response = await realtimeDataService.getLaneSupportedTokens(source, destination, environment) + + if (response?.data) { + newRateLimits[laneKey] = response.data + } + }) + + await Promise.all(promises) + + if (isMounted) { + setRateLimitsMap(newRateLimits) + } + } catch (err) { + if (isMounted) { + console.error("Error fetching multi-lane rate limits:", err) + setError(err instanceof Error ? err : new Error("Failed to fetch rate limits")) + setRateLimitsMap({}) + } + } finally { + if (isMounted) { + setIsLoading(false) + } + } + } + + if (lanes.length > 0) { + fetchAllRateLimits() + } else { + setIsLoading(false) + } + + return () => { + isMounted = false + } + }, [lanes, environment]) + + return { rateLimitsMap, isLoading, error } +} diff --git a/src/hooks/useQueryString.ts b/src/hooks/useQueryString.ts index 9cdabeb9c7d..115229cbdd7 100644 --- a/src/hooks/useQueryString.ts +++ b/src/hooks/useQueryString.ts @@ -15,12 +15,13 @@ export const setQueryStringValue = (searchParamKey: string, value: SearchParamVa } // Preserve the hash fragment if it exists const hashFragment = window.location.hash + const queryString = currentSearchParams.toString() const newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + - `?${currentSearchParams.toString()}` + + (queryString ? `?${queryString}` : "") + hashFragment window.history.replaceState({ path: newurl }, "", newurl) diff --git a/src/hooks/useTokenFinality.ts b/src/hooks/useTokenFinality.ts new file mode 100644 index 00000000000..fd0e521ae52 --- /dev/null +++ b/src/hooks/useTokenFinality.ts @@ -0,0 +1,66 @@ +import { useState, useEffect } from "react" +import type { CustomFinalityConfig, Environment, OutputKeyType } from "~/lib/ccip/types/index.ts" +import { realtimeDataService } from "~/lib/ccip/services/realtime-data-instance.ts" + +interface UseTokenFinalityResult { + finalityData: Record + isLoading: boolean + error: Error | null +} + +/** + * Custom hook to fetch token finality data across all chains + * @param tokenCanonicalSymbol - Token canonical symbol (e.g., "BETS", "LINK") + * @param environment - Network environment (mainnet/testnet) + * @param outputKey - Format to use for displaying chain keys (optional) + * @returns Finality data for all chains, loading state, and error state + */ +export function useTokenFinality( + tokenCanonicalSymbol: string, + environment: Environment, + outputKey?: OutputKeyType +): UseTokenFinalityResult { + const [finalityData, setFinalityData] = useState>({}) + const [isLoading, setIsLoading] = useState(true) + const [error, setError] = useState(null) + + useEffect(() => { + let isMounted = true + + const fetchFinalityData = async () => { + setIsLoading(true) + setError(null) + + try { + const result = await realtimeDataService.getTokenFinality(tokenCanonicalSymbol, environment, outputKey) + + if (isMounted) { + if (result?.data) { + setFinalityData(result.data) + } else { + console.warn("[useTokenFinality] No data received") + setFinalityData({}) + } + } + } catch (err) { + if (isMounted) { + console.error("Failed to fetch token finality data:", err) + setError(err instanceof Error ? err : new Error("Failed to fetch token finality")) + setFinalityData({}) + } + } finally { + if (isMounted) { + setIsLoading(false) + } + } + } + + fetchFinalityData() + + return () => { + isMounted = false + } + }, [tokenCanonicalSymbol, environment, outputKey]) + + return { finalityData, isLoading, error } +} diff --git a/src/hooks/useTokenRateLimits.ts b/src/hooks/useTokenRateLimits.ts new file mode 100644 index 00000000000..f920e908095 --- /dev/null +++ b/src/hooks/useTokenRateLimits.ts @@ -0,0 +1,65 @@ +import { useState, useEffect } from "react" +import type { TokenLaneData, Environment } from "~/lib/ccip/types/index.ts" +import { realtimeDataService } from "~/lib/ccip/services/realtime-data-instance.ts" + +interface UseTokenRateLimitsResult { + rateLimits: Record + isLoading: boolean + error: Error | null +} + +/** + * Custom hook to fetch token rate limits for a specific lane + * @param source - Source chain internal ID + * @param destination - Destination chain internal ID + * @param environment - Network environment (mainnet/testnet) + * @returns Rate limits data, loading state, and error state + */ +export function useTokenRateLimits( + source: string, + destination: string, + environment: Environment +): UseTokenRateLimitsResult { + const [rateLimits, setRateLimits] = useState>({}) + const [isLoading, setIsLoading] = useState(true) + const [error, setError] = useState(null) + + useEffect(() => { + let isMounted = true + + const fetchRateLimits = async () => { + setIsLoading(true) + setError(null) + + try { + const response = await realtimeDataService.getLaneSupportedTokens(source, destination, environment) + + if (isMounted) { + if (response?.data) { + setRateLimits(response.data) + } else { + setRateLimits({}) + } + } + } catch (err) { + if (isMounted) { + console.error("Error fetching rate limits:", err) + setError(err instanceof Error ? err : new Error("Failed to fetch rate limits")) + setRateLimits({}) + } + } finally { + if (isMounted) { + setIsLoading(false) + } + } + } + + fetchRateLimits() + + return () => { + isMounted = false + } + }, [source, destination, environment]) + + return { rateLimits, isLoading, error } +} diff --git a/src/layouts/DocsLayout.astro b/src/layouts/DocsLayout.astro index 199dca3fcde..b877a0763c9 100644 --- a/src/layouts/DocsLayout.astro +++ b/src/layouts/DocsLayout.astro @@ -95,12 +95,7 @@ const howToSteps = initialHeadings {whatsNext && }
diff --git a/src/lib/api/cacheHeaders.ts b/src/lib/api/cacheHeaders.ts new file mode 100644 index 00000000000..9b7b6be9c52 --- /dev/null +++ b/src/lib/api/cacheHeaders.ts @@ -0,0 +1,64 @@ +/** + * Shared cache and CORS header configurations for API endpoints + * + * Cache Strategy: + * - 5-minute CDN cache (s-max-age=300) + * - Stale-while-revalidate for graceful degradation + * - CDN-specific headers for Vercel optimization + * - No browser cache (CDN-only caching) + * + * CORS Policy: + * - Open access (Access-Control-Allow-Origin: *) + * - Public, read-only API designed for cross-origin consumption + */ + +/** + * CORS headers for cross-origin access + * Enables browser-based clients (dApps, scripts) to consume the API + */ +export const corsHeaders = { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type", +} + +/** + * Standard cache headers for all API endpoints + * - CDN cache: 5 minutes + * - Serves stale content while revalidating in background + * - Optimized for Vercel CDN + */ +export const standardCacheHeaders = { + "Cache-Control": "s-max-age=300, stale-while-revalidate", + "CDN-Cache-Control": "max-age=300", + "Vercel-CDN-Cache-Control": "max-age=300", +} + +/** + * Cache headers for text/plain responses + * Used by: /api/page-markdown + */ +export const textPlainHeaders = { + "Content-Type": "text/plain; charset=utf-8", + ...corsHeaders, + ...standardCacheHeaders, +} + +/** + * Cache headers for application/json responses + * Used by: /api/ccip/v1/* endpoints + */ +export const jsonHeaders = { + "Content-Type": "application/json", + ...corsHeaders, + ...standardCacheHeaders, +} + +/** + * Common headers without caching directives + * For endpoints that need custom cache control + */ +export const commonHeaders = { + "Content-Type": "application/json", + ...corsHeaders, +} diff --git a/src/lib/ccip/__tests__/validate-internal-id-format.test.ts b/src/lib/ccip/__tests__/validate-internal-id-format.test.ts new file mode 100644 index 00000000000..f5d22ab6f1d --- /dev/null +++ b/src/lib/ccip/__tests__/validate-internal-id-format.test.ts @@ -0,0 +1,65 @@ +import { describe, it, expect } from "@jest/globals" +import { validateInternalIdFormat, CCIPError } from "~/lib/ccip/utils.ts" + +describe("validateInternalIdFormat", () => { + describe("valid inputs", () => { + it("should accept 'selector' format", () => { + expect(validateInternalIdFormat("selector")).toBe("selector") + }) + + it("should accept 'directory' format", () => { + expect(validateInternalIdFormat("directory")).toBe("directory") + }) + }) + + describe("default behavior", () => { + it("should default to 'selector' when undefined", () => { + expect(validateInternalIdFormat(undefined)).toBe("selector") + }) + + it("should default to 'selector' for empty string", () => { + // Empty string is falsy, should trigger default + expect(validateInternalIdFormat("")).toBe("selector") + }) + }) + + describe("invalid inputs", () => { + it("should throw CCIPError for 'invalid'", () => { + expect(() => validateInternalIdFormat("invalid")).toThrow(CCIPError) + }) + + it("should throw CCIPError for 'chainId'", () => { + expect(() => validateInternalIdFormat("chainId")).toThrow(CCIPError) + }) + + it("should throw CCIPError for 'selectorName'", () => { + expect(() => validateInternalIdFormat("selectorName")).toThrow(CCIPError) + }) + + it("should throw CCIPError for 'internal'", () => { + expect(() => validateInternalIdFormat("internal")).toThrow(CCIPError) + }) + + it("should throw CCIPError for 'SELECTOR' (case-sensitive)", () => { + expect(() => validateInternalIdFormat("SELECTOR")).toThrow(CCIPError) + }) + + it("should throw CCIPError for 'DIRECTORY' (case-sensitive)", () => { + expect(() => validateInternalIdFormat("DIRECTORY")).toThrow(CCIPError) + }) + }) + + describe("error details", () => { + it("should throw CCIPError with correct message", () => { + try { + validateInternalIdFormat("invalid") + fail("Expected CCIPError to be thrown") + } catch (error) { + expect(error).toBeInstanceOf(CCIPError) + const ccipError = error as CCIPError + expect(ccipError.message).toBe('internalIdFormat must be "directory" or "selector".') + expect(ccipError.statusCode).toBe(400) + } + }) + }) +}) diff --git a/src/pages/api/ccip/faucet/adapters/index.ts b/src/lib/ccip/faucet/adapters/index.ts similarity index 80% rename from src/pages/api/ccip/faucet/adapters/index.ts rename to src/lib/ccip/faucet/adapters/index.ts index 1a27125ced8..ac5723acc41 100644 --- a/src/pages/api/ccip/faucet/adapters/index.ts +++ b/src/lib/ccip/faucet/adapters/index.ts @@ -1,5 +1,5 @@ import { ChainFamily } from "@config/types.ts" -import { FamilyAdapter } from "@api/ccip/types/faucet.ts" +import { FamilyAdapter } from "~/lib/ccip/types/faucet.ts" import { SvmAdapter } from "./svm.ts" export const prerender = false @@ -11,7 +11,7 @@ export const prerender = false export class FaucetAdapterFactory { static getAdapter(family: ChainFamily): FamilyAdapter { switch (family) { - case "svm": + case "solana": return new SvmAdapter() default: throw new Error(`Faucet not available for chain family: ${family}`) @@ -20,6 +20,6 @@ export class FaucetAdapterFactory { } // Re-export types and adapters -export type { FamilyAdapter } from "@api/ccip/types/faucet.ts" +export type { FamilyAdapter } from "~/lib/ccip/types/faucet.ts" export { SvmAdapter } from "./svm.ts" export { SvmDripAdapter } from "./svm-drip.ts" diff --git a/src/pages/api/ccip/faucet/adapters/svm-drip.ts b/src/lib/ccip/faucet/adapters/svm-drip.ts similarity index 91% rename from src/pages/api/ccip/faucet/adapters/svm-drip.ts rename to src/lib/ccip/faucet/adapters/svm-drip.ts index 4fc62dba32a..eb0fb9ae979 100644 --- a/src/pages/api/ccip/faucet/adapters/svm-drip.ts +++ b/src/lib/ccip/faucet/adapters/svm-drip.ts @@ -2,9 +2,9 @@ import { randomUUID } from "node:crypto" import { createSolanaLogger } from "@lib/logging/index.js" import type { Logger } from "@lib/logging/index.js" import { ensureSolAddress } from "@lib/solana/index.js" -import { ChainConfigurationService } from "@api/ccip/services/chain-config.ts" -import { DripOrchestrator, type DripParams, type DripResult } from "@api/ccip/services/faucet/drip-orchestrator.ts" -import type { FaucetChainConfig } from "@api/ccip/types/faucet.ts" +import { ChainConfigurationService } from "~/lib/ccip/services-api/chain-config.ts" +import { DripOrchestrator, type DripParams, type DripResult } from "~/lib/ccip/services-api/faucet/drip-orchestrator.ts" +import type { FaucetChainConfig } from "~/lib/ccip/types/faucet.ts" export const prerender = false @@ -103,7 +103,7 @@ export class SvmDripAdapter { * Check if drip is available for the given chain */ isDripAvailable(chainConfig: FaucetChainConfig): boolean { - return !!(chainConfig.enabled && chainConfig.family === "svm" && chainConfig.faucetAddress) + return !!(chainConfig.enabled && chainConfig.family === "solana" && chainConfig.faucetAddress) } /** diff --git a/src/pages/api/ccip/faucet/adapters/svm.ts b/src/lib/ccip/faucet/adapters/svm.ts similarity index 98% rename from src/pages/api/ccip/faucet/adapters/svm.ts rename to src/lib/ccip/faucet/adapters/svm.ts index cf156985bf9..1096e5de69d 100644 --- a/src/pages/api/ccip/faucet/adapters/svm.ts +++ b/src/lib/ccip/faucet/adapters/svm.ts @@ -1,4 +1,4 @@ -import { FamilyAdapter, VerifySignatureArgs, FaucetChainConfig } from "@api/ccip/types/faucet.ts" +import { FamilyAdapter, VerifySignatureArgs, FaucetChainConfig } from "~/lib/ccip/types/faucet.ts" import { ensureSolAddress } from "@lib/solana/core/address/validator.ts" import { SolanaSignatureService } from "@lib/solana/domain/services/signature-verification.ts" import { logger } from "@lib/logging/index.js" @@ -133,7 +133,7 @@ export class SvmAdapter implements FamilyAdapter { logger.error({ message: "Error during signature verification", requestId: args.requestId, - family: "svm", + family: "solana", error: error instanceof Error ? error.message : "Unknown error", step: "verification_error", }) diff --git a/src/pages/api/ccip/faucet/chain-resolver.ts b/src/lib/ccip/faucet/chain-resolver.ts similarity index 96% rename from src/pages/api/ccip/faucet/chain-resolver.ts rename to src/lib/ccip/faucet/chain-resolver.ts index 88a6f81c189..a8d5d0f7798 100644 --- a/src/pages/api/ccip/faucet/chain-resolver.ts +++ b/src/lib/ccip/faucet/chain-resolver.ts @@ -1,7 +1,7 @@ import { getSelectorEntry } from "@config/data/ccip/selectors.ts" -import { resolveChainOrThrow } from "@api/ccip/utils.ts" +import { resolveChainOrThrow } from "~/lib/ccip/utils.ts" import { getChainTypeAndFamily, getChainId, directoryToSupportedChain } from "@features/utils/index.ts" -import { FaucetChainConfig } from "@api/ccip/types/faucet.ts" +import { FaucetChainConfig } from "~/lib/ccip/types/faucet.ts" import { getFaucetAddress, getSolanaDevnetConfig } from "@lib/core/config/index.ts" import { BNM_MINT_ADDRESSES } from "@lib/solana/core/constants/token-resolver.ts" diff --git a/src/pages/api/ccip/faucet/codec/index.ts b/src/lib/ccip/faucet/codec/index.ts similarity index 100% rename from src/pages/api/ccip/faucet/codec/index.ts rename to src/lib/ccip/faucet/codec/index.ts diff --git a/src/pages/api/ccip/faucet/config.ts b/src/lib/ccip/faucet/config.ts similarity index 100% rename from src/pages/api/ccip/faucet/config.ts rename to src/lib/ccip/faucet/config.ts diff --git a/src/lib/ccip/graphql/__generated__/.gitkeep b/src/lib/ccip/graphql/__generated__/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/lib/ccip/graphql/__generated__/fragment-masking.ts b/src/lib/ccip/graphql/__generated__/fragment-masking.ts new file mode 100644 index 00000000000..c7b1b9749d2 --- /dev/null +++ b/src/lib/ccip/graphql/__generated__/fragment-masking.ts @@ -0,0 +1,88 @@ +/* eslint-disable */ +import { ResultOf, DocumentTypeDecoration, TypedDocumentNode } from "@graphql-typed-document-node/core" +import { FragmentDefinitionNode } from "graphql" +import { Incremental } from "./graphql.js" + +export type FragmentType> = + TDocumentType extends DocumentTypeDecoration + ? [TType] extends [{ " $fragmentName"?: infer TKey }] + ? TKey extends string + ? { " $fragmentRefs"?: { [key in TKey]: TType } } + : never + : never + : never + +// return non-nullable if `fragmentType` is non-nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: FragmentType> +): TType +// return nullable if `fragmentType` is undefined +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: FragmentType> | undefined +): TType | undefined +// return nullable if `fragmentType` is nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: FragmentType> | null +): TType | null +// return nullable if `fragmentType` is nullable or undefined +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: FragmentType> | null | undefined +): TType | null | undefined +// return array of non-nullable if `fragmentType` is array of non-nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: Array>> +): Array +// return array of nullable if `fragmentType` is array of nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: Array>> | null | undefined +): Array | null | undefined +// return readonly array of non-nullable if `fragmentType` is array of non-nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: ReadonlyArray>> +): ReadonlyArray +// return readonly array of nullable if `fragmentType` is array of nullable +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: ReadonlyArray>> | null | undefined +): ReadonlyArray | null | undefined +export function useFragment( + _documentNode: DocumentTypeDecoration, + fragmentType: + | FragmentType> + | Array>> + | ReadonlyArray>> + | null + | undefined +): TType | Array | ReadonlyArray | null | undefined { + return fragmentType as any +} + +export function makeFragmentData, FT extends ResultOf>( + data: FT, + _fragment: F +): FragmentType { + return data as FragmentType +} +export function isFragmentReady( + queryNode: DocumentTypeDecoration, + fragmentNode: TypedDocumentNode, + data: FragmentType, any>> | null | undefined +): data is FragmentType { + const deferredFields = (queryNode as { __meta__?: { deferredFields: Record } }).__meta__ + ?.deferredFields + + if (!deferredFields) return true + + const fragDef = fragmentNode.definitions[0] as FragmentDefinitionNode | undefined + const fragName = fragDef?.name?.value + + const fields = (fragName && deferredFields[fragName]) || [] + return fields.length > 0 && fields.every((field) => data && field in data) +} diff --git a/src/lib/ccip/graphql/__generated__/gql.ts b/src/lib/ccip/graphql/__generated__/gql.ts new file mode 100644 index 00000000000..906b5098d4b --- /dev/null +++ b/src/lib/ccip/graphql/__generated__/gql.ts @@ -0,0 +1,59 @@ +/* eslint-disable */ +import * as types from "./graphql.js" +import { TypedDocumentNode as DocumentNode } from "@graphql-typed-document-node/core" + +/** + * Map of all GraphQL operations in the project. + * + * This map has several performance disadvantages: + * 1. It is not tree-shakeable, so it will include all operations in the project. + * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle. + * 3. It does not support dead code elimination, so it will add unused operations. + * + * Therefore it is highly recommended to use the babel or swc plugin for production. + * Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size + */ +type Documents = { + "\n query GetTokenPoolLanesWithPools(\n $first: Int\n $offset: Int\n $condition: CcipTokenPoolLanesWithPoolCondition\n $filter: CcipTokenPoolLanesWithPoolFilter\n ) {\n allCcipTokenPoolLanesWithPools(\n first: $first\n offset: $offset\n condition: $condition\n filter: $filter\n orderBy: [NETWORK_ASC, TOKEN_SYMBOL_ASC]\n ) {\n nodes {\n network\n token\n tokenSymbol\n tokenDecimals\n remoteNetworkName\n remoteToken\n removed\n typeAndVersion\n tokenPool\n inboundCapacity\n inboundRate\n inboundEnabled\n outboundCapacity\n outboundRate\n outboundEnabled\n customInboundCapacity\n customInboundRate\n customInboundEnabled\n customOutboundCapacity\n customOutboundRate\n customOutboundEnabled\n }\n totalCount\n }\n }\n": typeof types.GetTokenPoolLanesWithPoolsDocument + "\n query GetTokenPools(\n $first: Int\n $offset: Int\n $condition: CcipTokenPoolCondition\n $filter: CcipTokenPoolFilter\n ) {\n allCcipTokenPools(\n first: $first\n offset: $offset\n condition: $condition\n filter: $filter\n orderBy: [NETWORK_ASC, TOKEN_SYMBOL_ASC]\n ) {\n nodes {\n network\n token\n tokenSymbol\n typeAndVersion\n minBlockConfirmations\n tokenPool\n }\n totalCount\n }\n }\n": typeof types.GetTokenPoolsDocument +} +const documents: Documents = { + "\n query GetTokenPoolLanesWithPools(\n $first: Int\n $offset: Int\n $condition: CcipTokenPoolLanesWithPoolCondition\n $filter: CcipTokenPoolLanesWithPoolFilter\n ) {\n allCcipTokenPoolLanesWithPools(\n first: $first\n offset: $offset\n condition: $condition\n filter: $filter\n orderBy: [NETWORK_ASC, TOKEN_SYMBOL_ASC]\n ) {\n nodes {\n network\n token\n tokenSymbol\n tokenDecimals\n remoteNetworkName\n remoteToken\n removed\n typeAndVersion\n tokenPool\n inboundCapacity\n inboundRate\n inboundEnabled\n outboundCapacity\n outboundRate\n outboundEnabled\n customInboundCapacity\n customInboundRate\n customInboundEnabled\n customOutboundCapacity\n customOutboundRate\n customOutboundEnabled\n }\n totalCount\n }\n }\n": + types.GetTokenPoolLanesWithPoolsDocument, + "\n query GetTokenPools(\n $first: Int\n $offset: Int\n $condition: CcipTokenPoolCondition\n $filter: CcipTokenPoolFilter\n ) {\n allCcipTokenPools(\n first: $first\n offset: $offset\n condition: $condition\n filter: $filter\n orderBy: [NETWORK_ASC, TOKEN_SYMBOL_ASC]\n ) {\n nodes {\n network\n token\n tokenSymbol\n typeAndVersion\n minBlockConfirmations\n tokenPool\n }\n totalCount\n }\n }\n": + types.GetTokenPoolsDocument, +} + +/** + * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + * + * + * @example + * ```ts + * const query = gql(`query GetUser($id: ID!) { user(id: $id) { name } }`); + * ``` + * + * The query argument is unknown! + * Please regenerate the types. + */ +export function gql(source: string): unknown + +/** + * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function gql( + source: "\n query GetTokenPoolLanesWithPools(\n $first: Int\n $offset: Int\n $condition: CcipTokenPoolLanesWithPoolCondition\n $filter: CcipTokenPoolLanesWithPoolFilter\n ) {\n allCcipTokenPoolLanesWithPools(\n first: $first\n offset: $offset\n condition: $condition\n filter: $filter\n orderBy: [NETWORK_ASC, TOKEN_SYMBOL_ASC]\n ) {\n nodes {\n network\n token\n tokenSymbol\n tokenDecimals\n remoteNetworkName\n remoteToken\n removed\n typeAndVersion\n tokenPool\n inboundCapacity\n inboundRate\n inboundEnabled\n outboundCapacity\n outboundRate\n outboundEnabled\n customInboundCapacity\n customInboundRate\n customInboundEnabled\n customOutboundCapacity\n customOutboundRate\n customOutboundEnabled\n }\n totalCount\n }\n }\n" +): (typeof documents)["\n query GetTokenPoolLanesWithPools(\n $first: Int\n $offset: Int\n $condition: CcipTokenPoolLanesWithPoolCondition\n $filter: CcipTokenPoolLanesWithPoolFilter\n ) {\n allCcipTokenPoolLanesWithPools(\n first: $first\n offset: $offset\n condition: $condition\n filter: $filter\n orderBy: [NETWORK_ASC, TOKEN_SYMBOL_ASC]\n ) {\n nodes {\n network\n token\n tokenSymbol\n tokenDecimals\n remoteNetworkName\n remoteToken\n removed\n typeAndVersion\n tokenPool\n inboundCapacity\n inboundRate\n inboundEnabled\n outboundCapacity\n outboundRate\n outboundEnabled\n customInboundCapacity\n customInboundRate\n customInboundEnabled\n customOutboundCapacity\n customOutboundRate\n customOutboundEnabled\n }\n totalCount\n }\n }\n"] +/** + * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function gql( + source: "\n query GetTokenPools(\n $first: Int\n $offset: Int\n $condition: CcipTokenPoolCondition\n $filter: CcipTokenPoolFilter\n ) {\n allCcipTokenPools(\n first: $first\n offset: $offset\n condition: $condition\n filter: $filter\n orderBy: [NETWORK_ASC, TOKEN_SYMBOL_ASC]\n ) {\n nodes {\n network\n token\n tokenSymbol\n typeAndVersion\n minBlockConfirmations\n tokenPool\n }\n totalCount\n }\n }\n" +): (typeof documents)["\n query GetTokenPools(\n $first: Int\n $offset: Int\n $condition: CcipTokenPoolCondition\n $filter: CcipTokenPoolFilter\n ) {\n allCcipTokenPools(\n first: $first\n offset: $offset\n condition: $condition\n filter: $filter\n orderBy: [NETWORK_ASC, TOKEN_SYMBOL_ASC]\n ) {\n nodes {\n network\n token\n tokenSymbol\n typeAndVersion\n minBlockConfirmations\n tokenPool\n }\n totalCount\n }\n }\n"] + +export function gql(source: string) { + return (documents as any)[source] ?? {} +} + +export type DocumentType> = + TDocumentNode extends DocumentNode ? TType : never diff --git a/src/lib/ccip/graphql/__generated__/graphql.ts b/src/lib/ccip/graphql/__generated__/graphql.ts new file mode 100644 index 00000000000..f82b2705373 --- /dev/null +++ b/src/lib/ccip/graphql/__generated__/graphql.ts @@ -0,0 +1,3342 @@ +/* eslint-disable */ +import { TypedDocumentNode as DocumentNode } from "@graphql-typed-document-node/core" +export type Maybe = T | null +export type InputMaybe = T | null | undefined +export type Exact = { [K in keyof T]: T[K] } +export type MakeOptional = Omit & { [SubKey in K]?: Maybe } +export type MakeMaybe = Omit & { [SubKey in K]: Maybe } +export type MakeEmpty = { [_ in K]?: never } +export type Incremental = T | { [P in keyof T]?: P extends " $fragmentName" | "__typename" ? T[P] : never } +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: { input: string; output: string } + String: { input: string; output: string } + Boolean: { input: boolean; output: boolean } + Int: { input: number; output: number } + Float: { input: number; output: number } + /** A floating point number that requires more precision than IEEE 754 binary 64 */ + BigFloat: { input: any; output: any } + /** + * A signed eight-byte integer. The upper big integer values are greater than the + * max value for a JavaScript number. Therefore all big integers will be output as + * strings and not numbers. + */ + BigInt: { input: any; output: any } + /** A location in a connection that can be used for resuming pagination. */ + Cursor: { input: any; output: any } + /** + * A point in time as described by the [ISO + * 8601](https://en.wikipedia.org/wiki/ISO_8601) standard. May or may not include a timezone. + */ + Datetime: { input: any; output: any } + /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */ + JSON: { input: any; output: any } +} + +/** A filter to be used against Boolean fields. All fields are combined with a logical ‘and.’ */ +export type BooleanFilter = { + /** Equal to the specified value. */ + equalTo?: InputMaybe + /** Greater than the specified value. */ + greaterThan?: InputMaybe + /** Greater than or equal to the specified value. */ + greaterThanOrEqualTo?: InputMaybe + /** Included in the specified list. */ + in?: InputMaybe> + /** Less than the specified value. */ + lessThan?: InputMaybe + /** Less than or equal to the specified value. */ + lessThanOrEqualTo?: InputMaybe + /** Not equal to the specified value. */ + notEqualTo?: InputMaybe +} + +export type CcipAllLaneStatus = { + __typename?: "CcipAllLaneStatus" + destNetworkName?: Maybe + routerAddress?: Maybe + sourceNetworkName?: Maybe + successRate?: Maybe +} + +/** + * A condition to be used against `CcipAllLaneStatus` object types. All fields are + * tested for equality and combined with a logical ‘and.’ + */ +export type CcipAllLaneStatusCondition = { + /** Checks for equality with the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Checks for equality with the object’s `routerAddress` field. */ + routerAddress?: InputMaybe + /** Checks for equality with the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Checks for equality with the object’s `successRate` field. */ + successRate?: InputMaybe +} + +/** A filter to be used against `CcipAllLaneStatus` object types. All fields are combined with a logical ‘and.’ */ +export type CcipAllLaneStatusFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `routerAddress` field. */ + routerAddress?: InputMaybe + /** Filter by the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Filter by the object’s `successRate` field. */ + successRate?: InputMaybe +} + +/** A connection to a list of `CcipAllLaneStatus` values. */ +export type CcipAllLaneStatusesConnection = { + __typename?: "CcipAllLaneStatusesConnection" + /** A list of edges which contains the `CcipAllLaneStatus` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipAllLaneStatus` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipAllLaneStatus` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipAllLaneStatus` edge in the connection. */ +export type CcipAllLaneStatusesEdge = { + __typename?: "CcipAllLaneStatusesEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipAllLaneStatus` at the end of the edge. */ + node: CcipAllLaneStatus +} + +/** Methods to use when ordering `CcipAllLaneStatus`. */ +export enum CcipAllLaneStatusesOrderBy { + DestNetworkNameAsc = "DEST_NETWORK_NAME_ASC", + DestNetworkNameDesc = "DEST_NETWORK_NAME_DESC", + Natural = "NATURAL", + RouterAddressAsc = "ROUTER_ADDRESS_ASC", + RouterAddressDesc = "ROUTER_ADDRESS_DESC", + SourceNetworkNameAsc = "SOURCE_NETWORK_NAME_ASC", + SourceNetworkNameDesc = "SOURCE_NETWORK_NAME_DESC", + SuccessRateAsc = "SUCCESS_RATE_ASC", + SuccessRateDesc = "SUCCESS_RATE_DESC", +} + +export type CcipFastTransferFill = { + __typename?: "CcipFastTransferFill" + amount?: Maybe + fillId?: Maybe + filler?: Maybe + messageId?: Maybe + receiver?: Maybe + sendTransactionHash?: Maybe + settlementInfo?: Maybe +} + +/** + * A condition to be used against `CcipFastTransferFill` object types. All fields + * are tested for equality and combined with a logical ‘and.’ + */ +export type CcipFastTransferFillCondition = { + /** Checks for equality with the object’s `amount` field. */ + amount?: InputMaybe + /** Checks for equality with the object’s `fillId` field. */ + fillId?: InputMaybe + /** Checks for equality with the object’s `filler` field. */ + filler?: InputMaybe + /** Checks for equality with the object’s `messageId` field. */ + messageId?: InputMaybe + /** Checks for equality with the object’s `receiver` field. */ + receiver?: InputMaybe + /** Checks for equality with the object’s `sendTransactionHash` field. */ + sendTransactionHash?: InputMaybe + /** Checks for equality with the object’s `settlementInfo` field. */ + settlementInfo?: InputMaybe +} + +/** A filter to be used against `CcipFastTransferFill` object types. All fields are combined with a logical ‘and.’ */ +export type CcipFastTransferFillFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `fillId` field. */ + fillId?: InputMaybe + /** Filter by the object’s `filler` field. */ + filler?: InputMaybe + /** Filter by the object’s `messageId` field. */ + messageId?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `receiver` field. */ + receiver?: InputMaybe + /** Filter by the object’s `sendTransactionHash` field. */ + sendTransactionHash?: InputMaybe + /** Filter by the object’s `settlementInfo` field. */ + settlementInfo?: InputMaybe +} + +/** A connection to a list of `CcipFastTransferFill` values. */ +export type CcipFastTransferFillsConnection = { + __typename?: "CcipFastTransferFillsConnection" + /** A list of edges which contains the `CcipFastTransferFill` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipFastTransferFill` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipFastTransferFill` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipFastTransferFill` edge in the connection. */ +export type CcipFastTransferFillsEdge = { + __typename?: "CcipFastTransferFillsEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipFastTransferFill` at the end of the edge. */ + node: CcipFastTransferFill +} + +/** Methods to use when ordering `CcipFastTransferFill`. */ +export enum CcipFastTransferFillsOrderBy { + AmountAsc = "AMOUNT_ASC", + AmountDesc = "AMOUNT_DESC", + FillerAsc = "FILLER_ASC", + FillerDesc = "FILLER_DESC", + FillIdAsc = "FILL_ID_ASC", + FillIdDesc = "FILL_ID_DESC", + MessageIdAsc = "MESSAGE_ID_ASC", + MessageIdDesc = "MESSAGE_ID_DESC", + Natural = "NATURAL", + ReceiverAsc = "RECEIVER_ASC", + ReceiverDesc = "RECEIVER_DESC", + SendTransactionHashAsc = "SEND_TRANSACTION_HASH_ASC", + SendTransactionHashDesc = "SEND_TRANSACTION_HASH_DESC", + SettlementInfoAsc = "SETTLEMENT_INFO_ASC", + SettlementInfoDesc = "SETTLEMENT_INFO_DESC", +} + +export type CcipLaneStatus = { + __typename?: "CcipLaneStatus" + destNetworkName?: Maybe + routerAddress?: Maybe + sourceNetworkName?: Maybe + successRate?: Maybe +} + +/** + * A condition to be used against `CcipLaneStatus` object types. All fields are + * tested for equality and combined with a logical ‘and.’ + */ +export type CcipLaneStatusCondition = { + /** Checks for equality with the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Checks for equality with the object’s `routerAddress` field. */ + routerAddress?: InputMaybe + /** Checks for equality with the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Checks for equality with the object’s `successRate` field. */ + successRate?: InputMaybe +} + +/** A filter to be used against `CcipLaneStatus` object types. All fields are combined with a logical ‘and.’ */ +export type CcipLaneStatusFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `routerAddress` field. */ + routerAddress?: InputMaybe + /** Filter by the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Filter by the object’s `successRate` field. */ + successRate?: InputMaybe +} + +/** A connection to a list of `CcipLaneStatus` values. */ +export type CcipLaneStatusesConnection = { + __typename?: "CcipLaneStatusesConnection" + /** A list of edges which contains the `CcipLaneStatus` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipLaneStatus` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipLaneStatus` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipLaneStatus` edge in the connection. */ +export type CcipLaneStatusesEdge = { + __typename?: "CcipLaneStatusesEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipLaneStatus` at the end of the edge. */ + node: CcipLaneStatus +} + +/** Methods to use when ordering `CcipLaneStatus`. */ +export enum CcipLaneStatusesOrderBy { + DestNetworkNameAsc = "DEST_NETWORK_NAME_ASC", + DestNetworkNameDesc = "DEST_NETWORK_NAME_DESC", + Natural = "NATURAL", + RouterAddressAsc = "ROUTER_ADDRESS_ASC", + RouterAddressDesc = "ROUTER_ADDRESS_DESC", + SourceNetworkNameAsc = "SOURCE_NETWORK_NAME_ASC", + SourceNetworkNameDesc = "SOURCE_NETWORK_NAME_DESC", + SuccessRateAsc = "SUCCESS_RATE_ASC", + SuccessRateDesc = "SUCCESS_RATE_DESC", +} + +export type CcipLaneTimeEstimate = { + __typename?: "CcipLaneTimeEstimate" + commitMs?: Maybe + destNetworkName?: Maybe + finalityMs?: Maybe + routerAddress?: Maybe + sourceNetworkName?: Maybe + totalMs?: Maybe + transferMs?: Maybe +} + +/** + * A condition to be used against `CcipLaneTimeEstimate` object types. All fields + * are tested for equality and combined with a logical ‘and.’ + */ +export type CcipLaneTimeEstimateCondition = { + /** Checks for equality with the object’s `commitMs` field. */ + commitMs?: InputMaybe + /** Checks for equality with the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Checks for equality with the object’s `finalityMs` field. */ + finalityMs?: InputMaybe + /** Checks for equality with the object’s `routerAddress` field. */ + routerAddress?: InputMaybe + /** Checks for equality with the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Checks for equality with the object’s `totalMs` field. */ + totalMs?: InputMaybe + /** Checks for equality with the object’s `transferMs` field. */ + transferMs?: InputMaybe +} + +/** A filter to be used against `CcipLaneTimeEstimate` object types. All fields are combined with a logical ‘and.’ */ +export type CcipLaneTimeEstimateFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `routerAddress` field. */ + routerAddress?: InputMaybe + /** Filter by the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe +} + +/** A connection to a list of `CcipLaneTimeEstimate` values. */ +export type CcipLaneTimeEstimatesConnection = { + __typename?: "CcipLaneTimeEstimatesConnection" + /** A list of edges which contains the `CcipLaneTimeEstimate` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipLaneTimeEstimate` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipLaneTimeEstimate` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipLaneTimeEstimate` edge in the connection. */ +export type CcipLaneTimeEstimatesEdge = { + __typename?: "CcipLaneTimeEstimatesEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipLaneTimeEstimate` at the end of the edge. */ + node: CcipLaneTimeEstimate +} + +/** Methods to use when ordering `CcipLaneTimeEstimate`. */ +export enum CcipLaneTimeEstimatesOrderBy { + CommitMsAsc = "COMMIT_MS_ASC", + CommitMsDesc = "COMMIT_MS_DESC", + DestNetworkNameAsc = "DEST_NETWORK_NAME_ASC", + DestNetworkNameDesc = "DEST_NETWORK_NAME_DESC", + FinalityMsAsc = "FINALITY_MS_ASC", + FinalityMsDesc = "FINALITY_MS_DESC", + Natural = "NATURAL", + RouterAddressAsc = "ROUTER_ADDRESS_ASC", + RouterAddressDesc = "ROUTER_ADDRESS_DESC", + SourceNetworkNameAsc = "SOURCE_NETWORK_NAME_ASC", + SourceNetworkNameDesc = "SOURCE_NETWORK_NAME_DESC", + TotalMsAsc = "TOTAL_MS_ASC", + TotalMsDesc = "TOTAL_MS_DESC", + TransferMsAsc = "TRANSFER_MS_ASC", + TransferMsDesc = "TRANSFER_MS_DESC", +} + +export type CcipMessage = { + __typename?: "CcipMessage" + arm?: Maybe + blessBlockNumber?: Maybe + blessBlockTimestamp?: Maybe + blessLogIndex?: Maybe + blessTransactionHash?: Maybe + commitBlockNumber?: Maybe + commitBlockTimestamp?: Maybe + commitLogIndex?: Maybe + commitStore?: Maybe + commitTransactionHash?: Maybe + data?: Maybe + destChainId?: Maybe + destNetworkName?: Maybe + destRouterAddress?: Maybe + feeToken?: Maybe + feeTokenAmount?: Maybe + gasLimit?: Maybe + info?: Maybe + infoRaw?: Maybe + max?: Maybe + messageId?: Maybe + min?: Maybe + nonce?: Maybe + offrampAddress?: Maybe + onrampAddress?: Maybe + origin?: Maybe + permissionLessExecutionThresholdSeconds?: Maybe + receiptBlock?: Maybe + receiptFinalized?: Maybe + receiptLogIndex?: Maybe + receiptTimestamp?: Maybe + receiptTransactionHash?: Maybe + receiver?: Maybe + root?: Maybe + routerAddress?: Maybe + sendBlock?: Maybe + sendFinalized?: Maybe + sendLogIndex?: Maybe + sendTimestamp?: Maybe + sendTransactionHash?: Maybe + sender?: Maybe + sequenceNumber?: Maybe + sourceChainId?: Maybe + sourceNetworkName?: Maybe + state?: Maybe + strict?: Maybe + tokenAmounts?: Maybe + votes?: Maybe +} + +/** + * A condition to be used against `CcipMessage` object types. All fields are tested + * for equality and combined with a logical ‘and.’ + */ +export type CcipMessageCondition = { + /** Checks for equality with the object’s `arm` field. */ + arm?: InputMaybe + /** Checks for equality with the object’s `blessBlockNumber` field. */ + blessBlockNumber?: InputMaybe + /** Checks for equality with the object’s `blessBlockTimestamp` field. */ + blessBlockTimestamp?: InputMaybe + /** Checks for equality with the object’s `blessLogIndex` field. */ + blessLogIndex?: InputMaybe + /** Checks for equality with the object’s `blessTransactionHash` field. */ + blessTransactionHash?: InputMaybe + /** Checks for equality with the object’s `commitBlockNumber` field. */ + commitBlockNumber?: InputMaybe + /** Checks for equality with the object’s `commitBlockTimestamp` field. */ + commitBlockTimestamp?: InputMaybe + /** Checks for equality with the object’s `commitLogIndex` field. */ + commitLogIndex?: InputMaybe + /** Checks for equality with the object’s `commitStore` field. */ + commitStore?: InputMaybe + /** Checks for equality with the object’s `commitTransactionHash` field. */ + commitTransactionHash?: InputMaybe + /** Checks for equality with the object’s `data` field. */ + data?: InputMaybe + /** Checks for equality with the object’s `destChainId` field. */ + destChainId?: InputMaybe + /** Checks for equality with the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Checks for equality with the object’s `destRouterAddress` field. */ + destRouterAddress?: InputMaybe + /** Checks for equality with the object’s `feeToken` field. */ + feeToken?: InputMaybe + /** Checks for equality with the object’s `feeTokenAmount` field. */ + feeTokenAmount?: InputMaybe + /** Checks for equality with the object’s `gasLimit` field. */ + gasLimit?: InputMaybe + /** Checks for equality with the object’s `info` field. */ + info?: InputMaybe + /** Checks for equality with the object’s `infoRaw` field. */ + infoRaw?: InputMaybe + /** Checks for equality with the object’s `max` field. */ + max?: InputMaybe + /** Checks for equality with the object’s `messageId` field. */ + messageId?: InputMaybe + /** Checks for equality with the object’s `min` field. */ + min?: InputMaybe + /** Checks for equality with the object’s `nonce` field. */ + nonce?: InputMaybe + /** Checks for equality with the object’s `offrampAddress` field. */ + offrampAddress?: InputMaybe + /** Checks for equality with the object’s `onrampAddress` field. */ + onrampAddress?: InputMaybe + /** Checks for equality with the object’s `origin` field. */ + origin?: InputMaybe + /** Checks for equality with the object’s `permissionLessExecutionThresholdSeconds` field. */ + permissionLessExecutionThresholdSeconds?: InputMaybe + /** Checks for equality with the object’s `receiptBlock` field. */ + receiptBlock?: InputMaybe + /** Checks for equality with the object’s `receiptFinalized` field. */ + receiptFinalized?: InputMaybe + /** Checks for equality with the object’s `receiptLogIndex` field. */ + receiptLogIndex?: InputMaybe + /** Checks for equality with the object’s `receiptTimestamp` field. */ + receiptTimestamp?: InputMaybe + /** Checks for equality with the object’s `receiptTransactionHash` field. */ + receiptTransactionHash?: InputMaybe + /** Checks for equality with the object’s `receiver` field. */ + receiver?: InputMaybe + /** Checks for equality with the object’s `root` field. */ + root?: InputMaybe + /** Checks for equality with the object’s `routerAddress` field. */ + routerAddress?: InputMaybe + /** Checks for equality with the object’s `sendBlock` field. */ + sendBlock?: InputMaybe + /** Checks for equality with the object’s `sendFinalized` field. */ + sendFinalized?: InputMaybe + /** Checks for equality with the object’s `sendLogIndex` field. */ + sendLogIndex?: InputMaybe + /** Checks for equality with the object’s `sendTimestamp` field. */ + sendTimestamp?: InputMaybe + /** Checks for equality with the object’s `sendTransactionHash` field. */ + sendTransactionHash?: InputMaybe + /** Checks for equality with the object’s `sender` field. */ + sender?: InputMaybe + /** Checks for equality with the object’s `sequenceNumber` field. */ + sequenceNumber?: InputMaybe + /** Checks for equality with the object’s `sourceChainId` field. */ + sourceChainId?: InputMaybe + /** Checks for equality with the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Checks for equality with the object’s `state` field. */ + state?: InputMaybe + /** Checks for equality with the object’s `strict` field. */ + strict?: InputMaybe + /** Checks for equality with the object’s `tokenAmounts` field. */ + tokenAmounts?: InputMaybe + /** Checks for equality with the object’s `votes` field. */ + votes?: InputMaybe +} + +/** A filter to be used against `CcipMessage` object types. All fields are combined with a logical ‘and.’ */ +export type CcipMessageFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `arm` field. */ + arm?: InputMaybe + /** Filter by the object’s `blessBlockNumber` field. */ + blessBlockNumber?: InputMaybe + /** Filter by the object’s `blessLogIndex` field. */ + blessLogIndex?: InputMaybe + /** Filter by the object’s `blessTransactionHash` field. */ + blessTransactionHash?: InputMaybe + /** Filter by the object’s `commitBlockNumber` field. */ + commitBlockNumber?: InputMaybe + /** Filter by the object’s `commitLogIndex` field. */ + commitLogIndex?: InputMaybe + /** Filter by the object’s `commitStore` field. */ + commitStore?: InputMaybe + /** Filter by the object’s `commitTransactionHash` field. */ + commitTransactionHash?: InputMaybe + /** Filter by the object’s `data` field. */ + data?: InputMaybe + /** Filter by the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Filter by the object’s `destRouterAddress` field. */ + destRouterAddress?: InputMaybe + /** Filter by the object’s `feeToken` field. */ + feeToken?: InputMaybe + /** Filter by the object’s `feeTokenAmount` field. */ + feeTokenAmount?: InputMaybe + /** Filter by the object’s `info` field. */ + info?: InputMaybe + /** Filter by the object’s `infoRaw` field. */ + infoRaw?: InputMaybe + /** Filter by the object’s `messageId` field. */ + messageId?: InputMaybe + /** Filter by the object’s `nonce` field. */ + nonce?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Filter by the object’s `offrampAddress` field. */ + offrampAddress?: InputMaybe + /** Filter by the object’s `onrampAddress` field. */ + onrampAddress?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `origin` field. */ + origin?: InputMaybe + /** Filter by the object’s `permissionLessExecutionThresholdSeconds` field. */ + permissionLessExecutionThresholdSeconds?: InputMaybe + /** Filter by the object’s `receiptBlock` field. */ + receiptBlock?: InputMaybe + /** Filter by the object’s `receiptLogIndex` field. */ + receiptLogIndex?: InputMaybe + /** Filter by the object’s `receiptTransactionHash` field. */ + receiptTransactionHash?: InputMaybe + /** Filter by the object’s `receiver` field. */ + receiver?: InputMaybe + /** Filter by the object’s `root` field. */ + root?: InputMaybe + /** Filter by the object’s `routerAddress` field. */ + routerAddress?: InputMaybe + /** Filter by the object’s `sendBlock` field. */ + sendBlock?: InputMaybe + /** Filter by the object’s `sendLogIndex` field. */ + sendLogIndex?: InputMaybe + /** Filter by the object’s `sendTransactionHash` field. */ + sendTransactionHash?: InputMaybe + /** Filter by the object’s `sender` field. */ + sender?: InputMaybe + /** Filter by the object’s `sequenceNumber` field. */ + sequenceNumber?: InputMaybe + /** Filter by the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Filter by the object’s `state` field. */ + state?: InputMaybe + /** Filter by the object’s `strict` field. */ + strict?: InputMaybe + /** Filter by the object’s `tokenAmounts` field. */ + tokenAmounts?: InputMaybe + /** Filter by the object’s `votes` field. */ + votes?: InputMaybe +} + +/** A connection to a list of `CcipMessage` values. */ +export type CcipMessagesConnection = { + __typename?: "CcipMessagesConnection" + /** A list of edges which contains the `CcipMessage` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipMessage` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipMessage` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipMessage` edge in the connection. */ +export type CcipMessagesEdge = { + __typename?: "CcipMessagesEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipMessage` at the end of the edge. */ + node: CcipMessage +} + +export type CcipMessagesFlat = { + __typename?: "CcipMessagesFlat" + blessBlockHash?: Maybe + blessBlockNumber?: Maybe + blessBlockTimestamp?: Maybe + blessLogIndex?: Maybe + blessTransactionHash?: Maybe + commitBlockHash?: Maybe + commitBlockNumber?: Maybe + commitBlockTimestamp?: Maybe + commitLogIndex?: Maybe + commitStore?: Maybe + commitTransactionHash?: Maybe + createdAt?: Maybe + data?: Maybe + destChainId?: Maybe + destNetworkName?: Maybe + destRouter?: Maybe + firstReceiptBlockHash?: Maybe + firstReceiptBlockNumber?: Maybe + firstReceiptBlockTimestamp?: Maybe + firstReceiptInfo?: Maybe + firstReceiptLogIndex?: Maybe + firstReceiptTransactionHash?: Maybe + infoRaw?: Maybe + max?: Maybe + messageId?: Maybe + min?: Maybe + ofInterest?: Maybe>> + offramp?: Maybe + onramp?: Maybe + origin?: Maybe + receiptBlockHash?: Maybe + receiptBlockNumber?: Maybe + receiptBlockTimestamp?: Maybe + receiptInfo?: Maybe + receiptLogIndex?: Maybe + receiptTransactionHash?: Maybe + receiver?: Maybe + rmn?: Maybe + root?: Maybe + sendBlockHash?: Maybe + sendBlockNumber?: Maybe + sendBlockTimestamp?: Maybe + sendFinalized?: Maybe + sendLogIndex?: Maybe + sendTransactionHash?: Maybe + sender?: Maybe + sequenceNumber?: Maybe + sourceChainId?: Maybe + sourceNetworkName?: Maybe + sourceRouter?: Maybe + sourceSchema?: Maybe + state?: Maybe + updatedAt?: Maybe + votes?: Maybe +} + +/** + * A condition to be used against `CcipMessagesFlat` object types. All fields are + * tested for equality and combined with a logical ‘and.’ + */ +export type CcipMessagesFlatCondition = { + /** Checks for equality with the object’s `blessBlockHash` field. */ + blessBlockHash?: InputMaybe + /** Checks for equality with the object’s `blessBlockNumber` field. */ + blessBlockNumber?: InputMaybe + /** Checks for equality with the object’s `blessBlockTimestamp` field. */ + blessBlockTimestamp?: InputMaybe + /** Checks for equality with the object’s `blessLogIndex` field. */ + blessLogIndex?: InputMaybe + /** Checks for equality with the object’s `blessTransactionHash` field. */ + blessTransactionHash?: InputMaybe + /** Checks for equality with the object’s `commitBlockHash` field. */ + commitBlockHash?: InputMaybe + /** Checks for equality with the object’s `commitBlockNumber` field. */ + commitBlockNumber?: InputMaybe + /** Checks for equality with the object’s `commitBlockTimestamp` field. */ + commitBlockTimestamp?: InputMaybe + /** Checks for equality with the object’s `commitLogIndex` field. */ + commitLogIndex?: InputMaybe + /** Checks for equality with the object’s `commitStore` field. */ + commitStore?: InputMaybe + /** Checks for equality with the object’s `commitTransactionHash` field. */ + commitTransactionHash?: InputMaybe + /** Checks for equality with the object’s `createdAt` field. */ + createdAt?: InputMaybe + /** Checks for equality with the object’s `data` field. */ + data?: InputMaybe + /** Checks for equality with the object’s `destChainId` field. */ + destChainId?: InputMaybe + /** Checks for equality with the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Checks for equality with the object’s `destRouter` field. */ + destRouter?: InputMaybe + /** Checks for equality with the object’s `firstReceiptBlockHash` field. */ + firstReceiptBlockHash?: InputMaybe + /** Checks for equality with the object’s `firstReceiptBlockNumber` field. */ + firstReceiptBlockNumber?: InputMaybe + /** Checks for equality with the object’s `firstReceiptBlockTimestamp` field. */ + firstReceiptBlockTimestamp?: InputMaybe + /** Checks for equality with the object’s `firstReceiptInfo` field. */ + firstReceiptInfo?: InputMaybe + /** Checks for equality with the object’s `firstReceiptLogIndex` field. */ + firstReceiptLogIndex?: InputMaybe + /** Checks for equality with the object’s `firstReceiptTransactionHash` field. */ + firstReceiptTransactionHash?: InputMaybe + /** Checks for equality with the object’s `infoRaw` field. */ + infoRaw?: InputMaybe + /** Checks for equality with the object’s `max` field. */ + max?: InputMaybe + /** Checks for equality with the object’s `messageId` field. */ + messageId?: InputMaybe + /** Checks for equality with the object’s `min` field. */ + min?: InputMaybe + /** Checks for equality with the object’s `ofInterest` field. */ + ofInterest?: InputMaybe>> + /** Checks for equality with the object’s `offramp` field. */ + offramp?: InputMaybe + /** Checks for equality with the object’s `onramp` field. */ + onramp?: InputMaybe + /** Checks for equality with the object’s `origin` field. */ + origin?: InputMaybe + /** Checks for equality with the object’s `receiptBlockHash` field. */ + receiptBlockHash?: InputMaybe + /** Checks for equality with the object’s `receiptBlockNumber` field. */ + receiptBlockNumber?: InputMaybe + /** Checks for equality with the object’s `receiptBlockTimestamp` field. */ + receiptBlockTimestamp?: InputMaybe + /** Checks for equality with the object’s `receiptInfo` field. */ + receiptInfo?: InputMaybe + /** Checks for equality with the object’s `receiptLogIndex` field. */ + receiptLogIndex?: InputMaybe + /** Checks for equality with the object’s `receiptTransactionHash` field. */ + receiptTransactionHash?: InputMaybe + /** Checks for equality with the object’s `receiver` field. */ + receiver?: InputMaybe + /** Checks for equality with the object’s `rmn` field. */ + rmn?: InputMaybe + /** Checks for equality with the object’s `root` field. */ + root?: InputMaybe + /** Checks for equality with the object’s `sendBlockHash` field. */ + sendBlockHash?: InputMaybe + /** Checks for equality with the object’s `sendBlockNumber` field. */ + sendBlockNumber?: InputMaybe + /** Checks for equality with the object’s `sendBlockTimestamp` field. */ + sendBlockTimestamp?: InputMaybe + /** Checks for equality with the object’s `sendFinalized` field. */ + sendFinalized?: InputMaybe + /** Checks for equality with the object’s `sendLogIndex` field. */ + sendLogIndex?: InputMaybe + /** Checks for equality with the object’s `sendTransactionHash` field. */ + sendTransactionHash?: InputMaybe + /** Checks for equality with the object’s `sender` field. */ + sender?: InputMaybe + /** Checks for equality with the object’s `sequenceNumber` field. */ + sequenceNumber?: InputMaybe + /** Checks for equality with the object’s `sourceChainId` field. */ + sourceChainId?: InputMaybe + /** Checks for equality with the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Checks for equality with the object’s `sourceRouter` field. */ + sourceRouter?: InputMaybe + /** Checks for equality with the object’s `sourceSchema` field. */ + sourceSchema?: InputMaybe + /** Checks for equality with the object’s `state` field. */ + state?: InputMaybe + /** Checks for equality with the object’s `updatedAt` field. */ + updatedAt?: InputMaybe + /** Checks for equality with the object’s `votes` field. */ + votes?: InputMaybe +} + +/** A filter to be used against `CcipMessagesFlat` object types. All fields are combined with a logical ‘and.’ */ +export type CcipMessagesFlatFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `blessBlockHash` field. */ + blessBlockHash?: InputMaybe + /** Filter by the object’s `blessBlockNumber` field. */ + blessBlockNumber?: InputMaybe + /** Filter by the object’s `blessLogIndex` field. */ + blessLogIndex?: InputMaybe + /** Filter by the object’s `blessTransactionHash` field. */ + blessTransactionHash?: InputMaybe + /** Filter by the object’s `commitBlockHash` field. */ + commitBlockHash?: InputMaybe + /** Filter by the object’s `commitBlockNumber` field. */ + commitBlockNumber?: InputMaybe + /** Filter by the object’s `commitLogIndex` field. */ + commitLogIndex?: InputMaybe + /** Filter by the object’s `commitStore` field. */ + commitStore?: InputMaybe + /** Filter by the object’s `commitTransactionHash` field. */ + commitTransactionHash?: InputMaybe + /** Filter by the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Filter by the object’s `destRouter` field. */ + destRouter?: InputMaybe + /** Filter by the object’s `firstReceiptBlockHash` field. */ + firstReceiptBlockHash?: InputMaybe + /** Filter by the object’s `firstReceiptBlockNumber` field. */ + firstReceiptBlockNumber?: InputMaybe + /** Filter by the object’s `firstReceiptInfo` field. */ + firstReceiptInfo?: InputMaybe + /** Filter by the object’s `firstReceiptLogIndex` field. */ + firstReceiptLogIndex?: InputMaybe + /** Filter by the object’s `firstReceiptTransactionHash` field. */ + firstReceiptTransactionHash?: InputMaybe + /** Filter by the object’s `infoRaw` field. */ + infoRaw?: InputMaybe + /** Filter by the object’s `max` field. */ + max?: InputMaybe + /** Filter by the object’s `messageId` field. */ + messageId?: InputMaybe + /** Filter by the object’s `min` field. */ + min?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Filter by the object’s `ofInterest` field. */ + ofInterest?: InputMaybe + /** Filter by the object’s `offramp` field. */ + offramp?: InputMaybe + /** Filter by the object’s `onramp` field. */ + onramp?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `origin` field. */ + origin?: InputMaybe + /** Filter by the object’s `receiptBlockHash` field. */ + receiptBlockHash?: InputMaybe + /** Filter by the object’s `receiptBlockNumber` field. */ + receiptBlockNumber?: InputMaybe + /** Filter by the object’s `receiptInfo` field. */ + receiptInfo?: InputMaybe + /** Filter by the object’s `receiptLogIndex` field. */ + receiptLogIndex?: InputMaybe + /** Filter by the object’s `receiptTransactionHash` field. */ + receiptTransactionHash?: InputMaybe + /** Filter by the object’s `receiver` field. */ + receiver?: InputMaybe + /** Filter by the object’s `rmn` field. */ + rmn?: InputMaybe + /** Filter by the object’s `root` field. */ + root?: InputMaybe + /** Filter by the object’s `sendBlockHash` field. */ + sendBlockHash?: InputMaybe + /** Filter by the object’s `sendBlockNumber` field. */ + sendBlockNumber?: InputMaybe + /** Filter by the object’s `sendLogIndex` field. */ + sendLogIndex?: InputMaybe + /** Filter by the object’s `sendTransactionHash` field. */ + sendTransactionHash?: InputMaybe + /** Filter by the object’s `sender` field. */ + sender?: InputMaybe + /** Filter by the object’s `sequenceNumber` field. */ + sequenceNumber?: InputMaybe + /** Filter by the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Filter by the object’s `sourceRouter` field. */ + sourceRouter?: InputMaybe + /** Filter by the object’s `sourceSchema` field. */ + sourceSchema?: InputMaybe + /** Filter by the object’s `state` field. */ + state?: InputMaybe + /** Filter by the object’s `votes` field. */ + votes?: InputMaybe +} + +/** A connection to a list of `CcipMessagesFlat` values. */ +export type CcipMessagesFlatsConnection = { + __typename?: "CcipMessagesFlatsConnection" + /** A list of edges which contains the `CcipMessagesFlat` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipMessagesFlat` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipMessagesFlat` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipMessagesFlat` edge in the connection. */ +export type CcipMessagesFlatsEdge = { + __typename?: "CcipMessagesFlatsEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipMessagesFlat` at the end of the edge. */ + node: CcipMessagesFlat +} + +/** Methods to use when ordering `CcipMessagesFlat`. */ +export enum CcipMessagesFlatsOrderBy { + BlessBlockHashAsc = "BLESS_BLOCK_HASH_ASC", + BlessBlockHashDesc = "BLESS_BLOCK_HASH_DESC", + BlessBlockNumberAsc = "BLESS_BLOCK_NUMBER_ASC", + BlessBlockNumberDesc = "BLESS_BLOCK_NUMBER_DESC", + BlessBlockTimestampAsc = "BLESS_BLOCK_TIMESTAMP_ASC", + BlessBlockTimestampDesc = "BLESS_BLOCK_TIMESTAMP_DESC", + BlessLogIndexAsc = "BLESS_LOG_INDEX_ASC", + BlessLogIndexDesc = "BLESS_LOG_INDEX_DESC", + BlessTransactionHashAsc = "BLESS_TRANSACTION_HASH_ASC", + BlessTransactionHashDesc = "BLESS_TRANSACTION_HASH_DESC", + CommitBlockHashAsc = "COMMIT_BLOCK_HASH_ASC", + CommitBlockHashDesc = "COMMIT_BLOCK_HASH_DESC", + CommitBlockNumberAsc = "COMMIT_BLOCK_NUMBER_ASC", + CommitBlockNumberDesc = "COMMIT_BLOCK_NUMBER_DESC", + CommitBlockTimestampAsc = "COMMIT_BLOCK_TIMESTAMP_ASC", + CommitBlockTimestampDesc = "COMMIT_BLOCK_TIMESTAMP_DESC", + CommitLogIndexAsc = "COMMIT_LOG_INDEX_ASC", + CommitLogIndexDesc = "COMMIT_LOG_INDEX_DESC", + CommitStoreAsc = "COMMIT_STORE_ASC", + CommitStoreDesc = "COMMIT_STORE_DESC", + CommitTransactionHashAsc = "COMMIT_TRANSACTION_HASH_ASC", + CommitTransactionHashDesc = "COMMIT_TRANSACTION_HASH_DESC", + CreatedAtAsc = "CREATED_AT_ASC", + CreatedAtDesc = "CREATED_AT_DESC", + DataAsc = "DATA_ASC", + DataDesc = "DATA_DESC", + DestChainIdAsc = "DEST_CHAIN_ID_ASC", + DestChainIdDesc = "DEST_CHAIN_ID_DESC", + DestNetworkNameAsc = "DEST_NETWORK_NAME_ASC", + DestNetworkNameDesc = "DEST_NETWORK_NAME_DESC", + DestRouterAsc = "DEST_ROUTER_ASC", + DestRouterDesc = "DEST_ROUTER_DESC", + FirstReceiptBlockHashAsc = "FIRST_RECEIPT_BLOCK_HASH_ASC", + FirstReceiptBlockHashDesc = "FIRST_RECEIPT_BLOCK_HASH_DESC", + FirstReceiptBlockNumberAsc = "FIRST_RECEIPT_BLOCK_NUMBER_ASC", + FirstReceiptBlockNumberDesc = "FIRST_RECEIPT_BLOCK_NUMBER_DESC", + FirstReceiptBlockTimestampAsc = "FIRST_RECEIPT_BLOCK_TIMESTAMP_ASC", + FirstReceiptBlockTimestampDesc = "FIRST_RECEIPT_BLOCK_TIMESTAMP_DESC", + FirstReceiptInfoAsc = "FIRST_RECEIPT_INFO_ASC", + FirstReceiptInfoDesc = "FIRST_RECEIPT_INFO_DESC", + FirstReceiptLogIndexAsc = "FIRST_RECEIPT_LOG_INDEX_ASC", + FirstReceiptLogIndexDesc = "FIRST_RECEIPT_LOG_INDEX_DESC", + FirstReceiptTransactionHashAsc = "FIRST_RECEIPT_TRANSACTION_HASH_ASC", + FirstReceiptTransactionHashDesc = "FIRST_RECEIPT_TRANSACTION_HASH_DESC", + InfoRawAsc = "INFO_RAW_ASC", + InfoRawDesc = "INFO_RAW_DESC", + MaxAsc = "MAX_ASC", + MaxDesc = "MAX_DESC", + MessageIdAsc = "MESSAGE_ID_ASC", + MessageIdDesc = "MESSAGE_ID_DESC", + MinAsc = "MIN_ASC", + MinDesc = "MIN_DESC", + Natural = "NATURAL", + OfframpAsc = "OFFRAMP_ASC", + OfframpDesc = "OFFRAMP_DESC", + OfInterestAsc = "OF_INTEREST_ASC", + OfInterestDesc = "OF_INTEREST_DESC", + OnrampAsc = "ONRAMP_ASC", + OnrampDesc = "ONRAMP_DESC", + OriginAsc = "ORIGIN_ASC", + OriginDesc = "ORIGIN_DESC", + ReceiptBlockHashAsc = "RECEIPT_BLOCK_HASH_ASC", + ReceiptBlockHashDesc = "RECEIPT_BLOCK_HASH_DESC", + ReceiptBlockNumberAsc = "RECEIPT_BLOCK_NUMBER_ASC", + ReceiptBlockNumberDesc = "RECEIPT_BLOCK_NUMBER_DESC", + ReceiptBlockTimestampAsc = "RECEIPT_BLOCK_TIMESTAMP_ASC", + ReceiptBlockTimestampDesc = "RECEIPT_BLOCK_TIMESTAMP_DESC", + ReceiptInfoAsc = "RECEIPT_INFO_ASC", + ReceiptInfoDesc = "RECEIPT_INFO_DESC", + ReceiptLogIndexAsc = "RECEIPT_LOG_INDEX_ASC", + ReceiptLogIndexDesc = "RECEIPT_LOG_INDEX_DESC", + ReceiptTransactionHashAsc = "RECEIPT_TRANSACTION_HASH_ASC", + ReceiptTransactionHashDesc = "RECEIPT_TRANSACTION_HASH_DESC", + ReceiverAsc = "RECEIVER_ASC", + ReceiverDesc = "RECEIVER_DESC", + RmnAsc = "RMN_ASC", + RmnDesc = "RMN_DESC", + RootAsc = "ROOT_ASC", + RootDesc = "ROOT_DESC", + SenderAsc = "SENDER_ASC", + SenderDesc = "SENDER_DESC", + SendBlockHashAsc = "SEND_BLOCK_HASH_ASC", + SendBlockHashDesc = "SEND_BLOCK_HASH_DESC", + SendBlockNumberAsc = "SEND_BLOCK_NUMBER_ASC", + SendBlockNumberDesc = "SEND_BLOCK_NUMBER_DESC", + SendBlockTimestampAsc = "SEND_BLOCK_TIMESTAMP_ASC", + SendBlockTimestampDesc = "SEND_BLOCK_TIMESTAMP_DESC", + SendFinalizedAsc = "SEND_FINALIZED_ASC", + SendFinalizedDesc = "SEND_FINALIZED_DESC", + SendLogIndexAsc = "SEND_LOG_INDEX_ASC", + SendLogIndexDesc = "SEND_LOG_INDEX_DESC", + SendTransactionHashAsc = "SEND_TRANSACTION_HASH_ASC", + SendTransactionHashDesc = "SEND_TRANSACTION_HASH_DESC", + SequenceNumberAsc = "SEQUENCE_NUMBER_ASC", + SequenceNumberDesc = "SEQUENCE_NUMBER_DESC", + SourceChainIdAsc = "SOURCE_CHAIN_ID_ASC", + SourceChainIdDesc = "SOURCE_CHAIN_ID_DESC", + SourceNetworkNameAsc = "SOURCE_NETWORK_NAME_ASC", + SourceNetworkNameDesc = "SOURCE_NETWORK_NAME_DESC", + SourceRouterAsc = "SOURCE_ROUTER_ASC", + SourceRouterDesc = "SOURCE_ROUTER_DESC", + SourceSchemaAsc = "SOURCE_SCHEMA_ASC", + SourceSchemaDesc = "SOURCE_SCHEMA_DESC", + StateAsc = "STATE_ASC", + StateDesc = "STATE_DESC", + UpdatedAtAsc = "UPDATED_AT_ASC", + UpdatedAtDesc = "UPDATED_AT_DESC", + VotesAsc = "VOTES_ASC", + VotesDesc = "VOTES_DESC", +} + +/** Methods to use when ordering `CcipMessage`. */ +export enum CcipMessagesOrderBy { + ArmAsc = "ARM_ASC", + ArmDesc = "ARM_DESC", + BlessBlockNumberAsc = "BLESS_BLOCK_NUMBER_ASC", + BlessBlockNumberDesc = "BLESS_BLOCK_NUMBER_DESC", + BlessBlockTimestampAsc = "BLESS_BLOCK_TIMESTAMP_ASC", + BlessBlockTimestampDesc = "BLESS_BLOCK_TIMESTAMP_DESC", + BlessLogIndexAsc = "BLESS_LOG_INDEX_ASC", + BlessLogIndexDesc = "BLESS_LOG_INDEX_DESC", + BlessTransactionHashAsc = "BLESS_TRANSACTION_HASH_ASC", + BlessTransactionHashDesc = "BLESS_TRANSACTION_HASH_DESC", + CommitBlockNumberAsc = "COMMIT_BLOCK_NUMBER_ASC", + CommitBlockNumberDesc = "COMMIT_BLOCK_NUMBER_DESC", + CommitBlockTimestampAsc = "COMMIT_BLOCK_TIMESTAMP_ASC", + CommitBlockTimestampDesc = "COMMIT_BLOCK_TIMESTAMP_DESC", + CommitLogIndexAsc = "COMMIT_LOG_INDEX_ASC", + CommitLogIndexDesc = "COMMIT_LOG_INDEX_DESC", + CommitStoreAsc = "COMMIT_STORE_ASC", + CommitStoreDesc = "COMMIT_STORE_DESC", + CommitTransactionHashAsc = "COMMIT_TRANSACTION_HASH_ASC", + CommitTransactionHashDesc = "COMMIT_TRANSACTION_HASH_DESC", + DataAsc = "DATA_ASC", + DataDesc = "DATA_DESC", + DestChainIdAsc = "DEST_CHAIN_ID_ASC", + DestChainIdDesc = "DEST_CHAIN_ID_DESC", + DestNetworkNameAsc = "DEST_NETWORK_NAME_ASC", + DestNetworkNameDesc = "DEST_NETWORK_NAME_DESC", + DestRouterAddressAsc = "DEST_ROUTER_ADDRESS_ASC", + DestRouterAddressDesc = "DEST_ROUTER_ADDRESS_DESC", + FeeTokenAmountAsc = "FEE_TOKEN_AMOUNT_ASC", + FeeTokenAmountDesc = "FEE_TOKEN_AMOUNT_DESC", + FeeTokenAsc = "FEE_TOKEN_ASC", + FeeTokenDesc = "FEE_TOKEN_DESC", + GasLimitAsc = "GAS_LIMIT_ASC", + GasLimitDesc = "GAS_LIMIT_DESC", + InfoAsc = "INFO_ASC", + InfoDesc = "INFO_DESC", + InfoRawAsc = "INFO_RAW_ASC", + InfoRawDesc = "INFO_RAW_DESC", + MaxAsc = "MAX_ASC", + MaxDesc = "MAX_DESC", + MessageIdAsc = "MESSAGE_ID_ASC", + MessageIdDesc = "MESSAGE_ID_DESC", + MinAsc = "MIN_ASC", + MinDesc = "MIN_DESC", + Natural = "NATURAL", + NonceAsc = "NONCE_ASC", + NonceDesc = "NONCE_DESC", + OfframpAddressAsc = "OFFRAMP_ADDRESS_ASC", + OfframpAddressDesc = "OFFRAMP_ADDRESS_DESC", + OnrampAddressAsc = "ONRAMP_ADDRESS_ASC", + OnrampAddressDesc = "ONRAMP_ADDRESS_DESC", + OriginAsc = "ORIGIN_ASC", + OriginDesc = "ORIGIN_DESC", + PermissionLessExecutionThresholdSecondsAsc = "PERMISSION_LESS_EXECUTION_THRESHOLD_SECONDS_ASC", + PermissionLessExecutionThresholdSecondsDesc = "PERMISSION_LESS_EXECUTION_THRESHOLD_SECONDS_DESC", + ReceiptBlockAsc = "RECEIPT_BLOCK_ASC", + ReceiptBlockDesc = "RECEIPT_BLOCK_DESC", + ReceiptFinalizedAsc = "RECEIPT_FINALIZED_ASC", + ReceiptFinalizedDesc = "RECEIPT_FINALIZED_DESC", + ReceiptLogIndexAsc = "RECEIPT_LOG_INDEX_ASC", + ReceiptLogIndexDesc = "RECEIPT_LOG_INDEX_DESC", + ReceiptTimestampAsc = "RECEIPT_TIMESTAMP_ASC", + ReceiptTimestampDesc = "RECEIPT_TIMESTAMP_DESC", + ReceiptTransactionHashAsc = "RECEIPT_TRANSACTION_HASH_ASC", + ReceiptTransactionHashDesc = "RECEIPT_TRANSACTION_HASH_DESC", + ReceiverAsc = "RECEIVER_ASC", + ReceiverDesc = "RECEIVER_DESC", + RootAsc = "ROOT_ASC", + RootDesc = "ROOT_DESC", + RouterAddressAsc = "ROUTER_ADDRESS_ASC", + RouterAddressDesc = "ROUTER_ADDRESS_DESC", + SenderAsc = "SENDER_ASC", + SenderDesc = "SENDER_DESC", + SendBlockAsc = "SEND_BLOCK_ASC", + SendBlockDesc = "SEND_BLOCK_DESC", + SendFinalizedAsc = "SEND_FINALIZED_ASC", + SendFinalizedDesc = "SEND_FINALIZED_DESC", + SendLogIndexAsc = "SEND_LOG_INDEX_ASC", + SendLogIndexDesc = "SEND_LOG_INDEX_DESC", + SendTimestampAsc = "SEND_TIMESTAMP_ASC", + SendTimestampDesc = "SEND_TIMESTAMP_DESC", + SendTransactionHashAsc = "SEND_TRANSACTION_HASH_ASC", + SendTransactionHashDesc = "SEND_TRANSACTION_HASH_DESC", + SequenceNumberAsc = "SEQUENCE_NUMBER_ASC", + SequenceNumberDesc = "SEQUENCE_NUMBER_DESC", + SourceChainIdAsc = "SOURCE_CHAIN_ID_ASC", + SourceChainIdDesc = "SOURCE_CHAIN_ID_DESC", + SourceNetworkNameAsc = "SOURCE_NETWORK_NAME_ASC", + SourceNetworkNameDesc = "SOURCE_NETWORK_NAME_DESC", + StateAsc = "STATE_ASC", + StateDesc = "STATE_DESC", + StrictAsc = "STRICT_ASC", + StrictDesc = "STRICT_DESC", + TokenAmountsAsc = "TOKEN_AMOUNTS_ASC", + TokenAmountsDesc = "TOKEN_AMOUNTS_DESC", + VotesAsc = "VOTES_ASC", + VotesDesc = "VOTES_DESC", +} + +export type CcipSend = { + __typename?: "CcipSend" + data?: Maybe + feeToken?: Maybe + feeTokenAmount?: Maybe + gasLimit?: Maybe + messageId?: Maybe + nonce?: Maybe + onrampAddress?: Maybe + receiver?: Maybe + sender?: Maybe + sequenceNumber?: Maybe + sourceChainSelector?: Maybe + sourceNetworkName?: Maybe + sourceTokenData?: Maybe + strict?: Maybe + tokenAmounts?: Maybe +} + +/** + * A condition to be used against `CcipSend` object types. All fields are tested + * for equality and combined with a logical ‘and.’ + */ +export type CcipSendCondition = { + /** Checks for equality with the object’s `data` field. */ + data?: InputMaybe + /** Checks for equality with the object’s `feeToken` field. */ + feeToken?: InputMaybe + /** Checks for equality with the object’s `feeTokenAmount` field. */ + feeTokenAmount?: InputMaybe + /** Checks for equality with the object’s `gasLimit` field. */ + gasLimit?: InputMaybe + /** Checks for equality with the object’s `messageId` field. */ + messageId?: InputMaybe + /** Checks for equality with the object’s `nonce` field. */ + nonce?: InputMaybe + /** Checks for equality with the object’s `onrampAddress` field. */ + onrampAddress?: InputMaybe + /** Checks for equality with the object’s `receiver` field. */ + receiver?: InputMaybe + /** Checks for equality with the object’s `sender` field. */ + sender?: InputMaybe + /** Checks for equality with the object’s `sequenceNumber` field. */ + sequenceNumber?: InputMaybe + /** Checks for equality with the object’s `sourceChainSelector` field. */ + sourceChainSelector?: InputMaybe + /** Checks for equality with the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Checks for equality with the object’s `sourceTokenData` field. */ + sourceTokenData?: InputMaybe + /** Checks for equality with the object’s `strict` field. */ + strict?: InputMaybe + /** Checks for equality with the object’s `tokenAmounts` field. */ + tokenAmounts?: InputMaybe +} + +/** A filter to be used against `CcipSend` object types. All fields are combined with a logical ‘and.’ */ +export type CcipSendFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `data` field. */ + data?: InputMaybe + /** Filter by the object’s `feeToken` field. */ + feeToken?: InputMaybe + /** Filter by the object’s `feeTokenAmount` field. */ + feeTokenAmount?: InputMaybe + /** Filter by the object’s `messageId` field. */ + messageId?: InputMaybe + /** Filter by the object’s `nonce` field. */ + nonce?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Filter by the object’s `onrampAddress` field. */ + onrampAddress?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `receiver` field. */ + receiver?: InputMaybe + /** Filter by the object’s `sender` field. */ + sender?: InputMaybe + /** Filter by the object’s `sequenceNumber` field. */ + sequenceNumber?: InputMaybe + /** Filter by the object’s `sourceChainSelector` field. */ + sourceChainSelector?: InputMaybe + /** Filter by the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Filter by the object’s `sourceTokenData` field. */ + sourceTokenData?: InputMaybe + /** Filter by the object’s `strict` field. */ + strict?: InputMaybe + /** Filter by the object’s `tokenAmounts` field. */ + tokenAmounts?: InputMaybe +} + +/** A connection to a list of `CcipSend` values. */ +export type CcipSendsConnection = { + __typename?: "CcipSendsConnection" + /** A list of edges which contains the `CcipSend` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipSend` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipSend` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipSend` edge in the connection. */ +export type CcipSendsEdge = { + __typename?: "CcipSendsEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipSend` at the end of the edge. */ + node: CcipSend +} + +/** Methods to use when ordering `CcipSend`. */ +export enum CcipSendsOrderBy { + DataAsc = "DATA_ASC", + DataDesc = "DATA_DESC", + FeeTokenAmountAsc = "FEE_TOKEN_AMOUNT_ASC", + FeeTokenAmountDesc = "FEE_TOKEN_AMOUNT_DESC", + FeeTokenAsc = "FEE_TOKEN_ASC", + FeeTokenDesc = "FEE_TOKEN_DESC", + GasLimitAsc = "GAS_LIMIT_ASC", + GasLimitDesc = "GAS_LIMIT_DESC", + MessageIdAsc = "MESSAGE_ID_ASC", + MessageIdDesc = "MESSAGE_ID_DESC", + Natural = "NATURAL", + NonceAsc = "NONCE_ASC", + NonceDesc = "NONCE_DESC", + OnrampAddressAsc = "ONRAMP_ADDRESS_ASC", + OnrampAddressDesc = "ONRAMP_ADDRESS_DESC", + ReceiverAsc = "RECEIVER_ASC", + ReceiverDesc = "RECEIVER_DESC", + SenderAsc = "SENDER_ASC", + SenderDesc = "SENDER_DESC", + SequenceNumberAsc = "SEQUENCE_NUMBER_ASC", + SequenceNumberDesc = "SEQUENCE_NUMBER_DESC", + SourceChainSelectorAsc = "SOURCE_CHAIN_SELECTOR_ASC", + SourceChainSelectorDesc = "SOURCE_CHAIN_SELECTOR_DESC", + SourceNetworkNameAsc = "SOURCE_NETWORK_NAME_ASC", + SourceNetworkNameDesc = "SOURCE_NETWORK_NAME_DESC", + SourceTokenDataAsc = "SOURCE_TOKEN_DATA_ASC", + SourceTokenDataDesc = "SOURCE_TOKEN_DATA_DESC", + StrictAsc = "STRICT_ASC", + StrictDesc = "STRICT_DESC", + TokenAmountsAsc = "TOKEN_AMOUNTS_ASC", + TokenAmountsDesc = "TOKEN_AMOUNTS_DESC", +} + +export type CcipTokenPool = { + __typename?: "CcipTokenPool" + administrator?: Maybe + allowlist?: Maybe + blockHash?: Maybe + blockNumber?: Maybe + blockTimestamp?: Maybe + createdAt?: Maybe + logIndex?: Maybe + minBlockConfirmations?: Maybe + network?: Maybe + owner?: Maybe + pendingAdministrator?: Maybe + pendingOwner?: Maybe + previousPool?: Maybe + previousPoolTypeAndVersion?: Maybe + registry?: Maybe + router?: Maybe + token?: Maybe + tokenDecimals?: Maybe + tokenName?: Maybe + tokenPool?: Maybe + tokenSymbol?: Maybe + transactionHash?: Maybe + typeAndVersion?: Maybe + updatedAt?: Maybe +} + +/** + * A condition to be used against `CcipTokenPool` object types. All fields are + * tested for equality and combined with a logical ‘and.’ + */ +export type CcipTokenPoolCondition = { + /** Checks for equality with the object’s `administrator` field. */ + administrator?: InputMaybe + /** Checks for equality with the object’s `allowlist` field. */ + allowlist?: InputMaybe + /** Checks for equality with the object’s `blockHash` field. */ + blockHash?: InputMaybe + /** Checks for equality with the object’s `blockNumber` field. */ + blockNumber?: InputMaybe + /** Checks for equality with the object’s `blockTimestamp` field. */ + blockTimestamp?: InputMaybe + /** Checks for equality with the object’s `createdAt` field. */ + createdAt?: InputMaybe + /** Checks for equality with the object’s `logIndex` field. */ + logIndex?: InputMaybe + /** Checks for equality with the object’s `minBlockConfirmations` field. */ + minBlockConfirmations?: InputMaybe + /** Checks for equality with the object’s `network` field. */ + network?: InputMaybe + /** Checks for equality with the object’s `owner` field. */ + owner?: InputMaybe + /** Checks for equality with the object’s `pendingAdministrator` field. */ + pendingAdministrator?: InputMaybe + /** Checks for equality with the object’s `pendingOwner` field. */ + pendingOwner?: InputMaybe + /** Checks for equality with the object’s `previousPool` field. */ + previousPool?: InputMaybe + /** Checks for equality with the object’s `previousPoolTypeAndVersion` field. */ + previousPoolTypeAndVersion?: InputMaybe + /** Checks for equality with the object’s `registry` field. */ + registry?: InputMaybe + /** Checks for equality with the object’s `router` field. */ + router?: InputMaybe + /** Checks for equality with the object’s `token` field. */ + token?: InputMaybe + /** Checks for equality with the object’s `tokenDecimals` field. */ + tokenDecimals?: InputMaybe + /** Checks for equality with the object’s `tokenName` field. */ + tokenName?: InputMaybe + /** Checks for equality with the object’s `tokenPool` field. */ + tokenPool?: InputMaybe + /** Checks for equality with the object’s `tokenSymbol` field. */ + tokenSymbol?: InputMaybe + /** Checks for equality with the object’s `transactionHash` field. */ + transactionHash?: InputMaybe + /** Checks for equality with the object’s `typeAndVersion` field. */ + typeAndVersion?: InputMaybe + /** Checks for equality with the object’s `updatedAt` field. */ + updatedAt?: InputMaybe +} + +export type CcipTokenPoolEvent = { + __typename?: "CcipTokenPoolEvent" + amount?: Maybe + blockHash?: Maybe + blockNumber?: Maybe + blockTimestamp?: Maybe + createdAt?: Maybe + event?: Maybe + logIndex?: Maybe + network?: Maybe + receiver?: Maybe + removed?: Maybe + sender?: Maybe + tokenAddress?: Maybe + tokenPoolAddress?: Maybe + transactionHash?: Maybe + updatedAt?: Maybe +} + +/** + * A condition to be used against `CcipTokenPoolEvent` object types. All fields are + * tested for equality and combined with a logical ‘and.’ + */ +export type CcipTokenPoolEventCondition = { + /** Checks for equality with the object’s `amount` field. */ + amount?: InputMaybe + /** Checks for equality with the object’s `blockHash` field. */ + blockHash?: InputMaybe + /** Checks for equality with the object’s `blockNumber` field. */ + blockNumber?: InputMaybe + /** Checks for equality with the object’s `blockTimestamp` field. */ + blockTimestamp?: InputMaybe + /** Checks for equality with the object’s `createdAt` field. */ + createdAt?: InputMaybe + /** Checks for equality with the object’s `event` field. */ + event?: InputMaybe + /** Checks for equality with the object’s `logIndex` field. */ + logIndex?: InputMaybe + /** Checks for equality with the object’s `network` field. */ + network?: InputMaybe + /** Checks for equality with the object’s `receiver` field. */ + receiver?: InputMaybe + /** Checks for equality with the object’s `removed` field. */ + removed?: InputMaybe + /** Checks for equality with the object’s `sender` field. */ + sender?: InputMaybe + /** Checks for equality with the object’s `tokenAddress` field. */ + tokenAddress?: InputMaybe + /** Checks for equality with the object’s `tokenPoolAddress` field. */ + tokenPoolAddress?: InputMaybe + /** Checks for equality with the object’s `transactionHash` field. */ + transactionHash?: InputMaybe + /** Checks for equality with the object’s `updatedAt` field. */ + updatedAt?: InputMaybe +} + +/** A filter to be used against `CcipTokenPoolEvent` object types. All fields are combined with a logical ‘and.’ */ +export type CcipTokenPoolEventFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `blockHash` field. */ + blockHash?: InputMaybe + /** Filter by the object’s `blockNumber` field. */ + blockNumber?: InputMaybe + /** Filter by the object’s `event` field. */ + event?: InputMaybe + /** Filter by the object’s `logIndex` field. */ + logIndex?: InputMaybe + /** Filter by the object’s `network` field. */ + network?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `receiver` field. */ + receiver?: InputMaybe + /** Filter by the object’s `removed` field. */ + removed?: InputMaybe + /** Filter by the object’s `sender` field. */ + sender?: InputMaybe + /** Filter by the object’s `tokenAddress` field. */ + tokenAddress?: InputMaybe + /** Filter by the object’s `tokenPoolAddress` field. */ + tokenPoolAddress?: InputMaybe + /** Filter by the object’s `transactionHash` field. */ + transactionHash?: InputMaybe +} + +/** A connection to a list of `CcipTokenPoolEvent` values. */ +export type CcipTokenPoolEventsConnection = { + __typename?: "CcipTokenPoolEventsConnection" + /** A list of edges which contains the `CcipTokenPoolEvent` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipTokenPoolEvent` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipTokenPoolEvent` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipTokenPoolEvent` edge in the connection. */ +export type CcipTokenPoolEventsEdge = { + __typename?: "CcipTokenPoolEventsEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipTokenPoolEvent` at the end of the edge. */ + node: CcipTokenPoolEvent +} + +/** Methods to use when ordering `CcipTokenPoolEvent`. */ +export enum CcipTokenPoolEventsOrderBy { + AmountAsc = "AMOUNT_ASC", + AmountDesc = "AMOUNT_DESC", + BlockHashAsc = "BLOCK_HASH_ASC", + BlockHashDesc = "BLOCK_HASH_DESC", + BlockNumberAsc = "BLOCK_NUMBER_ASC", + BlockNumberDesc = "BLOCK_NUMBER_DESC", + BlockTimestampAsc = "BLOCK_TIMESTAMP_ASC", + BlockTimestampDesc = "BLOCK_TIMESTAMP_DESC", + CreatedAtAsc = "CREATED_AT_ASC", + CreatedAtDesc = "CREATED_AT_DESC", + EventAsc = "EVENT_ASC", + EventDesc = "EVENT_DESC", + LogIndexAsc = "LOG_INDEX_ASC", + LogIndexDesc = "LOG_INDEX_DESC", + Natural = "NATURAL", + NetworkAsc = "NETWORK_ASC", + NetworkDesc = "NETWORK_DESC", + ReceiverAsc = "RECEIVER_ASC", + ReceiverDesc = "RECEIVER_DESC", + RemovedAsc = "REMOVED_ASC", + RemovedDesc = "REMOVED_DESC", + SenderAsc = "SENDER_ASC", + SenderDesc = "SENDER_DESC", + TokenAddressAsc = "TOKEN_ADDRESS_ASC", + TokenAddressDesc = "TOKEN_ADDRESS_DESC", + TokenPoolAddressAsc = "TOKEN_POOL_ADDRESS_ASC", + TokenPoolAddressDesc = "TOKEN_POOL_ADDRESS_DESC", + TransactionHashAsc = "TRANSACTION_HASH_ASC", + TransactionHashDesc = "TRANSACTION_HASH_DESC", + UpdatedAtAsc = "UPDATED_AT_ASC", + UpdatedAtDesc = "UPDATED_AT_DESC", +} + +/** A filter to be used against `CcipTokenPool` object types. All fields are combined with a logical ‘and.’ */ +export type CcipTokenPoolFilter = { + /** Filter by the object’s `administrator` field. */ + administrator?: InputMaybe + /** Filter by the object’s `allowlist` field. */ + allowlist?: InputMaybe + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `blockHash` field. */ + blockHash?: InputMaybe + /** Filter by the object’s `blockNumber` field. */ + blockNumber?: InputMaybe + /** Filter by the object’s `logIndex` field. */ + logIndex?: InputMaybe + /** Filter by the object’s `minBlockConfirmations` field. */ + minBlockConfirmations?: InputMaybe + /** Filter by the object’s `network` field. */ + network?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `owner` field. */ + owner?: InputMaybe + /** Filter by the object’s `pendingAdministrator` field. */ + pendingAdministrator?: InputMaybe + /** Filter by the object’s `pendingOwner` field. */ + pendingOwner?: InputMaybe + /** Filter by the object’s `previousPool` field. */ + previousPool?: InputMaybe + /** Filter by the object’s `previousPoolTypeAndVersion` field. */ + previousPoolTypeAndVersion?: InputMaybe + /** Filter by the object’s `registry` field. */ + registry?: InputMaybe + /** Filter by the object’s `router` field. */ + router?: InputMaybe + /** Filter by the object’s `token` field. */ + token?: InputMaybe + /** Filter by the object’s `tokenDecimals` field. */ + tokenDecimals?: InputMaybe + /** Filter by the object’s `tokenName` field. */ + tokenName?: InputMaybe + /** Filter by the object’s `tokenPool` field. */ + tokenPool?: InputMaybe + /** Filter by the object’s `tokenSymbol` field. */ + tokenSymbol?: InputMaybe + /** Filter by the object’s `transactionHash` field. */ + transactionHash?: InputMaybe + /** Filter by the object’s `typeAndVersion` field. */ + typeAndVersion?: InputMaybe +} + +export type CcipTokenPoolLane = { + __typename?: "CcipTokenPoolLane" + blockHash?: Maybe + blockNumber?: Maybe + blockTimestamp?: Maybe + createdAt?: Maybe + customInboundCapacity?: Maybe + customInboundEnabled?: Maybe + customInboundRate?: Maybe + customOutboundCapacity?: Maybe + customOutboundEnabled?: Maybe + customOutboundRate?: Maybe + inboundCapacity?: Maybe + inboundEnabled?: Maybe + inboundRate?: Maybe + logIndex?: Maybe + network?: Maybe + outboundCapacity?: Maybe + outboundEnabled?: Maybe + outboundRate?: Maybe + remoteNetworkName?: Maybe + remoteToken?: Maybe + remoteTokenPools?: Maybe>> + removed?: Maybe + token?: Maybe + tokenPool?: Maybe + transactionHash?: Maybe + updatedAt?: Maybe +} + +/** + * A condition to be used against `CcipTokenPoolLane` object types. All fields are + * tested for equality and combined with a logical ‘and.’ + */ +export type CcipTokenPoolLaneCondition = { + /** Checks for equality with the object’s `blockHash` field. */ + blockHash?: InputMaybe + /** Checks for equality with the object’s `blockNumber` field. */ + blockNumber?: InputMaybe + /** Checks for equality with the object’s `blockTimestamp` field. */ + blockTimestamp?: InputMaybe + /** Checks for equality with the object’s `createdAt` field. */ + createdAt?: InputMaybe + /** Checks for equality with the object’s `customInboundCapacity` field. */ + customInboundCapacity?: InputMaybe + /** Checks for equality with the object’s `customInboundEnabled` field. */ + customInboundEnabled?: InputMaybe + /** Checks for equality with the object’s `customInboundRate` field. */ + customInboundRate?: InputMaybe + /** Checks for equality with the object’s `customOutboundCapacity` field. */ + customOutboundCapacity?: InputMaybe + /** Checks for equality with the object’s `customOutboundEnabled` field. */ + customOutboundEnabled?: InputMaybe + /** Checks for equality with the object’s `customOutboundRate` field. */ + customOutboundRate?: InputMaybe + /** Checks for equality with the object’s `inboundCapacity` field. */ + inboundCapacity?: InputMaybe + /** Checks for equality with the object’s `inboundEnabled` field. */ + inboundEnabled?: InputMaybe + /** Checks for equality with the object’s `inboundRate` field. */ + inboundRate?: InputMaybe + /** Checks for equality with the object’s `logIndex` field. */ + logIndex?: InputMaybe + /** Checks for equality with the object’s `network` field. */ + network?: InputMaybe + /** Checks for equality with the object’s `outboundCapacity` field. */ + outboundCapacity?: InputMaybe + /** Checks for equality with the object’s `outboundEnabled` field. */ + outboundEnabled?: InputMaybe + /** Checks for equality with the object’s `outboundRate` field. */ + outboundRate?: InputMaybe + /** Checks for equality with the object’s `remoteNetworkName` field. */ + remoteNetworkName?: InputMaybe + /** Checks for equality with the object’s `remoteToken` field. */ + remoteToken?: InputMaybe + /** Checks for equality with the object’s `remoteTokenPools` field. */ + remoteTokenPools?: InputMaybe>> + /** Checks for equality with the object’s `removed` field. */ + removed?: InputMaybe + /** Checks for equality with the object’s `token` field. */ + token?: InputMaybe + /** Checks for equality with the object’s `tokenPool` field. */ + tokenPool?: InputMaybe + /** Checks for equality with the object’s `transactionHash` field. */ + transactionHash?: InputMaybe + /** Checks for equality with the object’s `updatedAt` field. */ + updatedAt?: InputMaybe +} + +/** A filter to be used against `CcipTokenPoolLane` object types. All fields are combined with a logical ‘and.’ */ +export type CcipTokenPoolLaneFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `blockHash` field. */ + blockHash?: InputMaybe + /** Filter by the object’s `blockNumber` field. */ + blockNumber?: InputMaybe + /** Filter by the object’s `customInboundEnabled` field. */ + customInboundEnabled?: InputMaybe + /** Filter by the object’s `customOutboundEnabled` field. */ + customOutboundEnabled?: InputMaybe + /** Filter by the object’s `inboundEnabled` field. */ + inboundEnabled?: InputMaybe + /** Filter by the object’s `logIndex` field. */ + logIndex?: InputMaybe + /** Filter by the object’s `network` field. */ + network?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `outboundEnabled` field. */ + outboundEnabled?: InputMaybe + /** Filter by the object’s `remoteNetworkName` field. */ + remoteNetworkName?: InputMaybe + /** Filter by the object’s `remoteToken` field. */ + remoteToken?: InputMaybe + /** Filter by the object’s `remoteTokenPools` field. */ + remoteTokenPools?: InputMaybe + /** Filter by the object’s `removed` field. */ + removed?: InputMaybe + /** Filter by the object’s `token` field. */ + token?: InputMaybe + /** Filter by the object’s `tokenPool` field. */ + tokenPool?: InputMaybe + /** Filter by the object’s `transactionHash` field. */ + transactionHash?: InputMaybe +} + +/** A connection to a list of `CcipTokenPoolLane` values. */ +export type CcipTokenPoolLanesConnection = { + __typename?: "CcipTokenPoolLanesConnection" + /** A list of edges which contains the `CcipTokenPoolLane` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipTokenPoolLane` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipTokenPoolLane` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipTokenPoolLane` edge in the connection. */ +export type CcipTokenPoolLanesEdge = { + __typename?: "CcipTokenPoolLanesEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipTokenPoolLane` at the end of the edge. */ + node: CcipTokenPoolLane +} + +export type CcipTokenPoolLanesGroup = { + __typename?: "CcipTokenPoolLanesGroup" + admins?: Maybe>> + createdAt?: Maybe + owners?: Maybe>> + pk?: Maybe + tokenGroup?: Maybe + updatedAt?: Maybe +} + +/** + * A condition to be used against `CcipTokenPoolLanesGroup` object types. All + * fields are tested for equality and combined with a logical ‘and.’ + */ +export type CcipTokenPoolLanesGroupCondition = { + /** Checks for equality with the object’s `admins` field. */ + admins?: InputMaybe>> + /** Checks for equality with the object’s `createdAt` field. */ + createdAt?: InputMaybe + /** Checks for equality with the object’s `owners` field. */ + owners?: InputMaybe>> + /** Checks for equality with the object’s `pk` field. */ + pk?: InputMaybe + /** Checks for equality with the object’s `tokenGroup` field. */ + tokenGroup?: InputMaybe + /** Checks for equality with the object’s `updatedAt` field. */ + updatedAt?: InputMaybe +} + +/** A filter to be used against `CcipTokenPoolLanesGroup` object types. All fields are combined with a logical ‘and.’ */ +export type CcipTokenPoolLanesGroupFilter = { + /** Filter by the object’s `admins` field. */ + admins?: InputMaybe + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Negates the expression. */ + not?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `owners` field. */ + owners?: InputMaybe + /** Filter by the object’s `pk` field. */ + pk?: InputMaybe + /** Filter by the object’s `tokenGroup` field. */ + tokenGroup?: InputMaybe +} + +/** A connection to a list of `CcipTokenPoolLanesGroup` values. */ +export type CcipTokenPoolLanesGroupsConnection = { + __typename?: "CcipTokenPoolLanesGroupsConnection" + /** A list of edges which contains the `CcipTokenPoolLanesGroup` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipTokenPoolLanesGroup` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipTokenPoolLanesGroup` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipTokenPoolLanesGroup` edge in the connection. */ +export type CcipTokenPoolLanesGroupsEdge = { + __typename?: "CcipTokenPoolLanesGroupsEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipTokenPoolLanesGroup` at the end of the edge. */ + node: CcipTokenPoolLanesGroup +} + +/** Methods to use when ordering `CcipTokenPoolLanesGroup`. */ +export enum CcipTokenPoolLanesGroupsOrderBy { + AdminsAsc = "ADMINS_ASC", + AdminsDesc = "ADMINS_DESC", + CreatedAtAsc = "CREATED_AT_ASC", + CreatedAtDesc = "CREATED_AT_DESC", + Natural = "NATURAL", + OwnersAsc = "OWNERS_ASC", + OwnersDesc = "OWNERS_DESC", + PkAsc = "PK_ASC", + PkDesc = "PK_DESC", + TokenGroupAsc = "TOKEN_GROUP_ASC", + TokenGroupDesc = "TOKEN_GROUP_DESC", + UpdatedAtAsc = "UPDATED_AT_ASC", + UpdatedAtDesc = "UPDATED_AT_DESC", +} + +/** Methods to use when ordering `CcipTokenPoolLane`. */ +export enum CcipTokenPoolLanesOrderBy { + BlockHashAsc = "BLOCK_HASH_ASC", + BlockHashDesc = "BLOCK_HASH_DESC", + BlockNumberAsc = "BLOCK_NUMBER_ASC", + BlockNumberDesc = "BLOCK_NUMBER_DESC", + BlockTimestampAsc = "BLOCK_TIMESTAMP_ASC", + BlockTimestampDesc = "BLOCK_TIMESTAMP_DESC", + CreatedAtAsc = "CREATED_AT_ASC", + CreatedAtDesc = "CREATED_AT_DESC", + CustomInboundCapacityAsc = "CUSTOM_INBOUND_CAPACITY_ASC", + CustomInboundCapacityDesc = "CUSTOM_INBOUND_CAPACITY_DESC", + CustomInboundEnabledAsc = "CUSTOM_INBOUND_ENABLED_ASC", + CustomInboundEnabledDesc = "CUSTOM_INBOUND_ENABLED_DESC", + CustomInboundRateAsc = "CUSTOM_INBOUND_RATE_ASC", + CustomInboundRateDesc = "CUSTOM_INBOUND_RATE_DESC", + CustomOutboundCapacityAsc = "CUSTOM_OUTBOUND_CAPACITY_ASC", + CustomOutboundCapacityDesc = "CUSTOM_OUTBOUND_CAPACITY_DESC", + CustomOutboundEnabledAsc = "CUSTOM_OUTBOUND_ENABLED_ASC", + CustomOutboundEnabledDesc = "CUSTOM_OUTBOUND_ENABLED_DESC", + CustomOutboundRateAsc = "CUSTOM_OUTBOUND_RATE_ASC", + CustomOutboundRateDesc = "CUSTOM_OUTBOUND_RATE_DESC", + InboundCapacityAsc = "INBOUND_CAPACITY_ASC", + InboundCapacityDesc = "INBOUND_CAPACITY_DESC", + InboundEnabledAsc = "INBOUND_ENABLED_ASC", + InboundEnabledDesc = "INBOUND_ENABLED_DESC", + InboundRateAsc = "INBOUND_RATE_ASC", + InboundRateDesc = "INBOUND_RATE_DESC", + LogIndexAsc = "LOG_INDEX_ASC", + LogIndexDesc = "LOG_INDEX_DESC", + Natural = "NATURAL", + NetworkAsc = "NETWORK_ASC", + NetworkDesc = "NETWORK_DESC", + OutboundCapacityAsc = "OUTBOUND_CAPACITY_ASC", + OutboundCapacityDesc = "OUTBOUND_CAPACITY_DESC", + OutboundEnabledAsc = "OUTBOUND_ENABLED_ASC", + OutboundEnabledDesc = "OUTBOUND_ENABLED_DESC", + OutboundRateAsc = "OUTBOUND_RATE_ASC", + OutboundRateDesc = "OUTBOUND_RATE_DESC", + RemoteNetworkNameAsc = "REMOTE_NETWORK_NAME_ASC", + RemoteNetworkNameDesc = "REMOTE_NETWORK_NAME_DESC", + RemoteTokenAsc = "REMOTE_TOKEN_ASC", + RemoteTokenDesc = "REMOTE_TOKEN_DESC", + RemoteTokenPoolsAsc = "REMOTE_TOKEN_POOLS_ASC", + RemoteTokenPoolsDesc = "REMOTE_TOKEN_POOLS_DESC", + RemovedAsc = "REMOVED_ASC", + RemovedDesc = "REMOVED_DESC", + TokenAsc = "TOKEN_ASC", + TokenDesc = "TOKEN_DESC", + TokenPoolAsc = "TOKEN_POOL_ASC", + TokenPoolDesc = "TOKEN_POOL_DESC", + TransactionHashAsc = "TRANSACTION_HASH_ASC", + TransactionHashDesc = "TRANSACTION_HASH_DESC", + UpdatedAtAsc = "UPDATED_AT_ASC", + UpdatedAtDesc = "UPDATED_AT_DESC", +} + +export type CcipTokenPoolLanesWithPool = { + __typename?: "CcipTokenPoolLanesWithPool" + administrator?: Maybe + allowlist?: Maybe + blockHash?: Maybe + blockNumber?: Maybe + blockTimestamp?: Maybe + createdAt?: Maybe + customInboundCapacity?: Maybe + customInboundEnabled?: Maybe + customInboundRate?: Maybe + customOutboundCapacity?: Maybe + customOutboundEnabled?: Maybe + customOutboundRate?: Maybe + inboundCapacity?: Maybe + inboundEnabled?: Maybe + inboundRate?: Maybe + logIndex?: Maybe + network?: Maybe + outboundCapacity?: Maybe + outboundEnabled?: Maybe + outboundRate?: Maybe + owner?: Maybe + pendingAdministrator?: Maybe + pendingOwner?: Maybe + previousPool?: Maybe + previousPoolTypeAndVersion?: Maybe + registry?: Maybe + remoteNetworkName?: Maybe + remoteToken?: Maybe + remoteTokenPools?: Maybe>> + removed?: Maybe + router?: Maybe + token?: Maybe + tokenDecimals?: Maybe + tokenName?: Maybe + tokenPool?: Maybe + tokenRegisteredAt?: Maybe + tokenSymbol?: Maybe + transactionHash?: Maybe + typeAndVersion?: Maybe + updatedAt?: Maybe +} + +/** + * A condition to be used against `CcipTokenPoolLanesWithPool` object types. All + * fields are tested for equality and combined with a logical ‘and.’ + */ +export type CcipTokenPoolLanesWithPoolCondition = { + /** Checks for equality with the object’s `administrator` field. */ + administrator?: InputMaybe + /** Checks for equality with the object’s `allowlist` field. */ + allowlist?: InputMaybe + /** Checks for equality with the object’s `blockHash` field. */ + blockHash?: InputMaybe + /** Checks for equality with the object’s `blockNumber` field. */ + blockNumber?: InputMaybe + /** Checks for equality with the object’s `blockTimestamp` field. */ + blockTimestamp?: InputMaybe + /** Checks for equality with the object’s `createdAt` field. */ + createdAt?: InputMaybe + /** Checks for equality with the object’s `customInboundCapacity` field. */ + customInboundCapacity?: InputMaybe + /** Checks for equality with the object’s `customInboundEnabled` field. */ + customInboundEnabled?: InputMaybe + /** Checks for equality with the object’s `customInboundRate` field. */ + customInboundRate?: InputMaybe + /** Checks for equality with the object’s `customOutboundCapacity` field. */ + customOutboundCapacity?: InputMaybe + /** Checks for equality with the object’s `customOutboundEnabled` field. */ + customOutboundEnabled?: InputMaybe + /** Checks for equality with the object’s `customOutboundRate` field. */ + customOutboundRate?: InputMaybe + /** Checks for equality with the object’s `inboundCapacity` field. */ + inboundCapacity?: InputMaybe + /** Checks for equality with the object’s `inboundEnabled` field. */ + inboundEnabled?: InputMaybe + /** Checks for equality with the object’s `inboundRate` field. */ + inboundRate?: InputMaybe + /** Checks for equality with the object’s `logIndex` field. */ + logIndex?: InputMaybe + /** Checks for equality with the object’s `network` field. */ + network?: InputMaybe + /** Checks for equality with the object’s `outboundCapacity` field. */ + outboundCapacity?: InputMaybe + /** Checks for equality with the object’s `outboundEnabled` field. */ + outboundEnabled?: InputMaybe + /** Checks for equality with the object’s `outboundRate` field. */ + outboundRate?: InputMaybe + /** Checks for equality with the object’s `owner` field. */ + owner?: InputMaybe + /** Checks for equality with the object’s `pendingAdministrator` field. */ + pendingAdministrator?: InputMaybe + /** Checks for equality with the object’s `pendingOwner` field. */ + pendingOwner?: InputMaybe + /** Checks for equality with the object’s `previousPool` field. */ + previousPool?: InputMaybe + /** Checks for equality with the object’s `previousPoolTypeAndVersion` field. */ + previousPoolTypeAndVersion?: InputMaybe + /** Checks for equality with the object’s `registry` field. */ + registry?: InputMaybe + /** Checks for equality with the object’s `remoteNetworkName` field. */ + remoteNetworkName?: InputMaybe + /** Checks for equality with the object’s `remoteToken` field. */ + remoteToken?: InputMaybe + /** Checks for equality with the object’s `remoteTokenPools` field. */ + remoteTokenPools?: InputMaybe>> + /** Checks for equality with the object’s `removed` field. */ + removed?: InputMaybe + /** Checks for equality with the object’s `router` field. */ + router?: InputMaybe + /** Checks for equality with the object’s `token` field. */ + token?: InputMaybe + /** Checks for equality with the object’s `tokenDecimals` field. */ + tokenDecimals?: InputMaybe + /** Checks for equality with the object’s `tokenName` field. */ + tokenName?: InputMaybe + /** Checks for equality with the object’s `tokenPool` field. */ + tokenPool?: InputMaybe + /** Checks for equality with the object’s `tokenRegisteredAt` field. */ + tokenRegisteredAt?: InputMaybe + /** Checks for equality with the object’s `tokenSymbol` field. */ + tokenSymbol?: InputMaybe + /** Checks for equality with the object’s `transactionHash` field. */ + transactionHash?: InputMaybe + /** Checks for equality with the object’s `typeAndVersion` field. */ + typeAndVersion?: InputMaybe + /** Checks for equality with the object’s `updatedAt` field. */ + updatedAt?: InputMaybe +} + +/** A filter to be used against `CcipTokenPoolLanesWithPool` object types. All fields are combined with a logical ‘and.’ */ +export type CcipTokenPoolLanesWithPoolFilter = { + /** Filter by the object’s `administrator` field. */ + administrator?: InputMaybe + /** Filter by the object’s `allowlist` field. */ + allowlist?: InputMaybe + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `blockHash` field. */ + blockHash?: InputMaybe + /** Filter by the object’s `blockNumber` field. */ + blockNumber?: InputMaybe + /** Filter by the object’s `customInboundEnabled` field. */ + customInboundEnabled?: InputMaybe + /** Filter by the object’s `customOutboundEnabled` field. */ + customOutboundEnabled?: InputMaybe + /** Filter by the object’s `inboundEnabled` field. */ + inboundEnabled?: InputMaybe + /** Filter by the object’s `logIndex` field. */ + logIndex?: InputMaybe + /** Filter by the object’s `network` field. */ + network?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `outboundEnabled` field. */ + outboundEnabled?: InputMaybe + /** Filter by the object’s `owner` field. */ + owner?: InputMaybe + /** Filter by the object’s `pendingAdministrator` field. */ + pendingAdministrator?: InputMaybe + /** Filter by the object’s `pendingOwner` field. */ + pendingOwner?: InputMaybe + /** Filter by the object’s `previousPool` field. */ + previousPool?: InputMaybe + /** Filter by the object’s `previousPoolTypeAndVersion` field. */ + previousPoolTypeAndVersion?: InputMaybe + /** Filter by the object’s `registry` field. */ + registry?: InputMaybe + /** Filter by the object’s `remoteNetworkName` field. */ + remoteNetworkName?: InputMaybe + /** Filter by the object’s `remoteToken` field. */ + remoteToken?: InputMaybe + /** Filter by the object’s `remoteTokenPools` field. */ + remoteTokenPools?: InputMaybe + /** Filter by the object’s `removed` field. */ + removed?: InputMaybe + /** Filter by the object’s `router` field. */ + router?: InputMaybe + /** Filter by the object’s `token` field. */ + token?: InputMaybe + /** Filter by the object’s `tokenDecimals` field. */ + tokenDecimals?: InputMaybe + /** Filter by the object’s `tokenName` field. */ + tokenName?: InputMaybe + /** Filter by the object’s `tokenPool` field. */ + tokenPool?: InputMaybe + /** Filter by the object’s `tokenSymbol` field. */ + tokenSymbol?: InputMaybe + /** Filter by the object’s `transactionHash` field. */ + transactionHash?: InputMaybe + /** Filter by the object’s `typeAndVersion` field. */ + typeAndVersion?: InputMaybe +} + +/** A connection to a list of `CcipTokenPoolLanesWithPool` values. */ +export type CcipTokenPoolLanesWithPoolsConnection = { + __typename?: "CcipTokenPoolLanesWithPoolsConnection" + /** A list of edges which contains the `CcipTokenPoolLanesWithPool` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipTokenPoolLanesWithPool` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipTokenPoolLanesWithPool` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipTokenPoolLanesWithPool` edge in the connection. */ +export type CcipTokenPoolLanesWithPoolsEdge = { + __typename?: "CcipTokenPoolLanesWithPoolsEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipTokenPoolLanesWithPool` at the end of the edge. */ + node: CcipTokenPoolLanesWithPool +} + +/** Methods to use when ordering `CcipTokenPoolLanesWithPool`. */ +export enum CcipTokenPoolLanesWithPoolsOrderBy { + AdministratorAsc = "ADMINISTRATOR_ASC", + AdministratorDesc = "ADMINISTRATOR_DESC", + AllowlistAsc = "ALLOWLIST_ASC", + AllowlistDesc = "ALLOWLIST_DESC", + BlockHashAsc = "BLOCK_HASH_ASC", + BlockHashDesc = "BLOCK_HASH_DESC", + BlockNumberAsc = "BLOCK_NUMBER_ASC", + BlockNumberDesc = "BLOCK_NUMBER_DESC", + BlockTimestampAsc = "BLOCK_TIMESTAMP_ASC", + BlockTimestampDesc = "BLOCK_TIMESTAMP_DESC", + CreatedAtAsc = "CREATED_AT_ASC", + CreatedAtDesc = "CREATED_AT_DESC", + CustomInboundCapacityAsc = "CUSTOM_INBOUND_CAPACITY_ASC", + CustomInboundCapacityDesc = "CUSTOM_INBOUND_CAPACITY_DESC", + CustomInboundEnabledAsc = "CUSTOM_INBOUND_ENABLED_ASC", + CustomInboundEnabledDesc = "CUSTOM_INBOUND_ENABLED_DESC", + CustomInboundRateAsc = "CUSTOM_INBOUND_RATE_ASC", + CustomInboundRateDesc = "CUSTOM_INBOUND_RATE_DESC", + CustomOutboundCapacityAsc = "CUSTOM_OUTBOUND_CAPACITY_ASC", + CustomOutboundCapacityDesc = "CUSTOM_OUTBOUND_CAPACITY_DESC", + CustomOutboundEnabledAsc = "CUSTOM_OUTBOUND_ENABLED_ASC", + CustomOutboundEnabledDesc = "CUSTOM_OUTBOUND_ENABLED_DESC", + CustomOutboundRateAsc = "CUSTOM_OUTBOUND_RATE_ASC", + CustomOutboundRateDesc = "CUSTOM_OUTBOUND_RATE_DESC", + InboundCapacityAsc = "INBOUND_CAPACITY_ASC", + InboundCapacityDesc = "INBOUND_CAPACITY_DESC", + InboundEnabledAsc = "INBOUND_ENABLED_ASC", + InboundEnabledDesc = "INBOUND_ENABLED_DESC", + InboundRateAsc = "INBOUND_RATE_ASC", + InboundRateDesc = "INBOUND_RATE_DESC", + LogIndexAsc = "LOG_INDEX_ASC", + LogIndexDesc = "LOG_INDEX_DESC", + Natural = "NATURAL", + NetworkAsc = "NETWORK_ASC", + NetworkDesc = "NETWORK_DESC", + OutboundCapacityAsc = "OUTBOUND_CAPACITY_ASC", + OutboundCapacityDesc = "OUTBOUND_CAPACITY_DESC", + OutboundEnabledAsc = "OUTBOUND_ENABLED_ASC", + OutboundEnabledDesc = "OUTBOUND_ENABLED_DESC", + OutboundRateAsc = "OUTBOUND_RATE_ASC", + OutboundRateDesc = "OUTBOUND_RATE_DESC", + OwnerAsc = "OWNER_ASC", + OwnerDesc = "OWNER_DESC", + PendingAdministratorAsc = "PENDING_ADMINISTRATOR_ASC", + PendingAdministratorDesc = "PENDING_ADMINISTRATOR_DESC", + PendingOwnerAsc = "PENDING_OWNER_ASC", + PendingOwnerDesc = "PENDING_OWNER_DESC", + PreviousPoolAsc = "PREVIOUS_POOL_ASC", + PreviousPoolDesc = "PREVIOUS_POOL_DESC", + PreviousPoolTypeAndVersionAsc = "PREVIOUS_POOL_TYPE_AND_VERSION_ASC", + PreviousPoolTypeAndVersionDesc = "PREVIOUS_POOL_TYPE_AND_VERSION_DESC", + RegistryAsc = "REGISTRY_ASC", + RegistryDesc = "REGISTRY_DESC", + RemoteNetworkNameAsc = "REMOTE_NETWORK_NAME_ASC", + RemoteNetworkNameDesc = "REMOTE_NETWORK_NAME_DESC", + RemoteTokenAsc = "REMOTE_TOKEN_ASC", + RemoteTokenDesc = "REMOTE_TOKEN_DESC", + RemoteTokenPoolsAsc = "REMOTE_TOKEN_POOLS_ASC", + RemoteTokenPoolsDesc = "REMOTE_TOKEN_POOLS_DESC", + RemovedAsc = "REMOVED_ASC", + RemovedDesc = "REMOVED_DESC", + RouterAsc = "ROUTER_ASC", + RouterDesc = "ROUTER_DESC", + TokenAsc = "TOKEN_ASC", + TokenDecimalsAsc = "TOKEN_DECIMALS_ASC", + TokenDecimalsDesc = "TOKEN_DECIMALS_DESC", + TokenDesc = "TOKEN_DESC", + TokenNameAsc = "TOKEN_NAME_ASC", + TokenNameDesc = "TOKEN_NAME_DESC", + TokenPoolAsc = "TOKEN_POOL_ASC", + TokenPoolDesc = "TOKEN_POOL_DESC", + TokenRegisteredAtAsc = "TOKEN_REGISTERED_AT_ASC", + TokenRegisteredAtDesc = "TOKEN_REGISTERED_AT_DESC", + TokenSymbolAsc = "TOKEN_SYMBOL_ASC", + TokenSymbolDesc = "TOKEN_SYMBOL_DESC", + TransactionHashAsc = "TRANSACTION_HASH_ASC", + TransactionHashDesc = "TRANSACTION_HASH_DESC", + TypeAndVersionAsc = "TYPE_AND_VERSION_ASC", + TypeAndVersionDesc = "TYPE_AND_VERSION_DESC", + UpdatedAtAsc = "UPDATED_AT_ASC", + UpdatedAtDesc = "UPDATED_AT_DESC", +} + +/** A connection to a list of `CcipTokenPool` values. */ +export type CcipTokenPoolsConnection = { + __typename?: "CcipTokenPoolsConnection" + /** A list of edges which contains the `CcipTokenPool` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipTokenPool` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipTokenPool` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipTokenPool` edge in the connection. */ +export type CcipTokenPoolsEdge = { + __typename?: "CcipTokenPoolsEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipTokenPool` at the end of the edge. */ + node: CcipTokenPool +} + +/** Methods to use when ordering `CcipTokenPool`. */ +export enum CcipTokenPoolsOrderBy { + AdministratorAsc = "ADMINISTRATOR_ASC", + AdministratorDesc = "ADMINISTRATOR_DESC", + AllowlistAsc = "ALLOWLIST_ASC", + AllowlistDesc = "ALLOWLIST_DESC", + BlockHashAsc = "BLOCK_HASH_ASC", + BlockHashDesc = "BLOCK_HASH_DESC", + BlockNumberAsc = "BLOCK_NUMBER_ASC", + BlockNumberDesc = "BLOCK_NUMBER_DESC", + BlockTimestampAsc = "BLOCK_TIMESTAMP_ASC", + BlockTimestampDesc = "BLOCK_TIMESTAMP_DESC", + CreatedAtAsc = "CREATED_AT_ASC", + CreatedAtDesc = "CREATED_AT_DESC", + LogIndexAsc = "LOG_INDEX_ASC", + LogIndexDesc = "LOG_INDEX_DESC", + MinBlockConfirmationsAsc = "MIN_BLOCK_CONFIRMATIONS_ASC", + MinBlockConfirmationsDesc = "MIN_BLOCK_CONFIRMATIONS_DESC", + Natural = "NATURAL", + NetworkAsc = "NETWORK_ASC", + NetworkDesc = "NETWORK_DESC", + OwnerAsc = "OWNER_ASC", + OwnerDesc = "OWNER_DESC", + PendingAdministratorAsc = "PENDING_ADMINISTRATOR_ASC", + PendingAdministratorDesc = "PENDING_ADMINISTRATOR_DESC", + PendingOwnerAsc = "PENDING_OWNER_ASC", + PendingOwnerDesc = "PENDING_OWNER_DESC", + PreviousPoolAsc = "PREVIOUS_POOL_ASC", + PreviousPoolDesc = "PREVIOUS_POOL_DESC", + PreviousPoolTypeAndVersionAsc = "PREVIOUS_POOL_TYPE_AND_VERSION_ASC", + PreviousPoolTypeAndVersionDesc = "PREVIOUS_POOL_TYPE_AND_VERSION_DESC", + RegistryAsc = "REGISTRY_ASC", + RegistryDesc = "REGISTRY_DESC", + RouterAsc = "ROUTER_ASC", + RouterDesc = "ROUTER_DESC", + TokenAsc = "TOKEN_ASC", + TokenDecimalsAsc = "TOKEN_DECIMALS_ASC", + TokenDecimalsDesc = "TOKEN_DECIMALS_DESC", + TokenDesc = "TOKEN_DESC", + TokenNameAsc = "TOKEN_NAME_ASC", + TokenNameDesc = "TOKEN_NAME_DESC", + TokenPoolAsc = "TOKEN_POOL_ASC", + TokenPoolDesc = "TOKEN_POOL_DESC", + TokenSymbolAsc = "TOKEN_SYMBOL_ASC", + TokenSymbolDesc = "TOKEN_SYMBOL_DESC", + TransactionHashAsc = "TRANSACTION_HASH_ASC", + TransactionHashDesc = "TRANSACTION_HASH_DESC", + TypeAndVersionAsc = "TYPE_AND_VERSION_ASC", + TypeAndVersionDesc = "TYPE_AND_VERSION_DESC", + UpdatedAtAsc = "UPDATED_AT_ASC", + UpdatedAtDesc = "UPDATED_AT_DESC", +} + +export type CcipTransaction = { + __typename?: "CcipTransaction" + blockTimestamp?: Maybe + commitStoreAddress?: Maybe + destChainId?: Maybe + destNetworkName?: Maybe + destRouterAddress?: Maybe + destTransactionHash?: Maybe + info?: Maybe + infoRaw?: Maybe + messageId?: Maybe + offrampAddress?: Maybe + onrampAddress?: Maybe + origin?: Maybe + receiptTimestamp?: Maybe + receiver?: Maybe + sender?: Maybe + sequenceNumber?: Maybe + sourceChainId?: Maybe + sourceNetworkName?: Maybe + sourceRouterAddress?: Maybe + state?: Maybe + transactionHash?: Maybe +} + +/** + * A condition to be used against `CcipTransaction` object types. All fields are + * tested for equality and combined with a logical ‘and.’ + */ +export type CcipTransactionCondition = { + /** Checks for equality with the object’s `blockTimestamp` field. */ + blockTimestamp?: InputMaybe + /** Checks for equality with the object’s `commitStoreAddress` field. */ + commitStoreAddress?: InputMaybe + /** Checks for equality with the object’s `destChainId` field. */ + destChainId?: InputMaybe + /** Checks for equality with the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Checks for equality with the object’s `destRouterAddress` field. */ + destRouterAddress?: InputMaybe + /** Checks for equality with the object’s `destTransactionHash` field. */ + destTransactionHash?: InputMaybe + /** Checks for equality with the object’s `info` field. */ + info?: InputMaybe + /** Checks for equality with the object’s `infoRaw` field. */ + infoRaw?: InputMaybe + /** Checks for equality with the object’s `messageId` field. */ + messageId?: InputMaybe + /** Checks for equality with the object’s `offrampAddress` field. */ + offrampAddress?: InputMaybe + /** Checks for equality with the object’s `onrampAddress` field. */ + onrampAddress?: InputMaybe + /** Checks for equality with the object’s `origin` field. */ + origin?: InputMaybe + /** Checks for equality with the object’s `receiptTimestamp` field. */ + receiptTimestamp?: InputMaybe + /** Checks for equality with the object’s `receiver` field. */ + receiver?: InputMaybe + /** Checks for equality with the object’s `sender` field. */ + sender?: InputMaybe + /** Checks for equality with the object’s `sequenceNumber` field. */ + sequenceNumber?: InputMaybe + /** Checks for equality with the object’s `sourceChainId` field. */ + sourceChainId?: InputMaybe + /** Checks for equality with the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Checks for equality with the object’s `sourceRouterAddress` field. */ + sourceRouterAddress?: InputMaybe + /** Checks for equality with the object’s `state` field. */ + state?: InputMaybe + /** Checks for equality with the object’s `transactionHash` field. */ + transactionHash?: InputMaybe +} + +/** A filter to be used against `CcipTransaction` object types. All fields are combined with a logical ‘and.’ */ +export type CcipTransactionFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `commitStoreAddress` field. */ + commitStoreAddress?: InputMaybe + /** Filter by the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Filter by the object’s `destRouterAddress` field. */ + destRouterAddress?: InputMaybe + /** Filter by the object’s `destTransactionHash` field. */ + destTransactionHash?: InputMaybe + /** Filter by the object’s `info` field. */ + info?: InputMaybe + /** Filter by the object’s `infoRaw` field. */ + infoRaw?: InputMaybe + /** Filter by the object’s `messageId` field. */ + messageId?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Filter by the object’s `offrampAddress` field. */ + offrampAddress?: InputMaybe + /** Filter by the object’s `onrampAddress` field. */ + onrampAddress?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `origin` field. */ + origin?: InputMaybe + /** Filter by the object’s `receiver` field. */ + receiver?: InputMaybe + /** Filter by the object’s `sender` field. */ + sender?: InputMaybe + /** Filter by the object’s `sequenceNumber` field. */ + sequenceNumber?: InputMaybe + /** Filter by the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Filter by the object’s `sourceRouterAddress` field. */ + sourceRouterAddress?: InputMaybe + /** Filter by the object’s `state` field. */ + state?: InputMaybe + /** Filter by the object’s `transactionHash` field. */ + transactionHash?: InputMaybe +} + +/** A connection to a list of `CcipTransaction` values. */ +export type CcipTransactionsConnection = { + __typename?: "CcipTransactionsConnection" + /** A list of edges which contains the `CcipTransaction` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipTransaction` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipTransaction` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipTransaction` edge in the connection. */ +export type CcipTransactionsEdge = { + __typename?: "CcipTransactionsEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipTransaction` at the end of the edge. */ + node: CcipTransaction +} + +export type CcipTransactionsFlat = { + __typename?: "CcipTransactionsFlat" + blockTimestamp?: Maybe + commitStoreAddress?: Maybe + data?: Maybe + destChainId?: Maybe + destNetworkName?: Maybe + destRouterAddress?: Maybe + destTransactionHash?: Maybe + feeToken?: Maybe + feeTokenAmount?: Maybe + gasLimit?: Maybe + info?: Maybe + infoRaw?: Maybe + messageId?: Maybe + nonce?: Maybe + offrampAddress?: Maybe + onrampAddress?: Maybe + origin?: Maybe + receiptTimestamp?: Maybe + receiver?: Maybe + sender?: Maybe + sequenceNumber?: Maybe + sourceChainId?: Maybe + sourceNetworkName?: Maybe + sourceRouterAddress?: Maybe + state?: Maybe + strict?: Maybe + tokenAmounts?: Maybe + transactionHash?: Maybe +} + +/** + * A condition to be used against `CcipTransactionsFlat` object types. All fields + * are tested for equality and combined with a logical ‘and.’ + */ +export type CcipTransactionsFlatCondition = { + /** Checks for equality with the object’s `blockTimestamp` field. */ + blockTimestamp?: InputMaybe + /** Checks for equality with the object’s `commitStoreAddress` field. */ + commitStoreAddress?: InputMaybe + /** Checks for equality with the object’s `data` field. */ + data?: InputMaybe + /** Checks for equality with the object’s `destChainId` field. */ + destChainId?: InputMaybe + /** Checks for equality with the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Checks for equality with the object’s `destRouterAddress` field. */ + destRouterAddress?: InputMaybe + /** Checks for equality with the object’s `destTransactionHash` field. */ + destTransactionHash?: InputMaybe + /** Checks for equality with the object’s `feeToken` field. */ + feeToken?: InputMaybe + /** Checks for equality with the object’s `feeTokenAmount` field. */ + feeTokenAmount?: InputMaybe + /** Checks for equality with the object’s `gasLimit` field. */ + gasLimit?: InputMaybe + /** Checks for equality with the object’s `info` field. */ + info?: InputMaybe + /** Checks for equality with the object’s `infoRaw` field. */ + infoRaw?: InputMaybe + /** Checks for equality with the object’s `messageId` field. */ + messageId?: InputMaybe + /** Checks for equality with the object’s `nonce` field. */ + nonce?: InputMaybe + /** Checks for equality with the object’s `offrampAddress` field. */ + offrampAddress?: InputMaybe + /** Checks for equality with the object’s `onrampAddress` field. */ + onrampAddress?: InputMaybe + /** Checks for equality with the object’s `origin` field. */ + origin?: InputMaybe + /** Checks for equality with the object’s `receiptTimestamp` field. */ + receiptTimestamp?: InputMaybe + /** Checks for equality with the object’s `receiver` field. */ + receiver?: InputMaybe + /** Checks for equality with the object’s `sender` field. */ + sender?: InputMaybe + /** Checks for equality with the object’s `sequenceNumber` field. */ + sequenceNumber?: InputMaybe + /** Checks for equality with the object’s `sourceChainId` field. */ + sourceChainId?: InputMaybe + /** Checks for equality with the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Checks for equality with the object’s `sourceRouterAddress` field. */ + sourceRouterAddress?: InputMaybe + /** Checks for equality with the object’s `state` field. */ + state?: InputMaybe + /** Checks for equality with the object’s `strict` field. */ + strict?: InputMaybe + /** Checks for equality with the object’s `tokenAmounts` field. */ + tokenAmounts?: InputMaybe + /** Checks for equality with the object’s `transactionHash` field. */ + transactionHash?: InputMaybe +} + +/** A filter to be used against `CcipTransactionsFlat` object types. All fields are combined with a logical ‘and.’ */ +export type CcipTransactionsFlatFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Filter by the object’s `commitStoreAddress` field. */ + commitStoreAddress?: InputMaybe + /** Filter by the object’s `data` field. */ + data?: InputMaybe + /** Filter by the object’s `destNetworkName` field. */ + destNetworkName?: InputMaybe + /** Filter by the object’s `destRouterAddress` field. */ + destRouterAddress?: InputMaybe + /** Filter by the object’s `destTransactionHash` field. */ + destTransactionHash?: InputMaybe + /** Filter by the object’s `feeToken` field. */ + feeToken?: InputMaybe + /** Filter by the object’s `feeTokenAmount` field. */ + feeTokenAmount?: InputMaybe + /** Filter by the object’s `info` field. */ + info?: InputMaybe + /** Filter by the object’s `infoRaw` field. */ + infoRaw?: InputMaybe + /** Filter by the object’s `messageId` field. */ + messageId?: InputMaybe + /** Filter by the object’s `nonce` field. */ + nonce?: InputMaybe + /** Negates the expression. */ + not?: InputMaybe + /** Filter by the object’s `offrampAddress` field. */ + offrampAddress?: InputMaybe + /** Filter by the object’s `onrampAddress` field. */ + onrampAddress?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `origin` field. */ + origin?: InputMaybe + /** Filter by the object’s `receiver` field. */ + receiver?: InputMaybe + /** Filter by the object’s `sender` field. */ + sender?: InputMaybe + /** Filter by the object’s `sequenceNumber` field. */ + sequenceNumber?: InputMaybe + /** Filter by the object’s `sourceNetworkName` field. */ + sourceNetworkName?: InputMaybe + /** Filter by the object’s `sourceRouterAddress` field. */ + sourceRouterAddress?: InputMaybe + /** Filter by the object’s `state` field. */ + state?: InputMaybe + /** Filter by the object’s `strict` field. */ + strict?: InputMaybe + /** Filter by the object’s `tokenAmounts` field. */ + tokenAmounts?: InputMaybe + /** Filter by the object’s `transactionHash` field. */ + transactionHash?: InputMaybe +} + +/** A connection to a list of `CcipTransactionsFlat` values. */ +export type CcipTransactionsFlatsConnection = { + __typename?: "CcipTransactionsFlatsConnection" + /** A list of edges which contains the `CcipTransactionsFlat` and cursor to aid in pagination. */ + edges: Array + /** A list of `CcipTransactionsFlat` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `CcipTransactionsFlat` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `CcipTransactionsFlat` edge in the connection. */ +export type CcipTransactionsFlatsEdge = { + __typename?: "CcipTransactionsFlatsEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `CcipTransactionsFlat` at the end of the edge. */ + node: CcipTransactionsFlat +} + +/** Methods to use when ordering `CcipTransactionsFlat`. */ +export enum CcipTransactionsFlatsOrderBy { + BlockTimestampAsc = "BLOCK_TIMESTAMP_ASC", + BlockTimestampDesc = "BLOCK_TIMESTAMP_DESC", + CommitStoreAddressAsc = "COMMIT_STORE_ADDRESS_ASC", + CommitStoreAddressDesc = "COMMIT_STORE_ADDRESS_DESC", + DataAsc = "DATA_ASC", + DataDesc = "DATA_DESC", + DestChainIdAsc = "DEST_CHAIN_ID_ASC", + DestChainIdDesc = "DEST_CHAIN_ID_DESC", + DestNetworkNameAsc = "DEST_NETWORK_NAME_ASC", + DestNetworkNameDesc = "DEST_NETWORK_NAME_DESC", + DestRouterAddressAsc = "DEST_ROUTER_ADDRESS_ASC", + DestRouterAddressDesc = "DEST_ROUTER_ADDRESS_DESC", + DestTransactionHashAsc = "DEST_TRANSACTION_HASH_ASC", + DestTransactionHashDesc = "DEST_TRANSACTION_HASH_DESC", + FeeTokenAmountAsc = "FEE_TOKEN_AMOUNT_ASC", + FeeTokenAmountDesc = "FEE_TOKEN_AMOUNT_DESC", + FeeTokenAsc = "FEE_TOKEN_ASC", + FeeTokenDesc = "FEE_TOKEN_DESC", + GasLimitAsc = "GAS_LIMIT_ASC", + GasLimitDesc = "GAS_LIMIT_DESC", + InfoAsc = "INFO_ASC", + InfoDesc = "INFO_DESC", + InfoRawAsc = "INFO_RAW_ASC", + InfoRawDesc = "INFO_RAW_DESC", + MessageIdAsc = "MESSAGE_ID_ASC", + MessageIdDesc = "MESSAGE_ID_DESC", + Natural = "NATURAL", + NonceAsc = "NONCE_ASC", + NonceDesc = "NONCE_DESC", + OfframpAddressAsc = "OFFRAMP_ADDRESS_ASC", + OfframpAddressDesc = "OFFRAMP_ADDRESS_DESC", + OnrampAddressAsc = "ONRAMP_ADDRESS_ASC", + OnrampAddressDesc = "ONRAMP_ADDRESS_DESC", + OriginAsc = "ORIGIN_ASC", + OriginDesc = "ORIGIN_DESC", + ReceiptTimestampAsc = "RECEIPT_TIMESTAMP_ASC", + ReceiptTimestampDesc = "RECEIPT_TIMESTAMP_DESC", + ReceiverAsc = "RECEIVER_ASC", + ReceiverDesc = "RECEIVER_DESC", + SenderAsc = "SENDER_ASC", + SenderDesc = "SENDER_DESC", + SequenceNumberAsc = "SEQUENCE_NUMBER_ASC", + SequenceNumberDesc = "SEQUENCE_NUMBER_DESC", + SourceChainIdAsc = "SOURCE_CHAIN_ID_ASC", + SourceChainIdDesc = "SOURCE_CHAIN_ID_DESC", + SourceNetworkNameAsc = "SOURCE_NETWORK_NAME_ASC", + SourceNetworkNameDesc = "SOURCE_NETWORK_NAME_DESC", + SourceRouterAddressAsc = "SOURCE_ROUTER_ADDRESS_ASC", + SourceRouterAddressDesc = "SOURCE_ROUTER_ADDRESS_DESC", + StateAsc = "STATE_ASC", + StateDesc = "STATE_DESC", + StrictAsc = "STRICT_ASC", + StrictDesc = "STRICT_DESC", + TokenAmountsAsc = "TOKEN_AMOUNTS_ASC", + TokenAmountsDesc = "TOKEN_AMOUNTS_DESC", + TransactionHashAsc = "TRANSACTION_HASH_ASC", + TransactionHashDesc = "TRANSACTION_HASH_DESC", +} + +/** Methods to use when ordering `CcipTransaction`. */ +export enum CcipTransactionsOrderBy { + BlockTimestampAsc = "BLOCK_TIMESTAMP_ASC", + BlockTimestampDesc = "BLOCK_TIMESTAMP_DESC", + CommitStoreAddressAsc = "COMMIT_STORE_ADDRESS_ASC", + CommitStoreAddressDesc = "COMMIT_STORE_ADDRESS_DESC", + DestChainIdAsc = "DEST_CHAIN_ID_ASC", + DestChainIdDesc = "DEST_CHAIN_ID_DESC", + DestNetworkNameAsc = "DEST_NETWORK_NAME_ASC", + DestNetworkNameDesc = "DEST_NETWORK_NAME_DESC", + DestRouterAddressAsc = "DEST_ROUTER_ADDRESS_ASC", + DestRouterAddressDesc = "DEST_ROUTER_ADDRESS_DESC", + DestTransactionHashAsc = "DEST_TRANSACTION_HASH_ASC", + DestTransactionHashDesc = "DEST_TRANSACTION_HASH_DESC", + InfoAsc = "INFO_ASC", + InfoDesc = "INFO_DESC", + InfoRawAsc = "INFO_RAW_ASC", + InfoRawDesc = "INFO_RAW_DESC", + MessageIdAsc = "MESSAGE_ID_ASC", + MessageIdDesc = "MESSAGE_ID_DESC", + Natural = "NATURAL", + OfframpAddressAsc = "OFFRAMP_ADDRESS_ASC", + OfframpAddressDesc = "OFFRAMP_ADDRESS_DESC", + OnrampAddressAsc = "ONRAMP_ADDRESS_ASC", + OnrampAddressDesc = "ONRAMP_ADDRESS_DESC", + OriginAsc = "ORIGIN_ASC", + OriginDesc = "ORIGIN_DESC", + ReceiptTimestampAsc = "RECEIPT_TIMESTAMP_ASC", + ReceiptTimestampDesc = "RECEIPT_TIMESTAMP_DESC", + ReceiverAsc = "RECEIVER_ASC", + ReceiverDesc = "RECEIVER_DESC", + SenderAsc = "SENDER_ASC", + SenderDesc = "SENDER_DESC", + SequenceNumberAsc = "SEQUENCE_NUMBER_ASC", + SequenceNumberDesc = "SEQUENCE_NUMBER_DESC", + SourceChainIdAsc = "SOURCE_CHAIN_ID_ASC", + SourceChainIdDesc = "SOURCE_CHAIN_ID_DESC", + SourceNetworkNameAsc = "SOURCE_NETWORK_NAME_ASC", + SourceNetworkNameDesc = "SOURCE_NETWORK_NAME_DESC", + SourceRouterAddressAsc = "SOURCE_ROUTER_ADDRESS_ASC", + SourceRouterAddressDesc = "SOURCE_ROUTER_ADDRESS_DESC", + StateAsc = "STATE_ASC", + StateDesc = "STATE_DESC", + TransactionHashAsc = "TRANSACTION_HASH_ASC", + TransactionHashDesc = "TRANSACTION_HASH_DESC", +} + +/** A filter to be used against Int fields. All fields are combined with a logical ‘and.’ */ +export type IntFilter = { + /** Equal to the specified value. */ + equalTo?: InputMaybe + /** Greater than the specified value. */ + greaterThan?: InputMaybe + /** Greater than or equal to the specified value. */ + greaterThanOrEqualTo?: InputMaybe + /** Included in the specified list. */ + in?: InputMaybe> + /** Less than the specified value. */ + lessThan?: InputMaybe + /** Less than or equal to the specified value. */ + lessThanOrEqualTo?: InputMaybe + /** Not equal to the specified value. */ + notEqualTo?: InputMaybe +} + +/** A filter to be used against JSON fields. All fields are combined with a logical ‘and.’ */ +export type JsonFilter = { + /** Contains the specified JSON. */ + contains?: InputMaybe + /** Equal to the specified value. */ + equalTo?: InputMaybe + /** Greater than the specified value. */ + greaterThan?: InputMaybe + /** Greater than or equal to the specified value. */ + greaterThanOrEqualTo?: InputMaybe + /** Included in the specified list. */ + in?: InputMaybe> + /** Less than the specified value. */ + lessThan?: InputMaybe + /** Less than or equal to the specified value. */ + lessThanOrEqualTo?: InputMaybe + /** Not equal to the specified value. */ + notEqualTo?: InputMaybe +} + +/** An object with a globally unique `ID`. */ +export type Node = { + /** A globally unique identifier. Can be used in various places throughout the system to identify this single value. */ + nodeId: Scalars["ID"]["output"] +} + +/** Information about pagination in a connection. */ +export type PageInfo = { + __typename?: "PageInfo" + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars["Boolean"]["output"] + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars["Boolean"]["output"] + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe +} + +/** The root query type which gives access points into the data universe. */ +export type Query = Node & { + __typename?: "Query" + /** Reads and enables pagination through a set of `CcipAllLaneStatus`. */ + allCcipAllLaneStatuses?: Maybe + /** Reads and enables pagination through a set of `CcipFastTransferFill`. */ + allCcipFastTransferFills?: Maybe + /** Reads and enables pagination through a set of `CcipLaneStatus`. */ + allCcipLaneStatuses?: Maybe + /** Reads and enables pagination through a set of `CcipLaneTimeEstimate`. */ + allCcipLaneTimeEstimates?: Maybe + /** Reads and enables pagination through a set of `CcipMessage`. */ + allCcipMessages?: Maybe + /** Reads and enables pagination through a set of `CcipMessagesFlat`. */ + allCcipMessagesFlats?: Maybe + /** Reads and enables pagination through a set of `CcipSend`. */ + allCcipSends?: Maybe + /** Reads and enables pagination through a set of `CcipTokenPoolEvent`. */ + allCcipTokenPoolEvents?: Maybe + /** Reads and enables pagination through a set of `CcipTokenPoolLane`. */ + allCcipTokenPoolLanes?: Maybe + /** Reads and enables pagination through a set of `CcipTokenPoolLanesGroup`. */ + allCcipTokenPoolLanesGroups?: Maybe + /** Reads and enables pagination through a set of `CcipTokenPoolLanesWithPool`. */ + allCcipTokenPoolLanesWithPools?: Maybe + /** Reads and enables pagination through a set of `CcipTokenPool`. */ + allCcipTokenPools?: Maybe + /** Reads and enables pagination through a set of `CcipTransaction`. */ + allCcipTransactions?: Maybe + /** Reads and enables pagination through a set of `CcipTransactionsFlat`. */ + allCcipTransactionsFlats?: Maybe + /** Reads and enables pagination through a set of `SchemaMigration`. */ + allSchemaMigrations?: Maybe + /** Fetches an object given its globally unique `ID`. */ + node?: Maybe + /** The root query type must be a `Node` to work well with Relay 1 mutations. This just resolves to `query`. */ + nodeId: Scalars["ID"]["output"] + /** + * Exposes the root query type nested one level down. This is helpful for Relay 1 + * which can only query top level fields if they are in a particular form. + */ + query: Query + /** Reads a single `SchemaMigration` using its globally unique `ID`. */ + schemaMigration?: Maybe + schemaMigrationByVersion?: Maybe +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipAllLaneStatusesArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipFastTransferFillsArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipLaneStatusesArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipLaneTimeEstimatesArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipMessagesArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipMessagesFlatsArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipSendsArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipTokenPoolEventsArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipTokenPoolLanesArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipTokenPoolLanesGroupsArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipTokenPoolLanesWithPoolsArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipTokenPoolsArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipTransactionsArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllCcipTransactionsFlatsArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryAllSchemaMigrationsArgs = { + after?: InputMaybe + before?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe + first?: InputMaybe + last?: InputMaybe + offset?: InputMaybe + orderBy?: InputMaybe> +} + +/** The root query type which gives access points into the data universe. */ +export type QueryNodeArgs = { + nodeId: Scalars["ID"]["input"] +} + +/** The root query type which gives access points into the data universe. */ +export type QuerySchemaMigrationArgs = { + nodeId: Scalars["ID"]["input"] +} + +/** The root query type which gives access points into the data universe. */ +export type QuerySchemaMigrationByVersionArgs = { + version: Scalars["String"]["input"] +} + +export type SchemaMigration = Node & { + __typename?: "SchemaMigration" + /** A globally unique identifier. Can be used in various places throughout the system to identify this single value. */ + nodeId: Scalars["ID"]["output"] + version: Scalars["String"]["output"] +} + +/** + * A condition to be used against `SchemaMigration` object types. All fields are + * tested for equality and combined with a logical ‘and.’ + */ +export type SchemaMigrationCondition = { + /** Checks for equality with the object’s `version` field. */ + version?: InputMaybe +} + +/** A filter to be used against `SchemaMigration` object types. All fields are combined with a logical ‘and.’ */ +export type SchemaMigrationFilter = { + /** Checks for all expressions in this list. */ + and?: InputMaybe> + /** Negates the expression. */ + not?: InputMaybe + /** Checks for any expressions in this list. */ + or?: InputMaybe> + /** Filter by the object’s `version` field. */ + version?: InputMaybe +} + +/** A connection to a list of `SchemaMigration` values. */ +export type SchemaMigrationsConnection = { + __typename?: "SchemaMigrationsConnection" + /** A list of edges which contains the `SchemaMigration` and cursor to aid in pagination. */ + edges: Array + /** A list of `SchemaMigration` objects. */ + nodes: Array + /** Information to aid in pagination. */ + pageInfo: PageInfo + /** The count of *all* `SchemaMigration` you could get from the connection. */ + totalCount: Scalars["Int"]["output"] +} + +/** A `SchemaMigration` edge in the connection. */ +export type SchemaMigrationsEdge = { + __typename?: "SchemaMigrationsEdge" + /** A cursor for use in pagination. */ + cursor?: Maybe + /** The `SchemaMigration` at the end of the edge. */ + node: SchemaMigration +} + +/** Methods to use when ordering `SchemaMigration`. */ +export enum SchemaMigrationsOrderBy { + Natural = "NATURAL", + PrimaryKeyAsc = "PRIMARY_KEY_ASC", + PrimaryKeyDesc = "PRIMARY_KEY_DESC", + VersionAsc = "VERSION_ASC", + VersionDesc = "VERSION_DESC", +} + +/** A filter to be used against String fields. All fields are combined with a logical ‘and.’ */ +export type StringFilter = { + /** Equal to the specified value. */ + equalTo?: InputMaybe + /** Greater than the specified value. */ + greaterThan?: InputMaybe + /** Greater than or equal to the specified value. */ + greaterThanOrEqualTo?: InputMaybe + /** Included in the specified list. */ + in?: InputMaybe> + /** Less than the specified value. */ + lessThan?: InputMaybe + /** Less than or equal to the specified value. */ + lessThanOrEqualTo?: InputMaybe + /** Not equal to the specified value. */ + notEqualTo?: InputMaybe +} + +/** A filter to be used against String List fields. All fields are combined with a logical ‘and.’ */ +export type StringListFilter = { + /** Contains the specified list of values. */ + contains?: InputMaybe>> + /** Equal to the specified value. */ + equalTo?: InputMaybe>> + /** Greater than the specified value. */ + greaterThan?: InputMaybe>> + /** Greater than or equal to the specified value. */ + greaterThanOrEqualTo?: InputMaybe>> + /** Less than the specified value. */ + lessThan?: InputMaybe>> + /** Less than or equal to the specified value. */ + lessThanOrEqualTo?: InputMaybe>> + /** Not equal to the specified value. */ + notEqualTo?: InputMaybe>> +} + +export type GetTokenPoolLanesWithPoolsQueryVariables = Exact<{ + first?: InputMaybe + offset?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe +}> + +export type GetTokenPoolLanesWithPoolsQuery = { + __typename?: "Query" + allCcipTokenPoolLanesWithPools?: { + __typename?: "CcipTokenPoolLanesWithPoolsConnection" + totalCount: number + nodes: Array<{ + __typename?: "CcipTokenPoolLanesWithPool" + network?: string | null + token?: string | null + tokenSymbol?: string | null + tokenDecimals?: number | null + remoteNetworkName?: string | null + remoteToken?: string | null + removed?: boolean | null + typeAndVersion?: string | null + tokenPool?: string | null + inboundCapacity?: any | null + inboundRate?: any | null + inboundEnabled?: boolean | null + outboundCapacity?: any | null + outboundRate?: any | null + outboundEnabled?: boolean | null + customInboundCapacity?: any | null + customInboundRate?: any | null + customInboundEnabled?: boolean | null + customOutboundCapacity?: any | null + customOutboundRate?: any | null + customOutboundEnabled?: boolean | null + }> + } | null +} + +export type GetTokenPoolsQueryVariables = Exact<{ + first?: InputMaybe + offset?: InputMaybe + condition?: InputMaybe + filter?: InputMaybe +}> + +export type GetTokenPoolsQuery = { + __typename?: "Query" + allCcipTokenPools?: { + __typename?: "CcipTokenPoolsConnection" + totalCount: number + nodes: Array<{ + __typename?: "CcipTokenPool" + network?: string | null + token?: string | null + tokenSymbol?: string | null + typeAndVersion?: string | null + minBlockConfirmations?: number | null + tokenPool?: string | null + }> + } | null +} + +export const GetTokenPoolLanesWithPoolsDocument = { + kind: "Document", + definitions: [ + { + kind: "OperationDefinition", + operation: "query", + name: { kind: "Name", value: "GetTokenPoolLanesWithPools" }, + variableDefinitions: [ + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "first" } }, + type: { kind: "NamedType", name: { kind: "Name", value: "Int" } }, + }, + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "offset" } }, + type: { kind: "NamedType", name: { kind: "Name", value: "Int" } }, + }, + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "condition" } }, + type: { kind: "NamedType", name: { kind: "Name", value: "CcipTokenPoolLanesWithPoolCondition" } }, + }, + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "filter" } }, + type: { kind: "NamedType", name: { kind: "Name", value: "CcipTokenPoolLanesWithPoolFilter" } }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "allCcipTokenPoolLanesWithPools" }, + arguments: [ + { + kind: "Argument", + name: { kind: "Name", value: "first" }, + value: { kind: "Variable", name: { kind: "Name", value: "first" } }, + }, + { + kind: "Argument", + name: { kind: "Name", value: "offset" }, + value: { kind: "Variable", name: { kind: "Name", value: "offset" } }, + }, + { + kind: "Argument", + name: { kind: "Name", value: "condition" }, + value: { kind: "Variable", name: { kind: "Name", value: "condition" } }, + }, + { + kind: "Argument", + name: { kind: "Name", value: "filter" }, + value: { kind: "Variable", name: { kind: "Name", value: "filter" } }, + }, + { + kind: "Argument", + name: { kind: "Name", value: "orderBy" }, + value: { + kind: "ListValue", + values: [ + { kind: "EnumValue", value: "NETWORK_ASC" }, + { kind: "EnumValue", value: "TOKEN_SYMBOL_ASC" }, + ], + }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "nodes" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "network" } }, + { kind: "Field", name: { kind: "Name", value: "token" } }, + { kind: "Field", name: { kind: "Name", value: "tokenSymbol" } }, + { kind: "Field", name: { kind: "Name", value: "tokenDecimals" } }, + { kind: "Field", name: { kind: "Name", value: "remoteNetworkName" } }, + { kind: "Field", name: { kind: "Name", value: "remoteToken" } }, + { kind: "Field", name: { kind: "Name", value: "removed" } }, + { kind: "Field", name: { kind: "Name", value: "typeAndVersion" } }, + { kind: "Field", name: { kind: "Name", value: "tokenPool" } }, + { kind: "Field", name: { kind: "Name", value: "inboundCapacity" } }, + { kind: "Field", name: { kind: "Name", value: "inboundRate" } }, + { kind: "Field", name: { kind: "Name", value: "inboundEnabled" } }, + { kind: "Field", name: { kind: "Name", value: "outboundCapacity" } }, + { kind: "Field", name: { kind: "Name", value: "outboundRate" } }, + { kind: "Field", name: { kind: "Name", value: "outboundEnabled" } }, + { kind: "Field", name: { kind: "Name", value: "customInboundCapacity" } }, + { kind: "Field", name: { kind: "Name", value: "customInboundRate" } }, + { kind: "Field", name: { kind: "Name", value: "customInboundEnabled" } }, + { kind: "Field", name: { kind: "Name", value: "customOutboundCapacity" } }, + { kind: "Field", name: { kind: "Name", value: "customOutboundRate" } }, + { kind: "Field", name: { kind: "Name", value: "customOutboundEnabled" } }, + ], + }, + }, + { kind: "Field", name: { kind: "Name", value: "totalCount" } }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode +export const GetTokenPoolsDocument = { + kind: "Document", + definitions: [ + { + kind: "OperationDefinition", + operation: "query", + name: { kind: "Name", value: "GetTokenPools" }, + variableDefinitions: [ + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "first" } }, + type: { kind: "NamedType", name: { kind: "Name", value: "Int" } }, + }, + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "offset" } }, + type: { kind: "NamedType", name: { kind: "Name", value: "Int" } }, + }, + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "condition" } }, + type: { kind: "NamedType", name: { kind: "Name", value: "CcipTokenPoolCondition" } }, + }, + { + kind: "VariableDefinition", + variable: { kind: "Variable", name: { kind: "Name", value: "filter" } }, + type: { kind: "NamedType", name: { kind: "Name", value: "CcipTokenPoolFilter" } }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "allCcipTokenPools" }, + arguments: [ + { + kind: "Argument", + name: { kind: "Name", value: "first" }, + value: { kind: "Variable", name: { kind: "Name", value: "first" } }, + }, + { + kind: "Argument", + name: { kind: "Name", value: "offset" }, + value: { kind: "Variable", name: { kind: "Name", value: "offset" } }, + }, + { + kind: "Argument", + name: { kind: "Name", value: "condition" }, + value: { kind: "Variable", name: { kind: "Name", value: "condition" } }, + }, + { + kind: "Argument", + name: { kind: "Name", value: "filter" }, + value: { kind: "Variable", name: { kind: "Name", value: "filter" } }, + }, + { + kind: "Argument", + name: { kind: "Name", value: "orderBy" }, + value: { + kind: "ListValue", + values: [ + { kind: "EnumValue", value: "NETWORK_ASC" }, + { kind: "EnumValue", value: "TOKEN_SYMBOL_ASC" }, + ], + }, + }, + ], + selectionSet: { + kind: "SelectionSet", + selections: [ + { + kind: "Field", + name: { kind: "Name", value: "nodes" }, + selectionSet: { + kind: "SelectionSet", + selections: [ + { kind: "Field", name: { kind: "Name", value: "network" } }, + { kind: "Field", name: { kind: "Name", value: "token" } }, + { kind: "Field", name: { kind: "Name", value: "tokenSymbol" } }, + { kind: "Field", name: { kind: "Name", value: "typeAndVersion" } }, + { kind: "Field", name: { kind: "Name", value: "minBlockConfirmations" } }, + { kind: "Field", name: { kind: "Name", value: "tokenPool" } }, + ], + }, + }, + { kind: "Field", name: { kind: "Name", value: "totalCount" } }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode diff --git a/src/lib/ccip/graphql/__generated__/index.ts b/src/lib/ccip/graphql/__generated__/index.ts new file mode 100644 index 00000000000..4d7cb2fa01b --- /dev/null +++ b/src/lib/ccip/graphql/__generated__/index.ts @@ -0,0 +1,2 @@ +export * from "./fragment-masking.js" +export * from "./gql.js" diff --git a/src/lib/ccip/graphql/client.ts b/src/lib/ccip/graphql/client.ts new file mode 100644 index 00000000000..81226a81eae --- /dev/null +++ b/src/lib/ccip/graphql/client.ts @@ -0,0 +1,54 @@ +import { GraphQLClient } from "graphql-request" +import type { TypedDocumentNode } from "@graphql-typed-document-node/core" + +const GRAPHQL_CONFIG = { + MAX_RETRIES: 3, + RETRY_DELAY_MS: 1000, +} as const + +async function executeWithRetry( + operation: () => Promise, + maxRetries: number = GRAPHQL_CONFIG.MAX_RETRIES +): Promise { + let lastError: unknown + for (let attempt = 1; attempt <= maxRetries; attempt++) { + try { + return await operation() + } catch (error) { + lastError = error + if (attempt < maxRetries) { + console.warn(`[CCIP GraphQL] Request failed, retrying (${attempt}/${maxRetries})...`) + await new Promise((resolve) => setTimeout(resolve, GRAPHQL_CONFIG.RETRY_DELAY_MS)) + } + } + } + throw lastError +} + +let clientInstance: GraphQLClient | null = null + +export function getGraphQLClient(): GraphQLClient { + if (clientInstance) return clientInstance + + const endpoint = import.meta.env.CCIP_GRAPHQL_ENDPOINT + const apiKey = import.meta.env.CCIP_GRAPHQL_API_KEY + + if (!endpoint) throw new Error("CCIP_GRAPHQL_ENDPOINT is not configured") + if (!apiKey) throw new Error("CCIP_GRAPHQL_API_KEY is not configured") + + clientInstance = new GraphQLClient(endpoint, { + headers: { + Authorization: `${apiKey}`, + }, + }) + + return clientInstance +} + +export async function executeGraphQLQuery>( + document: TypedDocumentNode, + variables?: TVariables +): Promise { + const client = getGraphQLClient() + return executeWithRetry(() => client.request(document, variables)) +} diff --git a/src/lib/ccip/graphql/queries/.gitkeep b/src/lib/ccip/graphql/queries/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/lib/ccip/graphql/queries/token-pool-lanes.ts b/src/lib/ccip/graphql/queries/token-pool-lanes.ts new file mode 100644 index 00000000000..a80b024565d --- /dev/null +++ b/src/lib/ccip/graphql/queries/token-pool-lanes.ts @@ -0,0 +1,43 @@ +import { gql } from "../__generated__/index.ts" + +export const TOKEN_POOL_LANES_WITH_POOLS_QUERY = gql(` + query GetTokenPoolLanesWithPools( + $first: Int + $offset: Int + $condition: CcipTokenPoolLanesWithPoolCondition + $filter: CcipTokenPoolLanesWithPoolFilter + ) { + allCcipTokenPoolLanesWithPools( + first: $first + offset: $offset + condition: $condition + filter: $filter + orderBy: [NETWORK_ASC, TOKEN_SYMBOL_ASC] + ) { + nodes { + network + token + tokenSymbol + tokenDecimals + remoteNetworkName + remoteToken + removed + typeAndVersion + tokenPool + inboundCapacity + inboundRate + inboundEnabled + outboundCapacity + outboundRate + outboundEnabled + customInboundCapacity + customInboundRate + customInboundEnabled + customOutboundCapacity + customOutboundRate + customOutboundEnabled + } + totalCount + } + } +`) diff --git a/src/lib/ccip/graphql/queries/token-pools.ts b/src/lib/ccip/graphql/queries/token-pools.ts new file mode 100644 index 00000000000..1152bbef502 --- /dev/null +++ b/src/lib/ccip/graphql/queries/token-pools.ts @@ -0,0 +1,28 @@ +import { gql } from "../__generated__/index.ts" + +export const TOKEN_POOLS_QUERY = gql(` + query GetTokenPools( + $first: Int + $offset: Int + $condition: CcipTokenPoolCondition + $filter: CcipTokenPoolFilter + ) { + allCcipTokenPools( + first: $first + offset: $offset + condition: $condition + filter: $filter + orderBy: [NETWORK_ASC, TOKEN_SYMBOL_ASC] + ) { + nodes { + network + token + tokenSymbol + typeAndVersion + minBlockConfirmations + tokenPool + } + totalCount + } + } +`) diff --git a/src/lib/ccip/graphql/schema.graphql.json b/src/lib/ccip/graphql/schema.graphql.json new file mode 100644 index 00000000000..7b0649c21b9 --- /dev/null +++ b/src/lib/ccip/graphql/schema.graphql.json @@ -0,0 +1,20914 @@ +{ + "__schema": { + "queryType": { + "name": "Query", + "kind": "OBJECT" + }, + "mutationType": null, + "subscriptionType": null, + "types": [ + { + "kind": "SCALAR", + "name": "BigFloat", + "description": "A floating point number that requires more precision than IEEE 754 binary 64", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "BigInt", + "description": "A signed eight-byte integer. The upper big integer values are greater than the\nmax value for a JavaScript number. Therefore all big integers will be output as\nstrings and not numbers.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "Boolean", + "description": "The `Boolean` scalar type represents `true` or `false`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "description": "A filter to be used against Boolean fields. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "equalTo", + "description": "Equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "greaterThan", + "description": "Greater than the specified value.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "greaterThanOrEqualTo", + "description": "Greater than or equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "in", + "description": "Included in the specified list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lessThan", + "description": "Less than the specified value.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lessThanOrEqualTo", + "description": "Less than or equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "notEqualTo", + "description": "Not equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipAllLaneStatus", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "destNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "successRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipAllLaneStatusCondition", + "description": "A condition to be used against `CcipAllLaneStatus` object types. All fields are\ntested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "destNetworkName", + "description": "Checks for equality with the object’s `destNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": "Checks for equality with the object’s `routerAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Checks for equality with the object’s `sourceNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "successRate", + "description": "Checks for equality with the object’s `successRate` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipAllLaneStatusFilter", + "description": "A filter to be used against `CcipAllLaneStatus` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipAllLaneStatusFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Filter by the object’s `destNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipAllLaneStatusFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipAllLaneStatusFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": "Filter by the object’s `routerAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Filter by the object’s `sourceNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "successRate", + "description": "Filter by the object’s `successRate` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipAllLaneStatusesConnection", + "description": "A connection to a list of `CcipAllLaneStatus` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipAllLaneStatus` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipAllLaneStatusesEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipAllLaneStatus` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipAllLaneStatus", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipAllLaneStatus` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipAllLaneStatusesEdge", + "description": "A `CcipAllLaneStatus` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipAllLaneStatus` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipAllLaneStatus", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipAllLaneStatusesOrderBy", + "description": "Methods to use when ordering `CcipAllLaneStatus`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "DEST_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SUCCESS_RATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SUCCESS_RATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipFastTransferFill", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "amount", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "fillId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filler", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "settlementInfo", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipFastTransferFillCondition", + "description": "A condition to be used against `CcipFastTransferFill` object types. All fields\nare tested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "amount", + "description": "Checks for equality with the object’s `amount` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "fillId", + "description": "Checks for equality with the object’s `fillId` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filler", + "description": "Checks for equality with the object’s `filler` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Checks for equality with the object’s `messageId` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Checks for equality with the object’s `receiver` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendTransactionHash", + "description": "Checks for equality with the object’s `sendTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "settlementInfo", + "description": "Checks for equality with the object’s `settlementInfo` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipFastTransferFillFilter", + "description": "A filter to be used against `CcipFastTransferFill` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipFastTransferFillFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "fillId", + "description": "Filter by the object’s `fillId` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filler", + "description": "Filter by the object’s `filler` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Filter by the object’s `messageId` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipFastTransferFillFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipFastTransferFillFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Filter by the object’s `receiver` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendTransactionHash", + "description": "Filter by the object’s `sendTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "settlementInfo", + "description": "Filter by the object’s `settlementInfo` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipFastTransferFillsConnection", + "description": "A connection to a list of `CcipFastTransferFill` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipFastTransferFill` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipFastTransferFillsEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipFastTransferFill` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipFastTransferFill", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipFastTransferFill` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipFastTransferFillsEdge", + "description": "A `CcipFastTransferFill` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipFastTransferFill` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipFastTransferFill", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipFastTransferFillsOrderBy", + "description": "Methods to use when ordering `CcipFastTransferFill`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "AMOUNT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "AMOUNT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FILLER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FILLER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FILL_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FILL_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SETTLEMENT_INFO_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SETTLEMENT_INFO_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipLaneStatus", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "destNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "successRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipLaneStatusCondition", + "description": "A condition to be used against `CcipLaneStatus` object types. All fields are\ntested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "destNetworkName", + "description": "Checks for equality with the object’s `destNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": "Checks for equality with the object’s `routerAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Checks for equality with the object’s `sourceNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "successRate", + "description": "Checks for equality with the object’s `successRate` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipLaneStatusFilter", + "description": "A filter to be used against `CcipLaneStatus` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipLaneStatusFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Filter by the object’s `destNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipLaneStatusFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipLaneStatusFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": "Filter by the object’s `routerAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Filter by the object’s `sourceNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "successRate", + "description": "Filter by the object’s `successRate` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipLaneStatusesConnection", + "description": "A connection to a list of `CcipLaneStatus` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipLaneStatus` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipLaneStatusesEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipLaneStatus` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipLaneStatus", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipLaneStatus` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipLaneStatusesEdge", + "description": "A `CcipLaneStatus` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipLaneStatus` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipLaneStatus", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipLaneStatusesOrderBy", + "description": "Methods to use when ordering `CcipLaneStatus`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "DEST_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SUCCESS_RATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SUCCESS_RATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipLaneTimeEstimate", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "commitMs", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "finalityMs", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalMs", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transferMs", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipLaneTimeEstimateCondition", + "description": "A condition to be used against `CcipLaneTimeEstimate` object types. All fields\nare tested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "commitMs", + "description": "Checks for equality with the object’s `commitMs` field.", + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Checks for equality with the object’s `destNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "finalityMs", + "description": "Checks for equality with the object’s `finalityMs` field.", + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": "Checks for equality with the object’s `routerAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Checks for equality with the object’s `sourceNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalMs", + "description": "Checks for equality with the object’s `totalMs` field.", + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transferMs", + "description": "Checks for equality with the object’s `transferMs` field.", + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipLaneTimeEstimateFilter", + "description": "A filter to be used against `CcipLaneTimeEstimate` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipLaneTimeEstimateFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Filter by the object’s `destNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipLaneTimeEstimateFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipLaneTimeEstimateFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": "Filter by the object’s `routerAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Filter by the object’s `sourceNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipLaneTimeEstimatesConnection", + "description": "A connection to a list of `CcipLaneTimeEstimate` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipLaneTimeEstimate` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipLaneTimeEstimatesEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipLaneTimeEstimate` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipLaneTimeEstimate", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipLaneTimeEstimate` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipLaneTimeEstimatesEdge", + "description": "A `CcipLaneTimeEstimate` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipLaneTimeEstimate` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipLaneTimeEstimate", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipLaneTimeEstimatesOrderBy", + "description": "Methods to use when ordering `CcipLaneTimeEstimate`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "COMMIT_MS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_MS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FINALITY_MS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FINALITY_MS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOTAL_MS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOTAL_MS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSFER_MS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSFER_MS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipMessage", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "arm", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessBlockNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessBlockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessLogIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitLogIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStore", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "data", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destChainId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouterAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeToken", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeTokenAmount", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "gasLimit", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "info", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "max", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "min", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nonce", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offrampAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "permissionLessExecutionThresholdSeconds", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptBlock", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptFinalized", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptLogIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "root", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendBlock", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendFinalized", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendLogIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceChainId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "strict", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAmounts", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "votes", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipMessageCondition", + "description": "A condition to be used against `CcipMessage` object types. All fields are tested\nfor equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "arm", + "description": "Checks for equality with the object’s `arm` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessBlockNumber", + "description": "Checks for equality with the object’s `blessBlockNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessBlockTimestamp", + "description": "Checks for equality with the object’s `blessBlockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessLogIndex", + "description": "Checks for equality with the object’s `blessLogIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessTransactionHash", + "description": "Checks for equality with the object’s `blessTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockNumber", + "description": "Checks for equality with the object’s `commitBlockNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockTimestamp", + "description": "Checks for equality with the object’s `commitBlockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitLogIndex", + "description": "Checks for equality with the object’s `commitLogIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStore", + "description": "Checks for equality with the object’s `commitStore` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitTransactionHash", + "description": "Checks for equality with the object’s `commitTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "data", + "description": "Checks for equality with the object’s `data` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destChainId", + "description": "Checks for equality with the object’s `destChainId` field.", + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Checks for equality with the object’s `destNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouterAddress", + "description": "Checks for equality with the object’s `destRouterAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeToken", + "description": "Checks for equality with the object’s `feeToken` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeTokenAmount", + "description": "Checks for equality with the object’s `feeTokenAmount` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "gasLimit", + "description": "Checks for equality with the object’s `gasLimit` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "info", + "description": "Checks for equality with the object’s `info` field.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": "Checks for equality with the object’s `infoRaw` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "max", + "description": "Checks for equality with the object’s `max` field.", + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Checks for equality with the object’s `messageId` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "min", + "description": "Checks for equality with the object’s `min` field.", + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nonce", + "description": "Checks for equality with the object’s `nonce` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offrampAddress", + "description": "Checks for equality with the object’s `offrampAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": "Checks for equality with the object’s `onrampAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": "Checks for equality with the object’s `origin` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "permissionLessExecutionThresholdSeconds", + "description": "Checks for equality with the object’s `permissionLessExecutionThresholdSeconds` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptBlock", + "description": "Checks for equality with the object’s `receiptBlock` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptFinalized", + "description": "Checks for equality with the object’s `receiptFinalized` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptLogIndex", + "description": "Checks for equality with the object’s `receiptLogIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTimestamp", + "description": "Checks for equality with the object’s `receiptTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTransactionHash", + "description": "Checks for equality with the object’s `receiptTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Checks for equality with the object’s `receiver` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "root", + "description": "Checks for equality with the object’s `root` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": "Checks for equality with the object’s `routerAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendBlock", + "description": "Checks for equality with the object’s `sendBlock` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendFinalized", + "description": "Checks for equality with the object’s `sendFinalized` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendLogIndex", + "description": "Checks for equality with the object’s `sendLogIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendTimestamp", + "description": "Checks for equality with the object’s `sendTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendTransactionHash", + "description": "Checks for equality with the object’s `sendTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Checks for equality with the object’s `sender` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": "Checks for equality with the object’s `sequenceNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceChainId", + "description": "Checks for equality with the object’s `sourceChainId` field.", + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Checks for equality with the object’s `sourceNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": "Checks for equality with the object’s `state` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "strict", + "description": "Checks for equality with the object’s `strict` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAmounts", + "description": "Checks for equality with the object’s `tokenAmounts` field.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "votes", + "description": "Checks for equality with the object’s `votes` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipMessageFilter", + "description": "A filter to be used against `CcipMessage` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipMessageFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "arm", + "description": "Filter by the object’s `arm` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessBlockNumber", + "description": "Filter by the object’s `blessBlockNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessLogIndex", + "description": "Filter by the object’s `blessLogIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessTransactionHash", + "description": "Filter by the object’s `blessTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockNumber", + "description": "Filter by the object’s `commitBlockNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitLogIndex", + "description": "Filter by the object’s `commitLogIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStore", + "description": "Filter by the object’s `commitStore` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitTransactionHash", + "description": "Filter by the object’s `commitTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "data", + "description": "Filter by the object’s `data` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Filter by the object’s `destNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouterAddress", + "description": "Filter by the object’s `destRouterAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeToken", + "description": "Filter by the object’s `feeToken` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeTokenAmount", + "description": "Filter by the object’s `feeTokenAmount` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "info", + "description": "Filter by the object’s `info` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": "Filter by the object’s `infoRaw` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Filter by the object’s `messageId` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nonce", + "description": "Filter by the object’s `nonce` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipMessageFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offrampAddress", + "description": "Filter by the object’s `offrampAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": "Filter by the object’s `onrampAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipMessageFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": "Filter by the object’s `origin` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "permissionLessExecutionThresholdSeconds", + "description": "Filter by the object’s `permissionLessExecutionThresholdSeconds` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptBlock", + "description": "Filter by the object’s `receiptBlock` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptLogIndex", + "description": "Filter by the object’s `receiptLogIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTransactionHash", + "description": "Filter by the object’s `receiptTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Filter by the object’s `receiver` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "root", + "description": "Filter by the object’s `root` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "routerAddress", + "description": "Filter by the object’s `routerAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendBlock", + "description": "Filter by the object’s `sendBlock` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendLogIndex", + "description": "Filter by the object’s `sendLogIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendTransactionHash", + "description": "Filter by the object’s `sendTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Filter by the object’s `sender` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": "Filter by the object’s `sequenceNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Filter by the object’s `sourceNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": "Filter by the object’s `state` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "strict", + "description": "Filter by the object’s `strict` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAmounts", + "description": "Filter by the object’s `tokenAmounts` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "votes", + "description": "Filter by the object’s `votes` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipMessagesConnection", + "description": "A connection to a list of `CcipMessage` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipMessage` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipMessagesEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipMessage` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipMessage", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipMessage` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipMessagesEdge", + "description": "A `CcipMessage` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipMessage` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipMessage", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipMessagesFlat", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "blessBlockHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessBlockNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessBlockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessLogIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitLogIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStore", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "data", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destChainId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouter", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptBlockHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptBlockNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptBlockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptInfo", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptLogIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "max", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "min", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ofInterest", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offramp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onramp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptBlockHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptBlockNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptBlockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptInfo", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptLogIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "rmn", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "root", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendBlockHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendBlockNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendBlockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendFinalized", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendLogIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceChainId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceRouter", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceSchema", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "votes", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipMessagesFlatCondition", + "description": "A condition to be used against `CcipMessagesFlat` object types. All fields are\ntested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "blessBlockHash", + "description": "Checks for equality with the object’s `blessBlockHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessBlockNumber", + "description": "Checks for equality with the object’s `blessBlockNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessBlockTimestamp", + "description": "Checks for equality with the object’s `blessBlockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessLogIndex", + "description": "Checks for equality with the object’s `blessLogIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessTransactionHash", + "description": "Checks for equality with the object’s `blessTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockHash", + "description": "Checks for equality with the object’s `commitBlockHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockNumber", + "description": "Checks for equality with the object’s `commitBlockNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockTimestamp", + "description": "Checks for equality with the object’s `commitBlockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitLogIndex", + "description": "Checks for equality with the object’s `commitLogIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStore", + "description": "Checks for equality with the object’s `commitStore` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitTransactionHash", + "description": "Checks for equality with the object’s `commitTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": "Checks for equality with the object’s `createdAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "data", + "description": "Checks for equality with the object’s `data` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destChainId", + "description": "Checks for equality with the object’s `destChainId` field.", + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Checks for equality with the object’s `destNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouter", + "description": "Checks for equality with the object’s `destRouter` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptBlockHash", + "description": "Checks for equality with the object’s `firstReceiptBlockHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptBlockNumber", + "description": "Checks for equality with the object’s `firstReceiptBlockNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptBlockTimestamp", + "description": "Checks for equality with the object’s `firstReceiptBlockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptInfo", + "description": "Checks for equality with the object’s `firstReceiptInfo` field.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptLogIndex", + "description": "Checks for equality with the object’s `firstReceiptLogIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptTransactionHash", + "description": "Checks for equality with the object’s `firstReceiptTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": "Checks for equality with the object’s `infoRaw` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "max", + "description": "Checks for equality with the object’s `max` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Checks for equality with the object’s `messageId` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "min", + "description": "Checks for equality with the object’s `min` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ofInterest", + "description": "Checks for equality with the object’s `ofInterest` field.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offramp", + "description": "Checks for equality with the object’s `offramp` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onramp", + "description": "Checks for equality with the object’s `onramp` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": "Checks for equality with the object’s `origin` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptBlockHash", + "description": "Checks for equality with the object’s `receiptBlockHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptBlockNumber", + "description": "Checks for equality with the object’s `receiptBlockNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptBlockTimestamp", + "description": "Checks for equality with the object’s `receiptBlockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptInfo", + "description": "Checks for equality with the object’s `receiptInfo` field.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptLogIndex", + "description": "Checks for equality with the object’s `receiptLogIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTransactionHash", + "description": "Checks for equality with the object’s `receiptTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Checks for equality with the object’s `receiver` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "rmn", + "description": "Checks for equality with the object’s `rmn` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "root", + "description": "Checks for equality with the object’s `root` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendBlockHash", + "description": "Checks for equality with the object’s `sendBlockHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendBlockNumber", + "description": "Checks for equality with the object’s `sendBlockNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendBlockTimestamp", + "description": "Checks for equality with the object’s `sendBlockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendFinalized", + "description": "Checks for equality with the object’s `sendFinalized` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendLogIndex", + "description": "Checks for equality with the object’s `sendLogIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendTransactionHash", + "description": "Checks for equality with the object’s `sendTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Checks for equality with the object’s `sender` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": "Checks for equality with the object’s `sequenceNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceChainId", + "description": "Checks for equality with the object’s `sourceChainId` field.", + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Checks for equality with the object’s `sourceNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceRouter", + "description": "Checks for equality with the object’s `sourceRouter` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceSchema", + "description": "Checks for equality with the object’s `sourceSchema` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": "Checks for equality with the object’s `state` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": "Checks for equality with the object’s `updatedAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "votes", + "description": "Checks for equality with the object’s `votes` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipMessagesFlatFilter", + "description": "A filter to be used against `CcipMessagesFlat` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipMessagesFlatFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessBlockHash", + "description": "Filter by the object’s `blessBlockHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessBlockNumber", + "description": "Filter by the object’s `blessBlockNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessLogIndex", + "description": "Filter by the object’s `blessLogIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blessTransactionHash", + "description": "Filter by the object’s `blessTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockHash", + "description": "Filter by the object’s `commitBlockHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitBlockNumber", + "description": "Filter by the object’s `commitBlockNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitLogIndex", + "description": "Filter by the object’s `commitLogIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStore", + "description": "Filter by the object’s `commitStore` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitTransactionHash", + "description": "Filter by the object’s `commitTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Filter by the object’s `destNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouter", + "description": "Filter by the object’s `destRouter` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptBlockHash", + "description": "Filter by the object’s `firstReceiptBlockHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptBlockNumber", + "description": "Filter by the object’s `firstReceiptBlockNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptInfo", + "description": "Filter by the object’s `firstReceiptInfo` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptLogIndex", + "description": "Filter by the object’s `firstReceiptLogIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "firstReceiptTransactionHash", + "description": "Filter by the object’s `firstReceiptTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": "Filter by the object’s `infoRaw` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "max", + "description": "Filter by the object’s `max` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Filter by the object’s `messageId` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "min", + "description": "Filter by the object’s `min` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipMessagesFlatFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ofInterest", + "description": "Filter by the object’s `ofInterest` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringListFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offramp", + "description": "Filter by the object’s `offramp` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onramp", + "description": "Filter by the object’s `onramp` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipMessagesFlatFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": "Filter by the object’s `origin` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptBlockHash", + "description": "Filter by the object’s `receiptBlockHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptBlockNumber", + "description": "Filter by the object’s `receiptBlockNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptInfo", + "description": "Filter by the object’s `receiptInfo` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptLogIndex", + "description": "Filter by the object’s `receiptLogIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTransactionHash", + "description": "Filter by the object’s `receiptTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Filter by the object’s `receiver` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "rmn", + "description": "Filter by the object’s `rmn` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "root", + "description": "Filter by the object’s `root` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendBlockHash", + "description": "Filter by the object’s `sendBlockHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendBlockNumber", + "description": "Filter by the object’s `sendBlockNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendLogIndex", + "description": "Filter by the object’s `sendLogIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sendTransactionHash", + "description": "Filter by the object’s `sendTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Filter by the object’s `sender` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": "Filter by the object’s `sequenceNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Filter by the object’s `sourceNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceRouter", + "description": "Filter by the object’s `sourceRouter` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceSchema", + "description": "Filter by the object’s `sourceSchema` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": "Filter by the object’s `state` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "votes", + "description": "Filter by the object’s `votes` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipMessagesFlatsConnection", + "description": "A connection to a list of `CcipMessagesFlat` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipMessagesFlat` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipMessagesFlatsEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipMessagesFlat` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipMessagesFlat", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipMessagesFlat` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipMessagesFlatsEdge", + "description": "A `CcipMessagesFlat` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipMessagesFlat` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipMessagesFlat", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipMessagesFlatsOrderBy", + "description": "Methods to use when ordering `CcipMessagesFlat`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "BLESS_BLOCK_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_BLOCK_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_BLOCK_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_BLOCK_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_BLOCK_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_BLOCK_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_BLOCK_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_BLOCK_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_STORE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_STORE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DATA_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DATA_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_CHAIN_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_CHAIN_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_ROUTER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_ROUTER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_BLOCK_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_BLOCK_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_BLOCK_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_BLOCK_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_INFO_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_INFO_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIRST_RECEIPT_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_RAW_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_RAW_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MAX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MAX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MIN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MIN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OFFRAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OFFRAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OF_INTEREST_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OF_INTEREST_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ONRAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ONRAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ORIGIN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ORIGIN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_BLOCK_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_BLOCK_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_BLOCK_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_BLOCK_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_INFO_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_INFO_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RMN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RMN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROOT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROOT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_BLOCK_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_BLOCK_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_BLOCK_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_BLOCK_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_FINALIZED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_FINALIZED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEQUENCE_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEQUENCE_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_CHAIN_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_CHAIN_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_ROUTER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_ROUTER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_SCHEMA_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_SCHEMA_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "VOTES_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "VOTES_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipMessagesOrderBy", + "description": "Methods to use when ordering `CcipMessage`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "ARM_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ARM_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_BLOCK_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_BLOCK_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLESS_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_BLOCK_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_BLOCK_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_STORE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_STORE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DATA_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DATA_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_CHAIN_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_CHAIN_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_ROUTER_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_ROUTER_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_AMOUNT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_AMOUNT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "GAS_LIMIT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "GAS_LIMIT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_RAW_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_RAW_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MAX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MAX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MIN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MIN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NONCE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NONCE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OFFRAMP_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OFFRAMP_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ONRAMP_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ONRAMP_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ORIGIN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ORIGIN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PERMISSION_LESS_EXECUTION_THRESHOLD_SECONDS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PERMISSION_LESS_EXECUTION_THRESHOLD_SECONDS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_BLOCK_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_BLOCK_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_FINALIZED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_FINALIZED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROOT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROOT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_BLOCK_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_BLOCK_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_FINALIZED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_FINALIZED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEND_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEQUENCE_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEQUENCE_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_CHAIN_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_CHAIN_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STRICT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STRICT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_AMOUNTS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_AMOUNTS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "VOTES_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "VOTES_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipSend", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "data", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeToken", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeTokenAmount", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "gasLimit", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nonce", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceChainSelector", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceTokenData", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "strict", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAmounts", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipSendCondition", + "description": "A condition to be used against `CcipSend` object types. All fields are tested\nfor equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "data", + "description": "Checks for equality with the object’s `data` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeToken", + "description": "Checks for equality with the object’s `feeToken` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeTokenAmount", + "description": "Checks for equality with the object’s `feeTokenAmount` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "gasLimit", + "description": "Checks for equality with the object’s `gasLimit` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Checks for equality with the object’s `messageId` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nonce", + "description": "Checks for equality with the object’s `nonce` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": "Checks for equality with the object’s `onrampAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Checks for equality with the object’s `receiver` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Checks for equality with the object’s `sender` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": "Checks for equality with the object’s `sequenceNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceChainSelector", + "description": "Checks for equality with the object’s `sourceChainSelector` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Checks for equality with the object’s `sourceNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceTokenData", + "description": "Checks for equality with the object’s `sourceTokenData` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "strict", + "description": "Checks for equality with the object’s `strict` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAmounts", + "description": "Checks for equality with the object’s `tokenAmounts` field.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipSendFilter", + "description": "A filter to be used against `CcipSend` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipSendFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "data", + "description": "Filter by the object’s `data` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeToken", + "description": "Filter by the object’s `feeToken` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeTokenAmount", + "description": "Filter by the object’s `feeTokenAmount` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Filter by the object’s `messageId` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nonce", + "description": "Filter by the object’s `nonce` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipSendFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": "Filter by the object’s `onrampAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipSendFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Filter by the object’s `receiver` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Filter by the object’s `sender` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": "Filter by the object’s `sequenceNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceChainSelector", + "description": "Filter by the object’s `sourceChainSelector` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Filter by the object’s `sourceNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceTokenData", + "description": "Filter by the object’s `sourceTokenData` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "strict", + "description": "Filter by the object’s `strict` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAmounts", + "description": "Filter by the object’s `tokenAmounts` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipSendsConnection", + "description": "A connection to a list of `CcipSend` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipSend` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipSendsEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipSend` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipSend", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipSend` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipSendsEdge", + "description": "A `CcipSend` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipSend` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipSend", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipSendsOrderBy", + "description": "Methods to use when ordering `CcipSend`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "DATA_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DATA_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_AMOUNT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_AMOUNT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "GAS_LIMIT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "GAS_LIMIT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NONCE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NONCE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ONRAMP_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ONRAMP_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEQUENCE_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEQUENCE_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_CHAIN_SELECTOR_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_CHAIN_SELECTOR_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_TOKEN_DATA_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_TOKEN_DATA_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STRICT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STRICT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_AMOUNTS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_AMOUNTS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPool", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "administrator", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allowlist", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "minBlockConfirmations", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "owner", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingAdministrator", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingOwner", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPool", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPoolTypeAndVersion", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "registry", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "router", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenDecimals", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPool", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenSymbol", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "typeAndVersion", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolCondition", + "description": "A condition to be used against `CcipTokenPool` object types. All fields are\ntested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "administrator", + "description": "Checks for equality with the object’s `administrator` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allowlist", + "description": "Checks for equality with the object’s `allowlist` field.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockHash", + "description": "Checks for equality with the object’s `blockHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": "Checks for equality with the object’s `blockNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockTimestamp", + "description": "Checks for equality with the object’s `blockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": "Checks for equality with the object’s `createdAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": "Checks for equality with the object’s `logIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "minBlockConfirmations", + "description": "Checks for equality with the object’s `minBlockConfirmations` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": "Checks for equality with the object’s `network` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "owner", + "description": "Checks for equality with the object’s `owner` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingAdministrator", + "description": "Checks for equality with the object’s `pendingAdministrator` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingOwner", + "description": "Checks for equality with the object’s `pendingOwner` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPool", + "description": "Checks for equality with the object’s `previousPool` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPoolTypeAndVersion", + "description": "Checks for equality with the object’s `previousPoolTypeAndVersion` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "registry", + "description": "Checks for equality with the object’s `registry` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "router", + "description": "Checks for equality with the object’s `router` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": "Checks for equality with the object’s `token` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenDecimals", + "description": "Checks for equality with the object’s `tokenDecimals` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenName", + "description": "Checks for equality with the object’s `tokenName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPool", + "description": "Checks for equality with the object’s `tokenPool` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenSymbol", + "description": "Checks for equality with the object’s `tokenSymbol` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Checks for equality with the object’s `transactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "typeAndVersion", + "description": "Checks for equality with the object’s `typeAndVersion` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": "Checks for equality with the object’s `updatedAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolEvent", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "amount", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "event", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "removed", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPoolAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolEventCondition", + "description": "A condition to be used against `CcipTokenPoolEvent` object types. All fields are\ntested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "amount", + "description": "Checks for equality with the object’s `amount` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockHash", + "description": "Checks for equality with the object’s `blockHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": "Checks for equality with the object’s `blockNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockTimestamp", + "description": "Checks for equality with the object’s `blockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": "Checks for equality with the object’s `createdAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "event", + "description": "Checks for equality with the object’s `event` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": "Checks for equality with the object’s `logIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": "Checks for equality with the object’s `network` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Checks for equality with the object’s `receiver` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "removed", + "description": "Checks for equality with the object’s `removed` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Checks for equality with the object’s `sender` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAddress", + "description": "Checks for equality with the object’s `tokenAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPoolAddress", + "description": "Checks for equality with the object’s `tokenPoolAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Checks for equality with the object’s `transactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": "Checks for equality with the object’s `updatedAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolEventFilter", + "description": "A filter to be used against `CcipTokenPoolEvent` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolEventFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockHash", + "description": "Filter by the object’s `blockHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": "Filter by the object’s `blockNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "event", + "description": "Filter by the object’s `event` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": "Filter by the object’s `logIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": "Filter by the object’s `network` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolEventFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolEventFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Filter by the object’s `receiver` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "removed", + "description": "Filter by the object’s `removed` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Filter by the object’s `sender` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAddress", + "description": "Filter by the object’s `tokenAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPoolAddress", + "description": "Filter by the object’s `tokenPoolAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Filter by the object’s `transactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolEventsConnection", + "description": "A connection to a list of `CcipTokenPoolEvent` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipTokenPoolEvent` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolEventsEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipTokenPoolEvent` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolEvent", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipTokenPoolEvent` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolEventsEdge", + "description": "A `CcipTokenPoolEvent` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipTokenPoolEvent` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolEvent", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipTokenPoolEventsOrderBy", + "description": "Methods to use when ordering `CcipTokenPoolEvent`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "AMOUNT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "AMOUNT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "EVENT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "EVENT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NETWORK_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NETWORK_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOVED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOVED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_POOL_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_POOL_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolFilter", + "description": "A filter to be used against `CcipTokenPool` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "administrator", + "description": "Filter by the object’s `administrator` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allowlist", + "description": "Filter by the object’s `allowlist` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockHash", + "description": "Filter by the object’s `blockHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": "Filter by the object’s `blockNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": "Filter by the object’s `logIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "minBlockConfirmations", + "description": "Filter by the object’s `minBlockConfirmations` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": "Filter by the object’s `network` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "owner", + "description": "Filter by the object’s `owner` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingAdministrator", + "description": "Filter by the object’s `pendingAdministrator` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingOwner", + "description": "Filter by the object’s `pendingOwner` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPool", + "description": "Filter by the object’s `previousPool` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPoolTypeAndVersion", + "description": "Filter by the object’s `previousPoolTypeAndVersion` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "registry", + "description": "Filter by the object’s `registry` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "router", + "description": "Filter by the object’s `router` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": "Filter by the object’s `token` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenDecimals", + "description": "Filter by the object’s `tokenDecimals` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenName", + "description": "Filter by the object’s `tokenName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPool", + "description": "Filter by the object’s `tokenPool` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenSymbol", + "description": "Filter by the object’s `tokenSymbol` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Filter by the object’s `transactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "typeAndVersion", + "description": "Filter by the object’s `typeAndVersion` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolLane", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "blockHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundCapacity", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundEnabled", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundCapacity", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundEnabled", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundCapacity", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundEnabled", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundCapacity", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundEnabled", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteToken", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteTokenPools", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "removed", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPool", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLaneCondition", + "description": "A condition to be used against `CcipTokenPoolLane` object types. All fields are\ntested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "blockHash", + "description": "Checks for equality with the object’s `blockHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": "Checks for equality with the object’s `blockNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockTimestamp", + "description": "Checks for equality with the object’s `blockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": "Checks for equality with the object’s `createdAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundCapacity", + "description": "Checks for equality with the object’s `customInboundCapacity` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundEnabled", + "description": "Checks for equality with the object’s `customInboundEnabled` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundRate", + "description": "Checks for equality with the object’s `customInboundRate` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundCapacity", + "description": "Checks for equality with the object’s `customOutboundCapacity` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundEnabled", + "description": "Checks for equality with the object’s `customOutboundEnabled` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundRate", + "description": "Checks for equality with the object’s `customOutboundRate` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundCapacity", + "description": "Checks for equality with the object’s `inboundCapacity` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundEnabled", + "description": "Checks for equality with the object’s `inboundEnabled` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundRate", + "description": "Checks for equality with the object’s `inboundRate` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": "Checks for equality with the object’s `logIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": "Checks for equality with the object’s `network` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundCapacity", + "description": "Checks for equality with the object’s `outboundCapacity` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundEnabled", + "description": "Checks for equality with the object’s `outboundEnabled` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundRate", + "description": "Checks for equality with the object’s `outboundRate` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteNetworkName", + "description": "Checks for equality with the object’s `remoteNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteToken", + "description": "Checks for equality with the object’s `remoteToken` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteTokenPools", + "description": "Checks for equality with the object’s `remoteTokenPools` field.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "removed", + "description": "Checks for equality with the object’s `removed` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": "Checks for equality with the object’s `token` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPool", + "description": "Checks for equality with the object’s `tokenPool` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Checks for equality with the object’s `transactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": "Checks for equality with the object’s `updatedAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLaneFilter", + "description": "A filter to be used against `CcipTokenPoolLane` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLaneFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockHash", + "description": "Filter by the object’s `blockHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": "Filter by the object’s `blockNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundEnabled", + "description": "Filter by the object’s `customInboundEnabled` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundEnabled", + "description": "Filter by the object’s `customOutboundEnabled` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundEnabled", + "description": "Filter by the object’s `inboundEnabled` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": "Filter by the object’s `logIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": "Filter by the object’s `network` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLaneFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLaneFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundEnabled", + "description": "Filter by the object’s `outboundEnabled` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteNetworkName", + "description": "Filter by the object’s `remoteNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteToken", + "description": "Filter by the object’s `remoteToken` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteTokenPools", + "description": "Filter by the object’s `remoteTokenPools` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringListFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "removed", + "description": "Filter by the object’s `removed` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": "Filter by the object’s `token` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPool", + "description": "Filter by the object’s `tokenPool` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Filter by the object’s `transactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesConnection", + "description": "A connection to a list of `CcipTokenPoolLane` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipTokenPoolLane` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipTokenPoolLane` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolLane", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipTokenPoolLane` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesEdge", + "description": "A `CcipTokenPoolLane` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipTokenPoolLane` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolLane", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesGroup", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "admins", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "owners", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pk", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenGroup", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesGroupCondition", + "description": "A condition to be used against `CcipTokenPoolLanesGroup` object types. All\nfields are tested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "admins", + "description": "Checks for equality with the object’s `admins` field.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": "Checks for equality with the object’s `createdAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "owners", + "description": "Checks for equality with the object’s `owners` field.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pk", + "description": "Checks for equality with the object’s `pk` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenGroup", + "description": "Checks for equality with the object’s `tokenGroup` field.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": "Checks for equality with the object’s `updatedAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesGroupFilter", + "description": "A filter to be used against `CcipTokenPoolLanesGroup` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "admins", + "description": "Filter by the object’s `admins` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringListFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesGroupFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesGroupFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesGroupFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "owners", + "description": "Filter by the object’s `owners` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringListFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pk", + "description": "Filter by the object’s `pk` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenGroup", + "description": "Filter by the object’s `tokenGroup` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesGroupsConnection", + "description": "A connection to a list of `CcipTokenPoolLanesGroup` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipTokenPoolLanesGroup` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesGroupsEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipTokenPoolLanesGroup` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesGroup", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipTokenPoolLanesGroup` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesGroupsEdge", + "description": "A `CcipTokenPoolLanesGroup` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipTokenPoolLanesGroup` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesGroup", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipTokenPoolLanesGroupsOrderBy", + "description": "Methods to use when ordering `CcipTokenPoolLanesGroup`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "ADMINS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ADMINS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OWNERS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OWNERS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PK_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PK_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_GROUP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_GROUP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipTokenPoolLanesOrderBy", + "description": "Methods to use when ordering `CcipTokenPoolLane`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "BLOCK_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_CAPACITY_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_CAPACITY_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_ENABLED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_ENABLED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_RATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_RATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_CAPACITY_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_CAPACITY_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_ENABLED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_ENABLED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_RATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_RATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_CAPACITY_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_CAPACITY_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_ENABLED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_ENABLED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_RATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_RATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NETWORK_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NETWORK_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_CAPACITY_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_CAPACITY_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_ENABLED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_ENABLED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_RATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_RATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_TOKEN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_TOKEN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_TOKEN_POOLS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_TOKEN_POOLS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOVED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOVED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_POOL_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_POOL_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesWithPool", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "administrator", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allowlist", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundCapacity", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundEnabled", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundCapacity", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundEnabled", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundCapacity", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundEnabled", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundCapacity", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundEnabled", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundRate", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "owner", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingAdministrator", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingOwner", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPool", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPoolTypeAndVersion", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "registry", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteToken", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteTokenPools", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "removed", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "router", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenDecimals", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPool", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenRegisteredAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenSymbol", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "typeAndVersion", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesWithPoolCondition", + "description": "A condition to be used against `CcipTokenPoolLanesWithPool` object types. All\nfields are tested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "administrator", + "description": "Checks for equality with the object’s `administrator` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allowlist", + "description": "Checks for equality with the object’s `allowlist` field.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockHash", + "description": "Checks for equality with the object’s `blockHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": "Checks for equality with the object’s `blockNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockTimestamp", + "description": "Checks for equality with the object’s `blockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": "Checks for equality with the object’s `createdAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundCapacity", + "description": "Checks for equality with the object’s `customInboundCapacity` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundEnabled", + "description": "Checks for equality with the object’s `customInboundEnabled` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundRate", + "description": "Checks for equality with the object’s `customInboundRate` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundCapacity", + "description": "Checks for equality with the object’s `customOutboundCapacity` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundEnabled", + "description": "Checks for equality with the object’s `customOutboundEnabled` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundRate", + "description": "Checks for equality with the object’s `customOutboundRate` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundCapacity", + "description": "Checks for equality with the object’s `inboundCapacity` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundEnabled", + "description": "Checks for equality with the object’s `inboundEnabled` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundRate", + "description": "Checks for equality with the object’s `inboundRate` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": "Checks for equality with the object’s `logIndex` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": "Checks for equality with the object’s `network` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundCapacity", + "description": "Checks for equality with the object’s `outboundCapacity` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundEnabled", + "description": "Checks for equality with the object’s `outboundEnabled` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundRate", + "description": "Checks for equality with the object’s `outboundRate` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "owner", + "description": "Checks for equality with the object’s `owner` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingAdministrator", + "description": "Checks for equality with the object’s `pendingAdministrator` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingOwner", + "description": "Checks for equality with the object’s `pendingOwner` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPool", + "description": "Checks for equality with the object’s `previousPool` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPoolTypeAndVersion", + "description": "Checks for equality with the object’s `previousPoolTypeAndVersion` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "registry", + "description": "Checks for equality with the object’s `registry` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteNetworkName", + "description": "Checks for equality with the object’s `remoteNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteToken", + "description": "Checks for equality with the object’s `remoteToken` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteTokenPools", + "description": "Checks for equality with the object’s `remoteTokenPools` field.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "removed", + "description": "Checks for equality with the object’s `removed` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "router", + "description": "Checks for equality with the object’s `router` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": "Checks for equality with the object’s `token` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenDecimals", + "description": "Checks for equality with the object’s `tokenDecimals` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenName", + "description": "Checks for equality with the object’s `tokenName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPool", + "description": "Checks for equality with the object’s `tokenPool` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenRegisteredAt", + "description": "Checks for equality with the object’s `tokenRegisteredAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenSymbol", + "description": "Checks for equality with the object’s `tokenSymbol` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Checks for equality with the object’s `transactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "typeAndVersion", + "description": "Checks for equality with the object’s `typeAndVersion` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": "Checks for equality with the object’s `updatedAt` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesWithPoolFilter", + "description": "A filter to be used against `CcipTokenPoolLanesWithPool` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "administrator", + "description": "Filter by the object’s `administrator` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allowlist", + "description": "Filter by the object’s `allowlist` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesWithPoolFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockHash", + "description": "Filter by the object’s `blockHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "blockNumber", + "description": "Filter by the object’s `blockNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customInboundEnabled", + "description": "Filter by the object’s `customInboundEnabled` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "customOutboundEnabled", + "description": "Filter by the object’s `customOutboundEnabled` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inboundEnabled", + "description": "Filter by the object’s `inboundEnabled` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logIndex", + "description": "Filter by the object’s `logIndex` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "network", + "description": "Filter by the object’s `network` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesWithPoolFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesWithPoolFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "outboundEnabled", + "description": "Filter by the object’s `outboundEnabled` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "owner", + "description": "Filter by the object’s `owner` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingAdministrator", + "description": "Filter by the object’s `pendingAdministrator` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pendingOwner", + "description": "Filter by the object’s `pendingOwner` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPool", + "description": "Filter by the object’s `previousPool` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "previousPoolTypeAndVersion", + "description": "Filter by the object’s `previousPoolTypeAndVersion` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "registry", + "description": "Filter by the object’s `registry` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteNetworkName", + "description": "Filter by the object’s `remoteNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteToken", + "description": "Filter by the object’s `remoteToken` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "remoteTokenPools", + "description": "Filter by the object’s `remoteTokenPools` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringListFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "removed", + "description": "Filter by the object’s `removed` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "router", + "description": "Filter by the object’s `router` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": "Filter by the object’s `token` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenDecimals", + "description": "Filter by the object’s `tokenDecimals` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenName", + "description": "Filter by the object’s `tokenName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenPool", + "description": "Filter by the object’s `tokenPool` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenSymbol", + "description": "Filter by the object’s `tokenSymbol` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Filter by the object’s `transactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "typeAndVersion", + "description": "Filter by the object’s `typeAndVersion` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesWithPoolsConnection", + "description": "A connection to a list of `CcipTokenPoolLanesWithPool` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipTokenPoolLanesWithPool` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesWithPoolsEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipTokenPoolLanesWithPool` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesWithPool", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipTokenPoolLanesWithPool` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesWithPoolsEdge", + "description": "A `CcipTokenPoolLanesWithPool` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipTokenPoolLanesWithPool` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesWithPool", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipTokenPoolLanesWithPoolsOrderBy", + "description": "Methods to use when ordering `CcipTokenPoolLanesWithPool`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "ADMINISTRATOR_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ADMINISTRATOR_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ALLOWLIST_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ALLOWLIST_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_CAPACITY_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_CAPACITY_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_ENABLED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_ENABLED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_RATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_INBOUND_RATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_CAPACITY_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_CAPACITY_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_ENABLED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_ENABLED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_RATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM_OUTBOUND_RATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_CAPACITY_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_CAPACITY_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_ENABLED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_ENABLED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_RATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INBOUND_RATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NETWORK_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NETWORK_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_CAPACITY_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_CAPACITY_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_ENABLED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_ENABLED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_RATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OUTBOUND_RATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OWNER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OWNER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PENDING_ADMINISTRATOR_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PENDING_ADMINISTRATOR_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PENDING_OWNER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PENDING_OWNER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREVIOUS_POOL_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREVIOUS_POOL_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREVIOUS_POOL_TYPE_AND_VERSION_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREVIOUS_POOL_TYPE_AND_VERSION_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REGISTRY_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REGISTRY_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_TOKEN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_TOKEN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_TOKEN_POOLS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOTE_TOKEN_POOLS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOVED_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REMOVED_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_DECIMALS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_DECIMALS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_POOL_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_POOL_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_REGISTERED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_REGISTERED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_SYMBOL_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_SYMBOL_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TYPE_AND_VERSION_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TYPE_AND_VERSION_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolsConnection", + "description": "A connection to a list of `CcipTokenPool` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipTokenPool` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPoolsEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipTokenPool` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPool", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipTokenPool` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTokenPoolsEdge", + "description": "A `CcipTokenPool` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipTokenPool` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTokenPool", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipTokenPoolsOrderBy", + "description": "Methods to use when ordering `CcipTokenPool`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "ADMINISTRATOR_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ADMINISTRATOR_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ALLOWLIST_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ALLOWLIST_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CREATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LOG_INDEX_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LOG_INDEX_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MIN_BLOCK_CONFIRMATIONS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MIN_BLOCK_CONFIRMATIONS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NETWORK_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NETWORK_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OWNER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OWNER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PENDING_ADMINISTRATOR_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PENDING_ADMINISTRATOR_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PENDING_OWNER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PENDING_OWNER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREVIOUS_POOL_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREVIOUS_POOL_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREVIOUS_POOL_TYPE_AND_VERSION_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREVIOUS_POOL_TYPE_AND_VERSION_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REGISTRY_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "REGISTRY_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ROUTER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_DECIMALS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_DECIMALS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_POOL_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_POOL_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_SYMBOL_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_SYMBOL_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TYPE_AND_VERSION_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TYPE_AND_VERSION_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPDATED_AT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTransaction", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "blockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStoreAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destChainId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouterAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "info", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offrampAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceChainId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceRouterAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionCondition", + "description": "A condition to be used against `CcipTransaction` object types. All fields are\ntested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "blockTimestamp", + "description": "Checks for equality with the object’s `blockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStoreAddress", + "description": "Checks for equality with the object’s `commitStoreAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destChainId", + "description": "Checks for equality with the object’s `destChainId` field.", + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Checks for equality with the object’s `destNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouterAddress", + "description": "Checks for equality with the object’s `destRouterAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destTransactionHash", + "description": "Checks for equality with the object’s `destTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "info", + "description": "Checks for equality with the object’s `info` field.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": "Checks for equality with the object’s `infoRaw` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Checks for equality with the object’s `messageId` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offrampAddress", + "description": "Checks for equality with the object’s `offrampAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": "Checks for equality with the object’s `onrampAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": "Checks for equality with the object’s `origin` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTimestamp", + "description": "Checks for equality with the object’s `receiptTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Checks for equality with the object’s `receiver` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Checks for equality with the object’s `sender` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": "Checks for equality with the object’s `sequenceNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceChainId", + "description": "Checks for equality with the object’s `sourceChainId` field.", + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Checks for equality with the object’s `sourceNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceRouterAddress", + "description": "Checks for equality with the object’s `sourceRouterAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": "Checks for equality with the object’s `state` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Checks for equality with the object’s `transactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionFilter", + "description": "A filter to be used against `CcipTransaction` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStoreAddress", + "description": "Filter by the object’s `commitStoreAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Filter by the object’s `destNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouterAddress", + "description": "Filter by the object’s `destRouterAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destTransactionHash", + "description": "Filter by the object’s `destTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "info", + "description": "Filter by the object’s `info` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": "Filter by the object’s `infoRaw` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Filter by the object’s `messageId` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offrampAddress", + "description": "Filter by the object’s `offrampAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": "Filter by the object’s `onrampAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": "Filter by the object’s `origin` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Filter by the object’s `receiver` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Filter by the object’s `sender` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": "Filter by the object’s `sequenceNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Filter by the object’s `sourceNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceRouterAddress", + "description": "Filter by the object’s `sourceRouterAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": "Filter by the object’s `state` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Filter by the object’s `transactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTransactionsConnection", + "description": "A connection to a list of `CcipTransaction` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipTransaction` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTransactionsEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipTransaction` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTransaction", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipTransaction` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTransactionsEdge", + "description": "A `CcipTransaction` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipTransaction` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTransaction", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTransactionsFlat", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "blockTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStoreAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "data", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destChainId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouterAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destTransactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeToken", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeTokenAmount", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "gasLimit", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "info", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nonce", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offrampAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTimestamp", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceChainId", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceRouterAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "strict", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAmounts", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionsFlatCondition", + "description": "A condition to be used against `CcipTransactionsFlat` object types. All fields\nare tested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "blockTimestamp", + "description": "Checks for equality with the object’s `blockTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStoreAddress", + "description": "Checks for equality with the object’s `commitStoreAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "data", + "description": "Checks for equality with the object’s `data` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destChainId", + "description": "Checks for equality with the object’s `destChainId` field.", + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Checks for equality with the object’s `destNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouterAddress", + "description": "Checks for equality with the object’s `destRouterAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destTransactionHash", + "description": "Checks for equality with the object’s `destTransactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeToken", + "description": "Checks for equality with the object’s `feeToken` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeTokenAmount", + "description": "Checks for equality with the object’s `feeTokenAmount` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "gasLimit", + "description": "Checks for equality with the object’s `gasLimit` field.", + "type": { + "kind": "SCALAR", + "name": "BigFloat", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "info", + "description": "Checks for equality with the object’s `info` field.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": "Checks for equality with the object’s `infoRaw` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Checks for equality with the object’s `messageId` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nonce", + "description": "Checks for equality with the object’s `nonce` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offrampAddress", + "description": "Checks for equality with the object’s `offrampAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": "Checks for equality with the object’s `onrampAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": "Checks for equality with the object’s `origin` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiptTimestamp", + "description": "Checks for equality with the object’s `receiptTimestamp` field.", + "type": { + "kind": "SCALAR", + "name": "Datetime", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Checks for equality with the object’s `receiver` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Checks for equality with the object’s `sender` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": "Checks for equality with the object’s `sequenceNumber` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceChainId", + "description": "Checks for equality with the object’s `sourceChainId` field.", + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Checks for equality with the object’s `sourceNetworkName` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceRouterAddress", + "description": "Checks for equality with the object’s `sourceRouterAddress` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": "Checks for equality with the object’s `state` field.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "strict", + "description": "Checks for equality with the object’s `strict` field.", + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAmounts", + "description": "Checks for equality with the object’s `tokenAmounts` field.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Checks for equality with the object’s `transactionHash` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionsFlatFilter", + "description": "A filter to be used against `CcipTransactionsFlat` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionsFlatFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "commitStoreAddress", + "description": "Filter by the object’s `commitStoreAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "data", + "description": "Filter by the object’s `data` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destNetworkName", + "description": "Filter by the object’s `destNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destRouterAddress", + "description": "Filter by the object’s `destRouterAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destTransactionHash", + "description": "Filter by the object’s `destTransactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeToken", + "description": "Filter by the object’s `feeToken` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "feeTokenAmount", + "description": "Filter by the object’s `feeTokenAmount` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "info", + "description": "Filter by the object’s `info` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "infoRaw", + "description": "Filter by the object’s `infoRaw` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "messageId", + "description": "Filter by the object’s `messageId` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nonce", + "description": "Filter by the object’s `nonce` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionsFlatFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offrampAddress", + "description": "Filter by the object’s `offrampAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onrampAddress", + "description": "Filter by the object’s `onrampAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionsFlatFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "origin", + "description": "Filter by the object’s `origin` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "receiver", + "description": "Filter by the object’s `receiver` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sender", + "description": "Filter by the object’s `sender` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sequenceNumber", + "description": "Filter by the object’s `sequenceNumber` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceNetworkName", + "description": "Filter by the object’s `sourceNetworkName` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sourceRouterAddress", + "description": "Filter by the object’s `sourceRouterAddress` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "state", + "description": "Filter by the object’s `state` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "strict", + "description": "Filter by the object’s `strict` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BooleanFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenAmounts", + "description": "Filter by the object’s `tokenAmounts` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "transactionHash", + "description": "Filter by the object’s `transactionHash` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTransactionsFlatsConnection", + "description": "A connection to a list of `CcipTransactionsFlat` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `CcipTransactionsFlat` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTransactionsFlatsEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `CcipTransactionsFlat` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTransactionsFlat", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `CcipTransactionsFlat` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "CcipTransactionsFlatsEdge", + "description": "A `CcipTransactionsFlat` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `CcipTransactionsFlat` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "CcipTransactionsFlat", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipTransactionsFlatsOrderBy", + "description": "Methods to use when ordering `CcipTransactionsFlat`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_STORE_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_STORE_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DATA_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DATA_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_CHAIN_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_CHAIN_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_ROUTER_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_ROUTER_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_AMOUNT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_AMOUNT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FEE_TOKEN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "GAS_LIMIT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "GAS_LIMIT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_RAW_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_RAW_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NONCE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NONCE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OFFRAMP_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OFFRAMP_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ONRAMP_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ONRAMP_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ORIGIN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ORIGIN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEQUENCE_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEQUENCE_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_CHAIN_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_CHAIN_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_ROUTER_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_ROUTER_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STRICT_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STRICT_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_AMOUNTS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TOKEN_AMOUNTS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "CcipTransactionsOrderBy", + "description": "Methods to use when ordering `CcipTransaction`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "BLOCK_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "BLOCK_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_STORE_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMMIT_STORE_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_CHAIN_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_CHAIN_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_ROUTER_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_ROUTER_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DEST_TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_RAW_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INFO_RAW_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MESSAGE_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OFFRAMP_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OFFRAMP_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ONRAMP_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ONRAMP_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ORIGIN_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ORIGIN_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_TIMESTAMP_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIPT_TIMESTAMP_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RECEIVER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SENDER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEQUENCE_NUMBER_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SEQUENCE_NUMBER_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_CHAIN_ID_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_CHAIN_ID_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_NETWORK_NAME_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_ROUTER_ADDRESS_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SOURCE_ROUTER_ADDRESS_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STATE_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "STATE_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "TRANSACTION_HASH_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "Cursor", + "description": "A location in a connection that can be used for resuming pagination.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "Datetime", + "description": "A point in time as described by the [ISO\n8601](https://en.wikipedia.org/wiki/ISO_8601) standard. May or may not include a timezone.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "Float", + "description": "The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "ID", + "description": "The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "Int", + "description": "The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "IntFilter", + "description": "A filter to be used against Int fields. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "equalTo", + "description": "Equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "greaterThan", + "description": "Greater than the specified value.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "greaterThanOrEqualTo", + "description": "Greater than or equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "in", + "description": "Included in the specified list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lessThan", + "description": "Less than the specified value.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lessThanOrEqualTo", + "description": "Less than or equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "notEqualTo", + "description": "Not equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "JSON", + "description": "The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "JSONFilter", + "description": "A filter to be used against JSON fields. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "contains", + "description": "Contains the specified JSON.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "equalTo", + "description": "Equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "greaterThan", + "description": "Greater than the specified value.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "greaterThanOrEqualTo", + "description": "Greater than or equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "in", + "description": "Included in the specified list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lessThan", + "description": "Less than the specified value.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lessThanOrEqualTo", + "description": "Less than or equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "notEqualTo", + "description": "Not equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "JSON", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INTERFACE", + "name": "Node", + "description": "An object with a globally unique `ID`.", + "isOneOf": null, + "fields": [ + { + "name": "nodeId", + "description": "A globally unique identifier. Can be used in various places throughout the system to identify this single value.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": [ + { + "kind": "OBJECT", + "name": "Query", + "ofType": null + }, + { + "kind": "OBJECT", + "name": "SchemaMigration", + "ofType": null + } + ] + }, + { + "kind": "OBJECT", + "name": "PageInfo", + "description": "Information about pagination in a connection.", + "isOneOf": null, + "fields": [ + { + "name": "endCursor", + "description": "When paginating forwards, the cursor to continue.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hasNextPage", + "description": "When paginating forwards, are there more items?", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hasPreviousPage", + "description": "When paginating backwards, are there more items?", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "startCursor", + "description": "When paginating backwards, the cursor to continue.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Query", + "description": "The root query type which gives access points into the data universe.", + "isOneOf": null, + "fields": [ + { + "name": "allCcipAllLaneStatuses", + "description": "Reads and enables pagination through a set of `CcipAllLaneStatus`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipAllLaneStatusCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipAllLaneStatusFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipAllLaneStatus`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipAllLaneStatusesOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipAllLaneStatusesConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipFastTransferFills", + "description": "Reads and enables pagination through a set of `CcipFastTransferFill`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipFastTransferFillCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipFastTransferFillFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipFastTransferFill`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipFastTransferFillsOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipFastTransferFillsConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipLaneStatuses", + "description": "Reads and enables pagination through a set of `CcipLaneStatus`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipLaneStatusCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipLaneStatusFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipLaneStatus`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipLaneStatusesOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipLaneStatusesConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipLaneTimeEstimates", + "description": "Reads and enables pagination through a set of `CcipLaneTimeEstimate`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipLaneTimeEstimateCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipLaneTimeEstimateFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipLaneTimeEstimate`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipLaneTimeEstimatesOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipLaneTimeEstimatesConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipMessages", + "description": "Reads and enables pagination through a set of `CcipMessage`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipMessageCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipMessageFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipMessage`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipMessagesOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipMessagesConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipMessagesFlats", + "description": "Reads and enables pagination through a set of `CcipMessagesFlat`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipMessagesFlatCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipMessagesFlatFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipMessagesFlat`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipMessagesFlatsOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipMessagesFlatsConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipSends", + "description": "Reads and enables pagination through a set of `CcipSend`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipSendCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipSendFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipSend`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipSendsOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipSendsConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipTokenPoolEvents", + "description": "Reads and enables pagination through a set of `CcipTokenPoolEvent`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolEventCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolEventFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipTokenPoolEvent`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipTokenPoolEventsOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipTokenPoolEventsConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipTokenPoolLanes", + "description": "Reads and enables pagination through a set of `CcipTokenPoolLane`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLaneCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLaneFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipTokenPoolLane`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipTokenPoolLanesOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipTokenPoolLanesGroups", + "description": "Reads and enables pagination through a set of `CcipTokenPoolLanesGroup`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesGroupCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesGroupFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipTokenPoolLanesGroup`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipTokenPoolLanesGroupsOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesGroupsConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipTokenPoolLanesWithPools", + "description": "Reads and enables pagination through a set of `CcipTokenPoolLanesWithPool`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesWithPoolCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolLanesWithPoolFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipTokenPoolLanesWithPool`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipTokenPoolLanesWithPoolsOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipTokenPoolLanesWithPoolsConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipTokenPools", + "description": "Reads and enables pagination through a set of `CcipTokenPool`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTokenPoolFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipTokenPool`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipTokenPoolsOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipTokenPoolsConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipTransactions", + "description": "Reads and enables pagination through a set of `CcipTransaction`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipTransaction`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipTransactionsOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipTransactionsConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allCcipTransactionsFlats", + "description": "Reads and enables pagination through a set of `CcipTransactionsFlat`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionsFlatCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "CcipTransactionsFlatFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `CcipTransactionsFlat`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "CcipTransactionsFlatsOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[NATURAL]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "CcipTransactionsFlatsConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "allSchemaMigrations", + "description": "Reads and enables pagination through a set of `SchemaMigration`.", + "args": [ + { + "name": "after", + "description": "Read all values in the set after (below) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "before", + "description": "Read all values in the set before (above) this cursor.", + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "condition", + "description": "A condition to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "SchemaMigrationCondition", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "filter", + "description": "A filter to be used in determining which values should be returned by the collection.", + "type": { + "kind": "INPUT_OBJECT", + "name": "SchemaMigrationFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": "Only read the first `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "last", + "description": "Only read the last `n` values of the set.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "offset", + "description": "Skip the first `n` values from our `after` cursor, an alternative to cursor\nbased pagination. May not be used with `last`.", + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": "The method to use when ordering `SchemaMigration`.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "SchemaMigrationsOrderBy", + "ofType": null + } + } + }, + "defaultValue": "[PRIMARY_KEY_ASC]", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "SchemaMigrationsConnection", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "Fetches an object given its globally unique `ID`.", + "args": [ + { + "name": "nodeId", + "description": "The globally unique `ID`.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodeId", + "description": "The root query type must be a `Node` to work well with Relay 1 mutations. This just resolves to `query`.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "query", + "description": "Exposes the root query type nested one level down. This is helpful for Relay 1\nwhich can only query top level fields if they are in a particular form.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Query", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "schemaMigration", + "description": "Reads a single `SchemaMigration` using its globally unique `ID`.", + "args": [ + { + "name": "nodeId", + "description": "The globally unique `ID` to be used in selecting a single `SchemaMigration`.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "SchemaMigration", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "schemaMigrationByVersion", + "description": null, + "args": [ + { + "name": "version", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "SchemaMigration", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "SchemaMigration", + "description": null, + "isOneOf": null, + "fields": [ + { + "name": "nodeId", + "description": "A globally unique identifier. Can be used in various places throughout the system to identify this single value.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "version", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "SchemaMigrationCondition", + "description": "A condition to be used against `SchemaMigration` object types. All fields are\ntested for equality and combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "version", + "description": "Checks for equality with the object’s `version` field.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "SchemaMigrationFilter", + "description": "A filter to be used against `SchemaMigration` object types. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "and", + "description": "Checks for all expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "SchemaMigrationFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "not", + "description": "Negates the expression.", + "type": { + "kind": "INPUT_OBJECT", + "name": "SchemaMigrationFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "or", + "description": "Checks for any expressions in this list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "SchemaMigrationFilter", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "version", + "description": "Filter by the object’s `version` field.", + "type": { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "SchemaMigrationsConnection", + "description": "A connection to a list of `SchemaMigration` values.", + "isOneOf": null, + "fields": [ + { + "name": "edges", + "description": "A list of edges which contains the `SchemaMigration` and cursor to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "SchemaMigrationsEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "nodes", + "description": "A list of `SchemaMigration` objects.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "SchemaMigration", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": "Information to aid in pagination.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": "The count of *all* `SchemaMigration` you could get from the connection.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "SchemaMigrationsEdge", + "description": "A `SchemaMigration` edge in the connection.", + "isOneOf": null, + "fields": [ + { + "name": "cursor", + "description": "A cursor for use in pagination.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "Cursor", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": "The `SchemaMigration` at the end of the edge.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "SchemaMigration", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "SchemaMigrationsOrderBy", + "description": "Methods to use when ordering `SchemaMigration`.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "NATURAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PRIMARY_KEY_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PRIMARY_KEY_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "VERSION_ASC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "VERSION_DESC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "String", + "description": "The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "StringFilter", + "description": "A filter to be used against String fields. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "equalTo", + "description": "Equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "greaterThan", + "description": "Greater than the specified value.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "greaterThanOrEqualTo", + "description": "Greater than or equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "in", + "description": "Included in the specified list.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lessThan", + "description": "Less than the specified value.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lessThanOrEqualTo", + "description": "Less than or equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "notEqualTo", + "description": "Not equal to the specified value.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "StringListFilter", + "description": "A filter to be used against String List fields. All fields are combined with a logical ‘and.’", + "isOneOf": false, + "fields": null, + "inputFields": [ + { + "name": "contains", + "description": "Contains the specified list of values.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "equalTo", + "description": "Equal to the specified value.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "greaterThan", + "description": "Greater than the specified value.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "greaterThanOrEqualTo", + "description": "Greater than or equal to the specified value.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lessThan", + "description": "Less than the specified value.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "lessThanOrEqualTo", + "description": "Less than or equal to the specified value.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "notEqualTo", + "description": "Not equal to the specified value.", + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Directive", + "description": "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", + "isOneOf": null, + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isRepeatable", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "locations", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "__DirectiveLocation", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "args", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "__DirectiveLocation", + "description": "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "QUERY", + "description": "Location adjacent to a query operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MUTATION", + "description": "Location adjacent to a mutation operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SUBSCRIPTION", + "description": "Location adjacent to a subscription operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIELD", + "description": "Location adjacent to a field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FRAGMENT_DEFINITION", + "description": "Location adjacent to a fragment definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FRAGMENT_SPREAD", + "description": "Location adjacent to a fragment spread.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INLINE_FRAGMENT", + "description": "Location adjacent to an inline fragment.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "VARIABLE_DEFINITION", + "description": "Location adjacent to a variable definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SCHEMA", + "description": "Location adjacent to a schema definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SCALAR", + "description": "Location adjacent to a scalar definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OBJECT", + "description": "Location adjacent to an object type definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIELD_DEFINITION", + "description": "Location adjacent to a field definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ARGUMENT_DEFINITION", + "description": "Location adjacent to an argument definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INTERFACE", + "description": "Location adjacent to an interface definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UNION", + "description": "Location adjacent to a union definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM", + "description": "Location adjacent to an enum definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM_VALUE", + "description": "Location adjacent to an enum value definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_OBJECT", + "description": "Location adjacent to an input object type definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_FIELD_DEFINITION", + "description": "Location adjacent to an input object field definition.", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__EnumValue", + "description": "One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.", + "isOneOf": null, + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isDeprecated", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deprecationReason", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Field", + "description": "Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.", + "isOneOf": null, + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "args", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "type", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isDeprecated", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deprecationReason", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__InputValue", + "description": "Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.", + "isOneOf": null, + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "type", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "defaultValue", + "description": "A GraphQL-formatted string representing the default value for this input value.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isDeprecated", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deprecationReason", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Schema", + "description": "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.", + "isOneOf": null, + "fields": [ + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "types", + "description": "A list of all types supported by this server.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "queryType", + "description": "The type that query operations will be rooted at.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mutationType", + "description": "If this server supports mutation, the type that mutation operations will be rooted at.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "subscriptionType", + "description": "If this server support subscription, the type that subscription operations will be rooted at.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "directives", + "description": "A list of all directives supported by this server.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Directive", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Type", + "description": "The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.", + "isOneOf": null, + "fields": [ + { + "name": "kind", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "__TypeKind", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "specifiedByURL", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "fields", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Field", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "interfaces", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "possibleTypes", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "enumValues", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__EnumValue", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inputFields", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ofType", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isOneOf", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "__TypeKind", + "description": "An enum describing what kind of type a given `__Type` is.", + "isOneOf": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "SCALAR", + "description": "Indicates this type is a scalar.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OBJECT", + "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INTERFACE", + "description": "Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UNION", + "description": "Indicates this type is a union. `possibleTypes` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM", + "description": "Indicates this type is an enum. `enumValues` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_OBJECT", + "description": "Indicates this type is an input object. `inputFields` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LIST", + "description": "Indicates this type is a list. `ofType` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NON_NULL", + "description": "Indicates this type is a non-null. `ofType` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + } + ], + "directives": [ + { + "name": "deprecated", + "description": "Marks an element of a GraphQL schema as no longer supported.", + "isRepeatable": false, + "locations": ["ARGUMENT_DEFINITION", "ENUM_VALUE", "FIELD_DEFINITION", "INPUT_FIELD_DEFINITION"], + "args": [ + { + "name": "reason", + "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": "\"No longer supported\"", + "isDeprecated": false, + "deprecationReason": null + } + ] + }, + { + "name": "include", + "description": "Directs the executor to include this field or fragment only when the `if` argument is true.", + "isRepeatable": false, + "locations": ["FIELD", "FRAGMENT_SPREAD", "INLINE_FRAGMENT"], + "args": [ + { + "name": "if", + "description": "Included when true.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ] + }, + { + "name": "skip", + "description": "Directs the executor to skip this field or fragment when the `if` argument is true.", + "isRepeatable": false, + "locations": ["FIELD", "FRAGMENT_SPREAD", "INLINE_FRAGMENT"], + "args": [ + { + "name": "if", + "description": "Skipped when true.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ] + }, + { + "name": "specifiedBy", + "description": "Exposes a URL that specifies the behaviour of this scalar.", + "isRepeatable": false, + "locations": ["SCALAR"], + "args": [ + { + "name": "url", + "description": "The URL that specifies the behaviour of this scalar.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ] + } + ] + } +} diff --git a/src/lib/ccip/graphql/services/enrichment-data-service.ts b/src/lib/ccip/graphql/services/enrichment-data-service.ts new file mode 100644 index 00000000000..679b2548db5 --- /dev/null +++ b/src/lib/ccip/graphql/services/enrichment-data-service.ts @@ -0,0 +1,387 @@ +/** + * CCIP Enrichment Data Service + * + * Fetches dynamic pool data and rate limits from the Atlas GraphQL API. + * Replaces the static mock JSON files that were previously used for enrichment. + * + * All token address resolution (from tokens.json) and chain name mapping + * (directory key → selector name) are handled by the reference-data-resolver. + * Address normalization for GraphQL is handled by address-utils. + * + * Caching: LRU cache with 60s TTL — deduplicates concurrent requests and + * avoids repeated GraphQL calls within a Vercel serverless invocation. + */ + +import { LRUCache } from "lru-cache" +import { executeGraphQLQuery } from "~/lib/ccip/graphql/client.ts" +import { TOKEN_POOL_LANES_WITH_POOLS_QUERY } from "~/lib/ccip/graphql/queries/token-pool-lanes.ts" +import { TOKEN_POOLS_QUERY } from "~/lib/ccip/graphql/queries/token-pools.ts" +import { normalizeAddressForQuery } from "~/lib/ccip/graphql/utils/address-utils.ts" +import { + resolveTokenAddress, + resolveAllTokenAddresses, + toSelectorName, + getAllTokenSymbols, + getChainFamilyForDirectoryKey, +} from "~/lib/ccip/graphql/utils/reference-data-resolver.ts" +import { extractVersion, extractRawType, normalizePoolType } from "~/lib/ccip/graphql/utils/type-version-parser.ts" +import { normalizeAddressForDisplay } from "~/lib/ccip/graphql/utils/address-display.ts" +import type { Environment } from "~/config/data/ccip/types.ts" +import type { + RawTokenRateLimits, + RateLimiterConfig, + RateLimiterDirections, + CCVConfigData, +} from "~/lib/ccip/types/index.ts" +import type { + GetTokenPoolLanesWithPoolsQuery, + GetTokenPoolLanesWithPoolsQueryVariables, + GetTokenPoolsQuery, + GetTokenPoolsQueryVariables, +} from "~/lib/ccip/graphql/__generated__/graphql.ts" + +// ---------- Exported types ---------- + +export interface PoolInfo { + address: string + rawType: string + type: string + version: string +} + +export type PoolData = Record // directoryKey → PoolInfo + +// ---------- Cache ---------- + +const queryCache = new LRUCache>({ + max: 500, + ttl: 60_000, +}) + +function cached(key: string, fetcher: () => Promise): Promise { + const hit = queryCache.get(key) + if (hit) return hit as Promise + + const promise = fetcher().catch((error) => { + queryCache.delete(key) + throw error + }) + + queryCache.set(key, promise) + return promise +} + +// ---------- Rate limit helpers ---------- + +function toRateLimiterConfig(capacity: unknown, rate: unknown, isEnabled: unknown): RateLimiterConfig { + return { + capacity: String(capacity ?? "0"), + rate: String(rate ?? "0"), + isEnabled: Boolean(isEnabled), + } +} + +function toRateLimiterDirections( + inCap: unknown, + inRate: unknown, + inEnabled: unknown, + outCap: unknown, + outRate: unknown, + outEnabled: unknown +): RateLimiterDirections | null { + if (inCap == null && outCap == null) return null + return { + in: toRateLimiterConfig(inCap, inRate, inEnabled), + out: toRateLimiterConfig(outCap, outRate, outEnabled), + } +} + +// ---------- Pool data ---------- + +export async function fetchPoolDataForToken( + environment: Environment, + tokenSymbol: string, + directoryKey: string +): Promise { + const tokenAddress = resolveTokenAddress(environment, tokenSymbol, directoryKey) + if (!tokenAddress) return null + + const network = toSelectorName(environment, directoryKey) + const addr = normalizeAddressForQuery(tokenAddress) + + try { + return await cached(`pool|${environment}|${addr}|${network}`, async () => { + const result = await executeGraphQLQuery(TOKEN_POOLS_QUERY, { + first: 10, + condition: { token: addr, network }, + }) + + const node = result.allCcipTokenPools?.nodes?.find((n) => n.tokenPool) + if (!node?.tokenPool) return null + + const chainFamily = getChainFamilyForDirectoryKey(directoryKey) + const rawType = extractRawType(node.typeAndVersion) + return { + address: normalizeAddressForDisplay(node.tokenPool, chainFamily), + rawType, + type: normalizePoolType(rawType), + version: extractVersion(node.typeAndVersion) || "", + } + }) + } catch (error) { + console.error(`[CCIP GraphQL] fetchPoolDataForToken failed: ${tokenSymbol}@${directoryKey}`, error) + return null + } +} + +export async function fetchPoolDataForTokenAllChains(environment: Environment, tokenSymbol: string): Promise { + const addressMap = resolveAllTokenAddresses(environment, tokenSymbol) + if (Object.keys(addressMap).length === 0) return {} + + try { + return await cached(`pool-all|${environment}|${tokenSymbol}`, async () => { + const normalizedAddresses = [...new Set(Object.values(addressMap).map(normalizeAddressForQuery))] + + const result = await executeGraphQLQuery(TOKEN_POOLS_QUERY, { + first: 2000, + filter: { token: { in: normalizedAddresses } }, + }) + + // Reverse lookup: "normalizedAddress|network" → directoryKey + // Uses both address AND network to handle chains sharing the same token address + const addrNetworkToDir = new Map() + for (const [dirKey, addr] of Object.entries(addressMap)) { + const network = toSelectorName(environment, dirKey) + const key = `${normalizeAddressForQuery(addr)}|${network}` + addrNetworkToDir.set(key, dirKey) + } + + const poolData: PoolData = {} + for (const node of result.allCcipTokenPools?.nodes ?? []) { + if (!node.token || !node.tokenPool || !node.network) continue + const key = `${normalizeAddressForQuery(node.token)}|${node.network}` + const dirKey = addrNetworkToDir.get(key) + if (!dirKey) continue + + const chainFamily = getChainFamilyForDirectoryKey(dirKey) + const rawType = extractRawType(node.typeAndVersion) + poolData[dirKey] = { + address: normalizeAddressForDisplay(node.tokenPool, chainFamily), + rawType, + type: normalizePoolType(rawType), + version: extractVersion(node.typeAndVersion) || "", + } + } + + return poolData + }) + } catch (error) { + console.error(`[CCIP GraphQL] fetchPoolDataForTokenAllChains failed: ${tokenSymbol}`, error) + return {} + } +} + +// ---------- All pool data (batch for list endpoints) ---------- + +/** + * Fetch pool data for ALL tokens in one paginated query. + * Used by /tokens list endpoint to avoid N+1 queries. + * Returns: tokenSymbol → directoryKey → PoolInfo + */ +export type AllPoolData = Record + +export async function fetchAllPoolData(environment: Environment): Promise { + try { + return await cached(`all-pools|${environment}`, async () => { + // Build reverse lookup: normalizedAddress|network → { tokenSymbol, directoryKey } + const addressIndex = buildAddressIndex(environment) + + // Paginated fetch of ALL pools + const allNodes = await fetchAllPoolNodes() + + // Map GraphQL results back to tokenSymbol → directoryKey → PoolInfo + const allPoolData: AllPoolData = {} + for (const node of allNodes) { + if (!node.token || !node.network || !node.tokenPool) continue + const key = `${normalizeAddressForQuery(node.token)}|${node.network}` + const mapping = addressIndex.get(key) + if (!mapping) continue + + const { tokenSymbol, directoryKey } = mapping + const chainFamily = getChainFamilyForDirectoryKey(directoryKey) + const rawType = extractRawType(node.typeAndVersion) + + if (!allPoolData[tokenSymbol]) allPoolData[tokenSymbol] = {} + allPoolData[tokenSymbol][directoryKey] = { + address: normalizeAddressForDisplay(node.tokenPool, chainFamily), + rawType, + type: normalizePoolType(rawType), + version: extractVersion(node.typeAndVersion) || "", + } + } + + return allPoolData + }) + } catch (error) { + console.error("[CCIP GraphQL] fetchAllPoolData failed:", error) + return {} + } +} + +/** + * Builds a reverse lookup index from tokens.json: + * normalizedAddress|selectorName → { tokenSymbol, directoryKey } + */ +function buildAddressIndex(environment: Environment): Map { + const allSymbols = getAllTokenSymbols(environment) + const index = new Map() + + for (const tokenSymbol of allSymbols) { + const addressMap = resolveAllTokenAddresses(environment, tokenSymbol) + for (const [directoryKey, tokenAddress] of Object.entries(addressMap)) { + const network = toSelectorName(environment, directoryKey) + const key = `${normalizeAddressForQuery(tokenAddress)}|${network}` + index.set(key, { tokenSymbol, directoryKey }) + } + } + + return index +} + +type PoolNode = NonNullable["nodes"]>[number] + +/** + * Fetches all token pool nodes with offset-based pagination. + */ +async function fetchAllPoolNodes(): Promise { + const PAGE_SIZE = 2000 + const allNodes: PoolNode[] = [] + let offset = 0 + let fetched: number + + do { + const result = await executeGraphQLQuery(TOKEN_POOLS_QUERY, { + first: PAGE_SIZE, + offset, + }) + const nodes = result.allCcipTokenPools?.nodes ?? [] + allNodes.push(...nodes) + fetched = nodes.length + offset += PAGE_SIZE + } while (fetched >= PAGE_SIZE) + + return allNodes +} + +// ---------- Pool version ---------- + +export async function fetchPoolVersion( + environment: Environment, + tokenSymbol: string, + directoryKey: string +): Promise { + const pool = await fetchPoolDataForToken(environment, tokenSymbol, directoryKey) + return pool?.version ?? null +} + +// ---------- minBlockConfirmations ---------- + +export async function fetchMinBlockConfirmations( + environment: Environment, + tokenSymbol: string, + directoryKey: string +): Promise { + const tokenAddress = resolveTokenAddress(environment, tokenSymbol, directoryKey) + if (!tokenAddress) return null + + const network = toSelectorName(environment, directoryKey) + const addr = normalizeAddressForQuery(tokenAddress) + + try { + return await cached(`minblock|${environment}|${addr}|${network}`, async () => { + const result = await executeGraphQLQuery(TOKEN_POOLS_QUERY, { + first: 10, + condition: { token: addr, network }, + }) + + const node = result.allCcipTokenPools?.nodes?.find((n) => n.tokenPool) + return node?.minBlockConfirmations ?? null + }) + } catch (error) { + console.error(`[CCIP GraphQL] fetchMinBlockConfirmations failed: ${tokenSymbol}@${directoryKey}`, error) + return null + } +} + +// ---------- Lane rate limits ---------- + +export async function fetchLaneRateLimits( + environment: Environment, + tokenSymbol: string, + sourceDirectoryKey: string, + destDirectoryKey: string +): Promise { + const srcAddr = resolveTokenAddress(environment, tokenSymbol, sourceDirectoryKey) + const dstAddr = resolveTokenAddress(environment, tokenSymbol, destDirectoryKey) + if (!srcAddr || !dstAddr) return null + + const srcNetwork = toSelectorName(environment, sourceDirectoryKey) + const dstNetwork = toSelectorName(environment, destDirectoryKey) + const srcToken = normalizeAddressForQuery(srcAddr) + const dstToken = normalizeAddressForQuery(dstAddr) + + const cacheKey = `lane|${environment}|${srcNetwork}|${srcToken}|${dstNetwork}|${dstToken}` + + try { + return await cached(cacheKey, async () => { + const result = await executeGraphQLQuery< + GetTokenPoolLanesWithPoolsQuery, + GetTokenPoolLanesWithPoolsQueryVariables + >(TOKEN_POOL_LANES_WITH_POOLS_QUERY, { + first: 1, + condition: { + token: srcToken, + network: srcNetwork, + remoteToken: dstToken, + remoteNetworkName: dstNetwork, + }, + filter: { removed: { notEqualTo: true } }, + }) + + const node = result.allCcipTokenPoolLanesWithPools?.nodes?.[0] + if (!node) return null + + return { + standard: toRateLimiterDirections( + node.inboundCapacity, + node.inboundRate, + node.inboundEnabled, + node.outboundCapacity, + node.outboundRate, + node.outboundEnabled + ), + custom: toRateLimiterDirections( + node.customInboundCapacity, + node.customInboundRate, + node.customInboundEnabled, + node.customOutboundCapacity, + node.customOutboundRate, + node.customOutboundEnabled + ), + } + }) + } catch (error) { + console.error( + `[CCIP GraphQL] fetchLaneRateLimits failed: ${tokenSymbol} ${sourceDirectoryKey}->${destDirectoryKey}`, + error + ) + return null + } +} + +// ---------- Stubs ---------- + +// TODO: CCV verifier data is not yet available in the GraphQL schema. +export function stubCCVConfigData(): CCVConfigData { + return {} +} diff --git a/src/lib/ccip/graphql/utils/address-display.ts b/src/lib/ccip/graphql/utils/address-display.ts new file mode 100644 index 00000000000..8cf6e787b84 --- /dev/null +++ b/src/lib/ccip/graphql/utils/address-display.ts @@ -0,0 +1,65 @@ +/** + * Address display normalization for API responses. + * + * Ensures addresses are returned in the canonical display format + * for each chain family. This is the counterpart to address-utils.ts + * which normalizes addresses for GraphQL queries (input). + * + * Strategy by chain family: + * - EVM: EIP-55 checksummed (mixed-case encoding of the address) + * - Solana: Base58 — case-sensitive, returned as-is + * - Aptos: 0x + lowercase hex (64 chars) — canonical format + * - SUI: 0x + lowercase hex (64 chars) — canonical format + * - TON: raw format, returned as-is + * - Starknet: 0x + lowercase hex, returned as-is + * + * To add a new chain family: + * 1. Add a case to normalizeAddressForDisplay + * 2. Implement the normalization function if needed + * 3. Update this JSDoc + */ + +import { getAddress } from "ethers" + +export type ChainFamily = "evm" | "solana" | "aptos" | "sui" | "ton" | "starknet" | "tron" | "canton" | "stellar" + +/** + * Normalizes an address for display in API responses. + * + * @param address - Raw address from GraphQL or reference data + * @param chainFamily - Chain family determining the normalization strategy + * @returns Display-normalized address + */ +export function normalizeAddressForDisplay(address: string, chainFamily: ChainFamily | null): string { + if (!address || !chainFamily) return address + + switch (chainFamily) { + case "evm": + return checksumEVMAddress(address) + case "solana": + case "aptos": + case "sui": + case "ton": + case "starknet": + case "tron": + case "canton": + case "stellar": + // These chain families use their native format as canonical — no transformation needed + return address + default: + return address + } +} + +/** + * Applies EIP-55 checksumming to an EVM address. + * Falls back to the original address if checksumming fails (e.g., invalid address). + */ +function checksumEVMAddress(address: string): string { + try { + return getAddress(address) + } catch { + // If checksumming fails, return as-is rather than breaking the response + return address + } +} diff --git a/src/lib/ccip/graphql/utils/address-utils.ts b/src/lib/ccip/graphql/utils/address-utils.ts new file mode 100644 index 00000000000..0de600b6788 --- /dev/null +++ b/src/lib/ccip/graphql/utils/address-utils.ts @@ -0,0 +1,27 @@ +/** + * Address normalization utilities for GraphQL queries against the Atlas database. + * + * Atlas stores addresses in chain-family-specific formats: + * - EVM (Ethereum, Arbitrum, Base, etc.): 0x-prefixed, all lowercase hex + * - Aptos: 0x-prefixed, all lowercase hex (64 chars) + * - Solana: Base58-encoded, case-sensitive (no 0x prefix) + * - SUI: 0x-prefixed, all lowercase hex (64 chars) + * + * Our reference data (tokens.json) may store addresses with mixed casing + * (e.g., EIP-55 checksummed EVM addresses). Before querying GraphQL, + * addresses must be normalized to match the Atlas format. + */ + +/** + * Normalizes a token/pool address for use in GraphQL queries. + * + * - 0x-prefixed addresses (EVM, Aptos, SUI): lowercased to match Atlas format + * - Base58 addresses (Solana): kept as-is since Base58 is case-sensitive + * + * @param address - Token or pool address from reference data + * @returns Normalized address safe for GraphQL condition/filter values + */ +export function normalizeAddressForQuery(address: string): string { + if (!address) return address + return address.startsWith("0x") ? address.toLowerCase() : address +} diff --git a/src/lib/ccip/graphql/utils/reference-data-resolver.ts b/src/lib/ccip/graphql/utils/reference-data-resolver.ts new file mode 100644 index 00000000000..b5eaa001f95 --- /dev/null +++ b/src/lib/ccip/graphql/utils/reference-data-resolver.ts @@ -0,0 +1,126 @@ +/** + * Reference data resolver — bridges static reference data (tokens.json, chains.json) + * with the GraphQL API by providing token address lookups and chain name mapping. + * + * This module caches loaded reference data per environment to avoid repeated + * file reads during a single serverless invocation. + * + * Key responsibilities: + * - Resolve token symbol + directory key → token address (from tokens.json) + * - Map directory key → selector name (for GraphQL `network` field) + * - Batch resolve all chain addresses for a token + */ + +import { ChainIdentifierService } from "~/lib/ccip/services/chain-identifier.ts" +import { Environment, Version } from "~/config/data/ccip/types.ts" +import { loadReferenceData } from "~/config/data/ccip/index.ts" +import { directoryToSupportedChain, getChainTypeAndFamily } from "~/features/utils/index.ts" +import type { ChainFamily } from "~/lib/ccip/graphql/utils/address-display.ts" + +// Cache loaded reference data and chain services per environment +const refDataCache = new Map< + string, + { + tokensReferenceData: Record> + chainIdService: ChainIdentifierService + } +>() + +function getRefData(environment: Environment) { + const cached = refDataCache.get(environment) + if (cached) return cached + + const { tokensReferenceData } = loadReferenceData({ environment, version: Version.V1_2_0 }) + const chainIdService = new ChainIdentifierService(environment) + + const entry = { + tokensReferenceData: tokensReferenceData as Record>, + chainIdService, + } + refDataCache.set(environment, entry) + return entry +} + +/** + * Resolves a token address from tokens.json using token symbol and directory key. + * @returns Token address or null if not found + */ +export function resolveTokenAddress( + environment: Environment, + tokenSymbol: string, + directoryKey: string +): string | null { + const { tokensReferenceData } = getRefData(environment) + return tokensReferenceData[tokenSymbol]?.[directoryKey]?.tokenAddress || null +} + +/** + * Resolves all token addresses for a token across all chains. + * @returns Map of directoryKey → tokenAddress + */ +export function resolveAllTokenAddresses(environment: Environment, tokenSymbol: string): Record { + const { tokensReferenceData } = getRefData(environment) + const chainEntries = tokensReferenceData[tokenSymbol] + if (!chainEntries) return {} + + const result: Record = {} + for (const [directoryKey, info] of Object.entries(chainEntries)) { + if (info.tokenAddress) { + result[directoryKey] = info.tokenAddress + } + } + return result +} + +/** + * Maps a directory key (e.g., "mainnet") to a selector name (e.g., "ethereum-mainnet"). + * Selector names are used as the `network` field in GraphQL queries. + * @returns Selector name, or the input directoryKey if no mapping exists + */ +export function toSelectorName(environment: Environment, directoryKey: string): string { + const { chainIdService } = getRefData(environment) + return chainIdService.getSelectorName(directoryKey) ?? directoryKey +} + +/** + * Resolves a user-provided token symbol to its canonical form in tokens.json. + * Handles case-insensitive matching and whitespace trimming. + * @returns Canonical token symbol or null if not found + */ +export function resolveTokenSymbol(environment: Environment, input: string): string | null { + const trimmed = input.trim() + if (!trimmed) return null + + const { tokensReferenceData } = getRefData(environment) + + // Exact match first (fast path) + if (trimmed in tokensReferenceData) return trimmed + + // Case-insensitive fallback + const lowerInput = trimmed.toLowerCase() + for (const symbol of Object.keys(tokensReferenceData)) { + if (symbol.toLowerCase() === lowerInput) return symbol + } + + return null +} + +/** + * Returns all token symbols from the reference data. + */ +export function getAllTokenSymbols(environment: Environment): string[] { + const { tokensReferenceData } = getRefData(environment) + return Object.keys(tokensReferenceData) +} + +/** + * Resolves a directory key to its chain family (evm, solana, aptos, etc.). + * Used for address display normalization. + * @returns Chain family or null if resolution fails (address should be returned as-is) + */ +export function getChainFamilyForDirectoryKey(directoryKey: string): ChainFamily | null { + const supportedChain = directoryToSupportedChain(directoryKey) + if (!supportedChain) return null + const { chainFamily } = getChainTypeAndFamily(supportedChain) + return chainFamily as ChainFamily +} diff --git a/src/lib/ccip/graphql/utils/type-version-parser.ts b/src/lib/ccip/graphql/utils/type-version-parser.ts new file mode 100644 index 00000000000..96c038294a4 --- /dev/null +++ b/src/lib/ccip/graphql/utils/type-version-parser.ts @@ -0,0 +1,55 @@ +/** + * Utilities for parsing the `typeAndVersion` field from Atlas GraphQL responses. + * + * Atlas stores pool metadata as a combined string, e.g.: + * - "BurnMintTokenPool 1.5.1" + * - "LockReleaseTokenPool 1.6.0" + * - "USDCTokenPool 1.6.2" + * - "ManagedTokenPool 1.6.0" (Aptos) + * + * These utilities extract the raw type name, semantic version, and + * normalized pool type from this field. + */ + +const VERSION_REGEX = /(\d+\.\d+\.\d+)/ + +/** + * Extracts the semantic version from a typeAndVersion string. + * @example extractVersion("BurnMintTokenPool 1.5.1") → "1.5.1" + * @example extractVersion(null) → null + */ +export function extractVersion(typeAndVersion: string | null | undefined): string | null { + if (!typeAndVersion) return null + const match = typeAndVersion.match(VERSION_REGEX) + return match ? match[1] : null +} + +/** + * Extracts the raw pool type name from a typeAndVersion string. + * @example extractRawType("BurnMintTokenPool 1.5.1") → "BurnMintTokenPool" + * @example extractRawType(null) → "" + */ +export function extractRawType(typeAndVersion: string | null | undefined): string { + if (!typeAndVersion) return "" + return typeAndVersion.replace(/\s+\d+\.\d+\.\d+.*$/, "").trim() +} + +/** + * Normalizes a raw pool type to a canonical pool type identifier. + * + * Known mappings: + * - "USDCTokenPool" → "usdc" + * - "LockReleaseTokenPool" → "lockRelease" + * - "BurnMintTokenPool", "BurnMintTokenPoolAndProxy" → "burnMint" + * - Unrecognized types are returned as-is (signals new/unknown pool type) + * + * @example normalizePoolType("BurnMintTokenPool") → "burnMint" + * @example normalizePoolType("ManagedTokenPool") → "ManagedTokenPool" + */ +export function normalizePoolType(rawType: string): string { + const lower = rawType.toLowerCase() + if (lower.includes("usdc")) return "usdc" + if (lower.includes("lockrelease")) return "lockRelease" + if (lower.includes("burnmint") || lower.includes("burn")) return "burnMint" + return rawType +} diff --git a/src/pages/api/ccip/services/chain-config.ts b/src/lib/ccip/services-api/chain-config.ts similarity index 97% rename from src/pages/api/ccip/services/chain-config.ts rename to src/lib/ccip/services-api/chain-config.ts index 0123472a0ce..3c67528964d 100644 --- a/src/pages/api/ccip/services/chain-config.ts +++ b/src/lib/ccip/services-api/chain-config.ts @@ -7,7 +7,7 @@ import { getSolanaDevnetConfig } from "@lib/core/config/index.ts" import { createRpcContext } from "@lib/solana/infrastructure/rpc/solana-rpc.ts" import type { IRpcContext } from "@lib/solana/infrastructure/rpc/types.ts" -import type { FaucetChainConfig } from "@api/ccip/types/faucet.ts" +import type { FaucetChainConfig } from "~/lib/ccip/types/faucet.ts" export const prerender = false diff --git a/src/pages/api/ccip/services/faucet/drip-orchestrator.ts b/src/lib/ccip/services-api/faucet/drip-orchestrator.ts similarity index 99% rename from src/pages/api/ccip/services/faucet/drip-orchestrator.ts rename to src/lib/ccip/services-api/faucet/drip-orchestrator.ts index 95cd2c97af9..6eb6aa3ecb0 100644 --- a/src/pages/api/ccip/services/faucet/drip-orchestrator.ts +++ b/src/lib/ccip/services-api/faucet/drip-orchestrator.ts @@ -16,7 +16,7 @@ import { TransactionManager } from "@lib/solana/domain/transaction/services/mana import { detectTokenProgram, getBackendSigner } from "@lib/solana/core/services/index.ts" import { NetworkComputeBudgetService, TransactionComplexity } from "@lib/solana/core/services/network-compute-budget.ts" import type { IRpcContext } from "@lib/solana/infrastructure/rpc/types.ts" -import type { FaucetChainConfig } from "@api/ccip/types/faucet.ts" +import type { FaucetChainConfig } from "~/lib/ccip/types/faucet.ts" import type { Address } from "@solana/kit" import { directoryToSupportedChain } from "@features/utils/index.ts" diff --git a/src/pages/api/ccip/services/faucet/error-handler.ts b/src/lib/ccip/services-api/faucet/error-handler.ts similarity index 97% rename from src/pages/api/ccip/services/faucet/error-handler.ts rename to src/lib/ccip/services-api/faucet/error-handler.ts index e79b173580f..228b478cb38 100644 --- a/src/pages/api/ccip/services/faucet/error-handler.ts +++ b/src/lib/ccip/services-api/faucet/error-handler.ts @@ -4,7 +4,7 @@ * to appropriate HTTP status codes following RESTful principles */ -import { APIErrorType, createErrorResponse } from "@api/ccip/utils.ts" +import { APIErrorType, createErrorResponse } from "~/lib/ccip/utils.ts" import { FaucetStateService } from "@lib/solana/domain/services/faucet-state.ts" import { address } from "@lib/solana/index.js" import { logger } from "@lib/logging/index.js" @@ -254,9 +254,9 @@ export async function handleFaucetError( APIErrorType.VALIDATION_ERROR, `You can request tokens again in ${timeInfo.displayTime}`, 429, // Rate limit status + requestId, { code: "RATE_LIMIT_ACTIVE", - traceId: requestId, remainingSeconds: timeInfo.remainingSeconds, nextAvailable: timeInfo.nextAvailable.toISOString(), displayTime: timeInfo.displayTime, @@ -279,37 +279,33 @@ export async function handleFaucetError( if (errorMessage.includes(pattern)) { const responseData = { code: mapping.code, - traceId: requestId, ...(mapping.retryAfter && { retryAfter: mapping.retryAfter }), } - return createErrorResponse(mapping.errorType, mapping.userMessage, mapping.httpStatus, responseData) + return createErrorResponse(mapping.errorType, mapping.userMessage, mapping.httpStatus, requestId, responseData) } } // Check for partial matches for compound error messages if (errorMessage.includes("insufficient") && errorMessage.includes("funds")) { const mapping = ERROR_MAPPINGS["insufficient funds"] - return createErrorResponse(mapping.errorType, mapping.userMessage, mapping.httpStatus, { + return createErrorResponse(mapping.errorType, mapping.userMessage, mapping.httpStatus, requestId, { code: mapping.code, - traceId: requestId, retryAfter: mapping.retryAfter, }) } if (errorMessage.includes("invalid") && errorMessage.includes("mint")) { const mapping = ERROR_MAPPINGS["invalid mint"] - return createErrorResponse(mapping.errorType, mapping.userMessage, mapping.httpStatus, { + return createErrorResponse(mapping.errorType, mapping.userMessage, mapping.httpStatus, requestId, { code: mapping.code, - traceId: requestId, }) } if (errorMessage.includes("timeout") || errorMessage.includes("deadline")) { const mapping = ERROR_MAPPINGS["timeout exceeded"] - return createErrorResponse(mapping.errorType, mapping.userMessage, mapping.httpStatus, { + return createErrorResponse(mapping.errorType, mapping.userMessage, mapping.httpStatus, requestId, { code: mapping.code, - traceId: requestId, }) } @@ -318,9 +314,9 @@ export async function handleFaucetError( APIErrorType.SERVER_ERROR, "We encountered an issue processing your request. Please try again or contact support if this continues.", 500, + requestId, { code: "UNEXPECTED_FAUCET_ERROR", - traceId: requestId, } ) } diff --git a/src/pages/api/services/chain-data.ts b/src/lib/ccip/services/chain-data.ts similarity index 74% rename from src/pages/api/services/chain-data.ts rename to src/lib/ccip/services/chain-data.ts index 4e0b6a6fd22..2e92dba94b9 100644 --- a/src/pages/api/services/chain-data.ts +++ b/src/lib/ccip/services/chain-data.ts @@ -1,12 +1,20 @@ -import { Environment, ChainDetails, FilterType, ChainConfigError, FeeTokenEnriched } from "../ccip/types/index.ts" +import { + Environment, + ChainDetails, + FilterType, + ChainConfigError, + FeeTokenEnriched, + ChainFamily, +} from "~/lib/ccip/types/index.ts" import { ChainsConfig } from "@config/data/ccip/index.ts" -import { getSelectorEntry } from "@config/data/ccip/selectors.ts" -import { resolveChainOrThrow } from "@api/ccip/utils.ts" +import { getSelectorEntry, getAllSelectors } from "@config/data/ccip/selectors.ts" +import { resolveChainOrThrow } from "~/lib/ccip/utils.ts" import { logger } from "@lib/logging/index.js" -import { getChainId, getNativeCurrency, getTitle, getChainTypeAndFamily } from "../../../features/utils/index.ts" -import { SupportedChain, ChainType, ChainFamily } from "~/config/index.ts" +import { getChainId, getNativeCurrency, getTitle, getChainTypeAndFamily } from "@features/utils/index.ts" +import { SupportedChain, ChainType } from "~/config/index.ts" import { getTokenData } from "@config/data/ccip/data.ts" import { Version } from "@config/data/ccip/types.ts" +import { deriveDisplayName } from "~/lib/ccip/utils/display-name.ts" export const prerender = false @@ -65,13 +73,13 @@ abstract class BaseChainStrategy implements IChainProcessingStrategy { } } - // Validate chainId and selectorEntry - if (!chainId || !selectorEntry) { + // Validate chainId and selectorEntry (use explicit null/undefined check to allow chainId 0) + if (chainId === undefined || chainId === null || !selectorEntry) { logger.warn({ message: "Missing chain ID or selector entry", requestId: this.requestId, networkId, - hasChainId: !!chainId, + hasChainId: chainId !== undefined && chainId !== null, hasSelectorEntry: !!selectorEntry, }) @@ -228,9 +236,19 @@ class EvmChainStrategy extends BaseChainStrategy { } } - // Construct the complete EVM chain details + // Construct the complete EVM chain details with explicit field assignment + const { baseData } = baseValidation const validatedData: ChainDetails = { - ...(baseValidation.baseData as unknown as ChainDetails), + chainId: baseData.chainId!, + displayName: baseData.displayName!, + selector: baseData.selector!, + internalId: baseData.internalId!, + feeTokens: baseData.feeTokens!, + router: baseData.router!, + rmn: baseData.rmn!, + chainType: baseData.chainType!, + chainFamily: baseData.chainFamily!, + supported: true, registryModule: chainConfig.registryModule?.address, tokenAdminRegistry: chainConfig.tokenAdminRegistry?.address, tokenPoolFactory: chainConfig.tokenPoolFactory?.address, @@ -292,9 +310,19 @@ class SolanaChainStrategy extends BaseChainStrategy { } } - // Construct the complete Solana chain details + // Construct the complete Solana chain details with explicit field assignment + const { baseData } = baseValidation const validatedData: ChainDetails = { - ...(baseValidation.baseData as unknown as ChainDetails), + chainId: baseData.chainId!, + displayName: baseData.displayName!, + selector: baseData.selector!, + internalId: baseData.internalId!, + feeTokens: baseData.feeTokens!, + router: baseData.router!, + rmn: baseData.rmn!, + chainType: baseData.chainType!, + chainFamily: baseData.chainFamily!, + supported: true, feeQuoter: chainConfig.feeQuoter, } @@ -348,8 +376,19 @@ class AptosChainStrategy extends BaseChainStrategy { } } + // Construct the complete Aptos chain details with explicit field assignment + const { baseData } = baseValidation const validatedData: ChainDetails = { - ...(baseValidation.baseData as ChainDetails), + chainId: baseData.chainId!, + displayName: baseData.displayName!, + selector: baseData.selector!, + internalId: baseData.internalId!, + feeTokens: baseData.feeTokens!, + router: baseData.router!, + rmn: baseData.rmn!, + chainType: baseData.chainType!, + chainFamily: baseData.chainFamily!, + supported: true, tokenAdminRegistry: chainConfig.tokenAdminRegistry?.address ?? "", mcms: chainConfig.mcms?.address ?? "", } @@ -373,6 +412,13 @@ class ChainStrategyFactory { ["evm", EvmChainStrategy], ["solana", SolanaChainStrategy], ["aptos", AptosChainStrategy], + ["sui", AptosChainStrategy], // Sui uses Move VM like Aptos + // New chain types use EVM strategy as fallback until specific strategies are implemented + ["tron", EvmChainStrategy], + ["canton", EvmChainStrategy], + ["ton", EvmChainStrategy], + ["stellar", EvmChainStrategy], + ["starknet", EvmChainStrategy], ]) static getStrategy(chainType: ChainType, requestId: string): IChainProcessingStrategy { @@ -399,10 +445,11 @@ export class ChainDataService { /** * Creates a new instance of ChainDataService * @param chainConfig - Configuration for supported chains + * @param requestId - Optional request ID for log correlation (generates new UUID if not provided) */ - constructor(chainConfig: ChainsConfig) { + constructor(chainConfig: ChainsConfig, requestId?: string) { this.chainConfig = chainConfig - this.requestId = crypto.randomUUID() + this.requestId = requestId ?? crypto.randomUUID() logger.debug({ message: "ChainDataService initialized", @@ -625,7 +672,7 @@ export class ChainDataService { if (filters.chainId) { const chainIds = filters.chainId.split(",").map((id) => id.trim()) - filteredChains = chains.filter((chain) => chainIds.includes(String(chain.chainId))) + filteredChains = filteredChains.filter((chain) => chainIds.includes(String(chain.chainId))) } if (filters.selector) { @@ -654,8 +701,14 @@ export class ChainDataService { // Group by chain family const groupedChains: Record = { evm: [], - mvm: [], - svm: [], + aptos: [], + sui: [], + solana: [], + tron: [], + canton: [], + ton: [], + stellar: [], + starknet: [], } for (const chain of filteredChains) { @@ -681,3 +734,115 @@ export class ChainDataService { } } } + +/** + * Maps a chain type to its corresponding chain family. + * + * Each chain type maps directly to its own family: + * - evm: Ethereum Virtual Machine chains + * - solana: Solana chains + * - aptos: Aptos chains + * - sui: Sui chains + * - tron, canton, ton, stellar, starknet: Each has its own family + * + * @param chainType - The specific chain type + * @returns The chain family (same as chain type) + * @example + * getChainFamilyFromType('solana') // returns 'solana' + * getChainFamilyFromType('aptos') // returns 'aptos' + */ +function getChainFamilyFromType(chainType: ChainType): ChainFamily { + switch (chainType) { + case "evm": + return "evm" + case "solana": + return "solana" + case "aptos": + return "aptos" + case "sui": + return "sui" + case "tron": + return "tron" + case "canton": + return "canton" + case "ton": + return "ton" + case "stellar": + return "stellar" + case "starknet": + return "starknet" + default: + return "evm" + } +} + +/** + * Gets all chains for search including both supported and unsupported chains. + * + * Supported chains have full details from the chain configuration, while + * unsupported chains have minimal details derived from selector YAML files. + * The displayName for unsupported chains is derived from their internalId. + * + * @param environment - Network environment (mainnet/testnet) + * @param supportedChains - Array of fully supported chain details with complete configuration + * @returns Array of all chain details with supported flag indicating if chain is fully configured + * + * @example + * const allChains = getAllChainsForSearch(Environment.Mainnet, supportedChains) + * // Returns both supported chains (with full details) and unsupported chains (minimal details) + */ +export function getAllChainsForSearch(environment: Environment, supportedChains: ChainDetails[]): ChainDetails[] { + // Use Map for O(1) lookup instead of find() which is O(n) + const supportedChainsBySelector = new Map( + supportedChains.map((chain) => [chain.selector, chain]) + ) + const networkType = environment === Environment.Mainnet ? "mainnet" : "testnet" + + // Get all selectors from YAML files for all chain types + const allSelectors = [ + ...getAllSelectors("evm", networkType), + ...getAllSelectors("solana", networkType), + ...getAllSelectors("aptos", networkType), + ...getAllSelectors("sui", networkType), + ...getAllSelectors("canton", networkType), + ...getAllSelectors("ton", networkType), + ...getAllSelectors("tron", networkType), + ...getAllSelectors("stellar", networkType), + ...getAllSelectors("starknet", networkType), + ] + + const result: ChainDetails[] = [] + + for (const entry of allSelectors) { + // Skip entries with missing required data + if (!entry.selector || !entry.chainType) { + continue + } + + const supportedChain = supportedChainsBySelector.get(entry.selector) + + if (supportedChain) { + // Supported chain - use full details with supported: true + result.push({ ...supportedChain, supported: true }) + } else { + // Unsupported chain - minimal details from selector data + // Use explicit chainId check to allow 0 as valid value + const chainFamily = getChainFamilyFromType(entry.chainType) + const internalId = entry.name || `chain-${entry.chainId ?? "unknown"}` + result.push({ + chainId: entry.chainId ?? "", + selector: entry.selector, + internalId, + displayName: deriveDisplayName(internalId), + chainType: entry.chainType, + chainFamily, + supported: false, + feeTokens: [], + router: "", + rmn: "", + }) + } + } + + return result +} diff --git a/src/lib/ccip/services/chain-identifier.ts b/src/lib/ccip/services/chain-identifier.ts new file mode 100644 index 00000000000..7290931a9dc --- /dev/null +++ b/src/lib/ccip/services/chain-identifier.ts @@ -0,0 +1,196 @@ +import { loadReferenceData, Version } from "@config/data/ccip/index.ts" +import type { ChainConfig } from "@config/data/ccip/types.ts" +import { getSelectorEntry } from "@config/data/ccip/selectors.ts" +import { getChainId, getChainTypeAndFamily, directoryToSupportedChain } from "~/features/utils/index.ts" +import { Environment, NamingConvention } from "~/lib/ccip/types/index.ts" +import { logger } from "@lib/logging/index.js" + +/** + * Result of resolving a chain identifier + */ +export interface ResolvedChain { + directoryKey: string // Key in chains.json (for internal data lookups) + selectorName: string // Name in selectors.yml (canonical form) + inputConvention: NamingConvention // Which convention was used in the input +} + +/** + * Service for handling chain identifier resolution and formatting. + * Supports bidirectional mapping between directory keys and selector names. + * + * This enables the API to: + * 1. Accept both naming conventions as input + * 2. Mirror the user's chosen convention in responses + * 3. Maintain backward compatibility (default to selector names) + */ +export class ChainIdentifierService { + private directoryToSelector: Map = new Map() + private selectorToDirectory: Map = new Map() + private directoryKeys: Set = new Set() + private readonly requestId: string + + constructor( + private readonly environment: Environment, + private readonly defaultConvention: NamingConvention = "selector" + ) { + this.requestId = crypto.randomUUID() + this.buildMappings() + } + + /** + * Build bidirectional mappings between directory keys and selector names + */ + private buildMappings(): void { + const { chainsReferenceData } = loadReferenceData({ + environment: this.environment, + version: Version.V1_2_0, + }) + + for (const [directoryKey] of Object.entries(chainsReferenceData as Record)) { + this.directoryKeys.add(directoryKey) + + try { + // Get chain ID and type to look up the selector entry + const supportedChain = directoryToSupportedChain(directoryKey) + const chainId = getChainId(supportedChain) + const { chainType } = getChainTypeAndFamily(supportedChain) + + if (chainId) { + const selectorEntry = getSelectorEntry(chainId, chainType) + if (selectorEntry?.name) { + const selectorName = selectorEntry.name + + // Only add mapping if names are different + if (selectorName !== directoryKey) { + this.directoryToSelector.set(directoryKey, selectorName) + this.selectorToDirectory.set(selectorName, directoryKey) + } + } + } + } catch { + // Skip chains that can't be resolved + logger.debug({ + message: "Could not resolve chain for mapping", + requestId: this.requestId, + directoryKey, + }) + } + } + + logger.debug({ + message: "Chain identifier mappings built", + requestId: this.requestId, + mappingCount: this.directoryToSelector.size, + directoryKeyCount: this.directoryKeys.size, + }) + } + + /** + * Check if an identifier is a directory key (chains.json key) + */ + isDirectoryKey(identifier: string): boolean { + return this.directoryKeys.has(identifier) + } + + /** + * Check if an identifier is a selector name (selectors.yml name) + */ + isSelectorName(identifier: string): boolean { + // It's a selector name if: + // 1. It maps to a directory key, OR + // 2. It's a directory key that has no different selector name (they're the same) + return this.selectorToDirectory.has(identifier) || this.directoryKeys.has(identifier) + } + + /** + * Resolve a chain identifier to both directory key and selector name. + * Detects which convention was used in the input. + * + * @param identifier - Chain identifier (directory key or selector name) + * @returns Resolved chain info or null if not found + */ + resolve(identifier: string): ResolvedChain | null { + // Check if it's a directory key + if (this.directoryKeys.has(identifier)) { + const selectorName = this.directoryToSelector.get(identifier) ?? identifier + return { + directoryKey: identifier, + selectorName, + inputConvention: "directory", + } + } + + // Check if it's a selector name that maps to a directory key + if (this.selectorToDirectory.has(identifier)) { + const directoryKey = this.selectorToDirectory.get(identifier)! + return { + directoryKey, + selectorName: identifier, + inputConvention: "selector", + } + } + + // Not found + return null + } + + /** + * Format a directory key using the specified naming convention. + * + * @param directoryKey - The chains.json key + * @param convention - Which format to output + * @returns Formatted identifier + */ + format(directoryKey: string, convention: NamingConvention): string { + if (convention === "directory") { + return directoryKey + } + + // Return selector name, or directory key if no mapping exists + return this.directoryToSelector.get(directoryKey) ?? directoryKey + } + + /** + * Detect the naming convention from a list of identifiers. + * Returns the convention of the first resolvable identifier. + * + * @param identifiers - List of identifiers to check + * @returns Detected convention or default + */ + detectConvention(...identifiers: (string | undefined)[]): NamingConvention { + for (const identifier of identifiers) { + if (!identifier) continue + + const resolved = this.resolve(identifier) + if (resolved) { + return resolved.inputConvention + } + } + + return this.defaultConvention + } + + /** + * Get the default naming convention + */ + getDefaultConvention(): NamingConvention { + return this.defaultConvention + } + + /** + * Get the directory key for a given identifier (either format) + * This is useful for internal data lookups + */ + getDirectoryKey(identifier: string): string | null { + const resolved = this.resolve(identifier) + return resolved?.directoryKey ?? null + } + + /** + * Get the selector name for a given identifier (either format) + */ + getSelectorName(identifier: string): string | null { + const resolved = this.resolve(identifier) + return resolved?.selectorName ?? null + } +} diff --git a/src/lib/ccip/services/chain-search.ts b/src/lib/ccip/services/chain-search.ts new file mode 100644 index 00000000000..b7019780768 --- /dev/null +++ b/src/lib/ccip/services/chain-search.ts @@ -0,0 +1,220 @@ +import Fuse, { type IFuseOptions } from "fuse.js" +import type { ChainDetails, ChainFamily, SearchType } from "~/lib/ccip/types/index.ts" +import { CCIPError } from "~/lib/ccip/utils.ts" +import { logger } from "@lib/logging/index.js" + +export const prerender = false + +// Fuse.js configuration for fuzzy search +const FUSE_OPTIONS: IFuseOptions = { + keys: [ + { name: "displayName", weight: 0.4 }, + { name: "internalId", weight: 0.25 }, + { name: "chainFamily", weight: 0.2 }, + { name: "chainId", weight: 0.15 }, + ], + threshold: 0.3, // Stricter matching - 0.4 was too relaxed + ignoreLocation: true, + minMatchCharLength: 2, +} + +// Cache for search indexes to avoid O(n) operations on every search +// Includes Fuse.js instance and Map-based lookups for O(1) exact matches +interface SearchCache { + key: string + fuse: Fuse + selectorMap: Map + internalIdMap: Map + chainIdMap: Map // chainId can have duplicates across chains +} + +let searchCache: SearchCache | null = null + +/** + * Generates a cache key based on chain data. + * Uses chain count, first/middle/last selectors, and a checksum to detect when data changes. + */ +function generateCacheKey(chains: ChainDetails[]): string { + if (chains.length === 0) return "empty" + const firstSelector = chains[0]?.selector ?? "" + const lastSelector = chains[chains.length - 1]?.selector ?? "" + const midIndex = Math.floor(chains.length / 2) + const midSelector = chains[midIndex]?.selector ?? "" + + // Create a simple checksum of all selectors to detect middle changes + let checksum = 0 + for (const chain of chains) { + const selector = chain.selector || "" + for (let i = 0; i < selector.length; i++) { + checksum = (checksum + selector.charCodeAt(i)) % 1000000 + } + } + + return `${chains.length}:${firstSelector}:${midSelector}:${lastSelector}:${checksum}` +} + +/** + * Builds search indexes for the given chains. + * Creates Fuse.js instance and Map-based lookups. + */ +function buildSearchIndexes(chains: ChainDetails[]): SearchCache { + const selectorMap = new Map() + const internalIdMap = new Map() + const chainIdMap = new Map() + + for (const chain of chains) { + if (chain.selector) { + selectorMap.set(chain.selector, chain) + } + if (chain.internalId) { + internalIdMap.set(chain.internalId.toLowerCase(), chain) + } + // chainId can have duplicates, so store as array + const chainIdStr = String(chain.chainId) + const existing = chainIdMap.get(chainIdStr) || [] + existing.push(chain) + chainIdMap.set(chainIdStr, existing) + } + + return { + key: generateCacheKey(chains), + fuse: new Fuse(chains, FUSE_OPTIONS), + selectorMap, + internalIdMap, + chainIdMap, + } +} + +/** + * Gets or creates cached search indexes for the given chains. + * Reuses existing cache if the chain data hasn't changed. + */ +function getSearchIndexes(chains: ChainDetails[]): SearchCache { + const cacheKey = generateCacheKey(chains) + + if (searchCache && searchCache.key === cacheKey) { + logger.debug({ + message: "Using cached search indexes", + cacheKey, + }) + return searchCache + } + + logger.debug({ + message: "Building new search indexes", + cacheKey, + chainCount: chains.length, + }) + + searchCache = buildSearchIndexes(chains) + return searchCache +} + +/** + * Checks if a query looks like a selector (18-20 digit number). + * Selectors are always large numeric strings. + */ +function isLikelySelector(query: string): boolean { + const candidate = query.replace(/n$/, "") // Remove trailing 'n' for BigInt literals + return /^\d+$/.test(candidate) && candidate.length > 17 +} + +/** + * Executes search on chains with automatic query type detection. + * + * Detection strategy (in order): + * 1. Check if query matches a selector in the map + * 2. Check if query matches a chainId in the map (handles all formats: numeric, negative, hex, strings) + * 3. Check if query matches an internalId in the map + * 4. Fall back to fuzzy search on displayName + * + * This approach is simpler and automatically handles all chainId formats across chain families. + * + * @param query - Search query string + * @param chains - Array of chain details to search + * @param familyFilter - Optional chain family filter + * @returns Search results and detected search type + * @throws CCIPError if query is too short for fuzzy search + */ +export function searchChains( + query: string, + chains: ChainDetails[], + familyFilter?: ChainFamily | null +): { results: ChainDetails[]; searchType: SearchType } { + const trimmed = query.trim() + + if (trimmed.length < 2) { + throw new CCIPError(400, "Search query must be at least 2 characters.") + } + + const indexes = getSearchIndexes(chains) + let results: ChainDetails[] + let searchType: SearchType + + // 1. Check if it's a selector (large numeric string > 17 digits) + const selectorCandidate = trimmed.replace(/n$/, "") + if (isLikelySelector(trimmed) && indexes.selectorMap.has(selectorCandidate)) { + const chain = indexes.selectorMap.get(selectorCandidate)! + results = [chain] + searchType = "selector" + logger.debug({ + message: "Search matched selector", + query: trimmed, + type: "selector", + }) + } + // 2. Check if query exists as a chainId (handles all formats automatically) + else if (indexes.chainIdMap.has(trimmed)) { + results = indexes.chainIdMap.get(trimmed) || [] + searchType = "chainId" + logger.debug({ + message: "Search matched chainId", + query: trimmed, + type: "chainId", + }) + } + // 3. Check if query exists as an internalId (case-insensitive) + else if (indexes.internalIdMap.has(trimmed.toLowerCase())) { + const chain = indexes.internalIdMap.get(trimmed.toLowerCase())! + results = [chain] + searchType = "internalId" + logger.debug({ + message: "Search matched internalId", + query: trimmed, + type: "internalId", + }) + } + // 4. Fall back to fuzzy search + else { + results = indexes.fuse.search(trimmed).map((r) => r.item) + searchType = "displayName" + logger.debug({ + message: "Search using fuzzy match", + query: trimmed, + type: "displayName", + resultCount: results.length, + }) + } + + // Apply family filter if specified + if (familyFilter) { + results = results.filter((c) => c.chainFamily === familyFilter) + logger.debug({ + message: "Applied family filter", + family: familyFilter, + filteredCount: results.length, + }) + } + + return { results, searchType } +} + +/** + * Clears the search cache. Call this if chain data changes. + */ +export function clearSearchCache(): void { + searchCache = null + logger.debug({ + message: "Search cache cleared", + }) +} diff --git a/src/pages/api/services/faucet-service.ts b/src/lib/ccip/services/faucet-service.ts similarity index 96% rename from src/pages/api/services/faucet-service.ts rename to src/lib/ccip/services/faucet-service.ts index 676a407008d..ef0ddab181d 100644 --- a/src/pages/api/services/faucet-service.ts +++ b/src/lib/ccip/services/faucet-service.ts @@ -1,7 +1,7 @@ import { logger } from "@lib/logging/index.js" -import { resolveFaucetChain } from "@api/ccip/faucet/chain-resolver.ts" -import { FaucetAdapterFactory } from "@api/ccip/faucet/adapters/index.ts" -import { ChallengeParams, ChallengeResponse, VerifyRequest, VerifyResponse } from "@api/ccip/types/faucet.ts" +import { resolveFaucetChain } from "~/lib/ccip/faucet/chain-resolver.ts" +import { FaucetAdapterFactory } from "~/lib/ccip/faucet/adapters/index.ts" +import { ChallengeParams, ChallengeResponse, VerifyRequest, VerifyResponse } from "~/lib/ccip/types/faucet.ts" export const prerender = false diff --git a/src/lib/ccip/services/lane-data.ts b/src/lib/ccip/services/lane-data.ts new file mode 100644 index 00000000000..610bbd96fff --- /dev/null +++ b/src/lib/ccip/services/lane-data.ts @@ -0,0 +1,836 @@ +import { + Environment, + LaneDetails, + LaneFilterType, + LaneConfigError, + LaneServiceResponse, + LaneDetailServiceResponse, + LaneDetailWithRateLimits, + SupportedTokensServiceResponse, + ChainInfo, + ChainInfoInternal, + OutputKeyType, + ChainType, + ChainFamily, + LaneInputKeyType, + TokenLaneData, +} from "~/lib/ccip/types/index.ts" +import { loadReferenceData, Version } from "@config/data/ccip/index.ts" +import type { LaneConfig, ChainConfig } from "@config/data/ccip/types.ts" +import { generateChainKey, normalizeVersion } from "~/lib/ccip/utils.ts" +import { logger } from "@lib/logging/index.js" +import { + getChainId, + getTitle, + getChainTypeAndFamily, + directoryToSupportedChain, +} from "../../../features/utils/index.ts" +import { getSelectorEntry } from "@config/data/ccip/selectors.ts" + +import pLimit from "p-limit" +import { fetchLaneRateLimits } from "~/lib/ccip/graphql/services/enrichment-data-service.ts" + +// Import rate limits mock data +import rateLimitsMainnet from "~/__mocks__/rate-limits-mainnet.json" with { type: "json" } +import rateLimitsTestnet from "~/__mocks__/rate-limits-testnet.json" with { type: "json" } + +const GRAPHQL_CONCURRENCY = 10 + +export const prerender = false + +/** + * Service class for handling CCIP lane data operations + * Provides functionality to validate and filter lane configurations + */ +export class LaneDataService { + private errors: LaneConfigError[] = [] + private readonly requestId: string + private skippedLanesCount = 0 + + /** + * Creates a new instance of LaneDataService + */ + constructor() { + this.requestId = crypto.randomUUID() + + logger.debug({ + message: "LaneDataService initialized", + requestId: this.requestId, + }) + } + + /** + * Retrieves and filters lane data based on environment and filters + * + * @param environment - Network environment (mainnet/testnet) + * @param filters - Filter parameters for lanes + * @param outputKey - Format to use for displaying lane keys + * @returns Filtered lane data with metadata + */ + async getFilteredLanes( + environment: Environment, + filters: LaneFilterType, + outputKey: OutputKeyType + ): Promise { + logger.debug({ + message: "Processing lane data", + requestId: this.requestId, + environment, + filters, + outputKey, + }) + + try { + // Load reference data + const { lanesReferenceData, chainsReferenceData } = loadReferenceData({ + environment, + version: Version.V1_2_0, + }) + + const result: Record = {} + this.errors = [] + this.skippedLanesCount = 0 + + // Process all lanes + for (const [sourceChainKey, destinations] of Object.entries(lanesReferenceData)) { + for (const [destChainKey, laneConfig] of Object.entries(destinations)) { + try { + // Get chain information + const sourceChain = this.resolveChainInfo(sourceChainKey, chainsReferenceData) + const destChain = this.resolveChainInfo(destChainKey, chainsReferenceData) + + if (!sourceChain || !destChain) { + this.addError(sourceChainKey, destChainKey, "Failed to resolve chain information", [ + "sourceChain", + "destinationChain", + ]) + continue + } + + // Apply filters + if (!this.passesFilters(sourceChain, destChain, filters)) { + this.skippedLanesCount++ + continue + } + + // Generate lane key + const laneKey = this.generateLaneKey(sourceChain, destChain, outputKey) + + // Build lane details + const laneDetails = this.buildLaneDetails(sourceChain, destChain, laneConfig) + + // Check for version mismatch + if (laneDetails.onRamp.version !== laneDetails.offRamp.version) { + this.addError( + sourceChainKey, + destChainKey, + `Version mismatch: onRamp v${laneDetails.onRamp.version} != offRamp v${laneDetails.offRamp.version}`, + ["version"] + ) + continue + } + + // Apply version filter if provided + if (filters.version) { + // Both onRamp and offRamp must match the specified version + if (laneDetails.onRamp.version !== filters.version || laneDetails.offRamp.version !== filters.version) { + this.skippedLanesCount++ + continue + } + } + + result[laneKey] = laneDetails + + logger.debug({ + message: "Lane processed successfully", + requestId: this.requestId, + laneKey, + sourceChain: sourceChainKey, + destinationChain: destChainKey, + }) + } catch (error) { + this.addError( + sourceChainKey, + destChainKey, + `Lane processing failed: ${error instanceof Error ? error.message : "Unknown error"}`, + ["laneConfig"] + ) + } + } + } + + const validLaneCount = Object.keys(result).length + const ignoredLaneCount = this.errors.length + + logger.info({ + message: "Lane data processing completed", + requestId: this.requestId, + validLaneCount, + ignoredLaneCount, + skippedLanesCount: this.skippedLanesCount, + }) + + return { + data: result, + errors: this.errors, + metadata: { + validLaneCount, + ignoredLaneCount, + }, + } + } catch (error) { + logger.error({ + message: "Failed to process lane data", + requestId: this.requestId, + error: error instanceof Error ? error.message : "Unknown error", + }) + + throw error + } + } + + /** + * Resolves chain information from chain key + */ + private resolveChainInfo(chainKey: string, chainsReferenceData: Record): ChainInfoInternal | null { + try { + const chainConfig = chainsReferenceData[chainKey] + + if (!chainConfig) { + return null + } + + // Try to get supported chain for additional info, but don't fail if not found + let chainId: string | number = chainKey // fallback to chainKey + let displayName: string = chainKey // fallback to chainKey + let chainType: ChainType = "evm" // default to evm + let chainFamily: ChainFamily = "evm" // default to evm + + try { + const supportedChain = directoryToSupportedChain(chainKey) + const resolvedChainId = getChainId(supportedChain) + const resolvedDisplayName = getTitle(supportedChain) + const { chainType: resolvedChainType, chainFamily: resolvedChainFamily } = getChainTypeAndFamily(supportedChain) + + if (resolvedChainId) chainId = resolvedChainId + if (resolvedDisplayName) displayName = resolvedDisplayName + chainType = resolvedChainType + chainFamily = resolvedChainFamily + } catch { + // If directoryToSupportedChain fails, continue with fallback values + // This allows processing of chains not yet in the mapping + } + + // Get selector from chain configuration + const configData = chainConfig as ChainConfig + const selector = configData.chainSelector + + if (!selector) { + return null + } + + // Resolve internalId from the selector YAML name (consistent with chains and tokens endpoints) + // Falls back to the RDD directory key if the selector entry is not found + const selectorEntry = getSelectorEntry(chainId, chainType) + const internalId = selectorEntry?.name ?? chainKey + + return { + chainId, + displayName, + selector, + internalId, + chainType, + chainFamily, + } + } catch (error) { + logger.warn({ + message: "Failed to resolve chain info", + requestId: this.requestId, + chainKey, + error: error instanceof Error ? error.message : "Unknown error", + }) + return null + } + } + + /** + * Checks if a lane passes the given filters + */ + private passesFilters( + sourceChain: ChainInfoInternal, + destChain: ChainInfoInternal, + filters: LaneFilterType + ): boolean { + // Check source chain filters + if (filters.sourceChainId && !this.matchesChainFilter(sourceChain, filters.sourceChainId, "chainId")) { + return false + } + if (filters.sourceSelector && !this.matchesChainFilter(sourceChain, filters.sourceSelector, "selector")) { + return false + } + if (filters.sourceInternalId && !this.matchesChainFilter(sourceChain, filters.sourceInternalId, "internalId")) { + return false + } + + // Check destination chain filters + if (filters.destinationChainId && !this.matchesChainFilter(destChain, filters.destinationChainId, "chainId")) { + return false + } + if (filters.destinationSelector && !this.matchesChainFilter(destChain, filters.destinationSelector, "selector")) { + return false + } + if ( + filters.destinationInternalId && + !this.matchesChainFilter(destChain, filters.destinationInternalId, "internalId") + ) { + return false + } + + return true + } + + /** + * Checks if a chain matches a specific filter value + */ + private matchesChainFilter( + chain: ChainInfoInternal, + filterValue: string, + filterType: "chainId" | "selector" | "internalId" + ): boolean { + const filterValues = filterValue.split(",").map((v) => v.trim()) + const propertyMap: Record = { + chainId: "chainId", + selector: "selector", + internalId: "internalId", + } + const propertyName = propertyMap[filterType] + const chainValue = chain[propertyName].toString() + + // For chain_id, also check generated chain key format + if (filterType === "chainId") { + const generatedKey = generateChainKey(chain.chainId, chain.chainType, "chainId") + return filterValues.includes(chainValue) || filterValues.includes(generatedKey) + } + + return filterValues.includes(chainValue) + } + + /** + * Generates a lane key based on source and destination chains + */ + private generateLaneKey( + sourceChain: ChainInfoInternal, + destChain: ChainInfoInternal, + outputKey: OutputKeyType + ): string { + const propertyMap: Record = { + chainId: "chainId", + selector: "selector", + internalId: "internalId", + } + const propertyName = propertyMap[outputKey] + + const sourceKey = + outputKey === "chainId" + ? generateChainKey(sourceChain.chainId, sourceChain.chainType, outputKey) + : sourceChain[propertyName].toString() + + const destKey = + outputKey === "chainId" + ? generateChainKey(destChain.chainId, destChain.chainType, outputKey) + : destChain[propertyName].toString() + + return `${sourceKey}_to_${destKey}` + } + + /** + * Builds lane details from chain info and lane config + */ + private buildLaneDetails( + sourceChain: ChainInfoInternal, + destChain: ChainInfoInternal, + laneConfig: LaneConfig + ): LaneDetails { + // Convert internal chain info to public interface (remove chainType and chainFamily) + const publicSourceChain: ChainInfo = { + chainId: sourceChain.chainId, + displayName: sourceChain.displayName, + selector: sourceChain.selector, + internalId: sourceChain.internalId, + } + + const publicDestChain: ChainInfo = { + chainId: destChain.chainId, + displayName: destChain.displayName, + selector: destChain.selector, + internalId: destChain.internalId, + } + + return { + sourceChain: publicSourceChain, + destinationChain: publicDestChain, + onRamp: { + address: laneConfig.onRamp.address, + version: normalizeVersion(laneConfig.onRamp.version), + enforceOutOfOrder: laneConfig.onRamp.enforceOutOfOrder, + }, + offRamp: { + address: laneConfig.offRamp.address, + version: normalizeVersion(laneConfig.offRamp.version), + }, + supportedTokens: this.extractSupportedTokens(laneConfig), + } + } + + /** + * Extracts supported token keys from lane configuration + */ + private extractSupportedTokens(laneConfig: LaneConfig): string[] { + if (!laneConfig.supportedTokens || !Array.isArray(laneConfig.supportedTokens)) { + return [] + } + + // lanes.json structure: "supportedTokens": ["LINK", "CCIP-BnM", ...] + return laneConfig.supportedTokens + } + + /** + * Adds an error to the error collection + */ + private addError(sourceChain: string, destinationChain: string, reason: string, missingFields: string[]): void { + this.errors.push({ + sourceChain, + destinationChain, + reason, + missingFields, + }) + + logger.warn({ + message: "Lane validation error", + requestId: this.requestId, + sourceChain, + destinationChain, + reason, + missingFields, + }) + } + + /** + * Gets the request ID for this service instance + */ + getRequestId(): string { + return this.requestId + } + + /** + * Retrieves details for a specific lane by source and destination chain identifiers + * + * @param environment - Network environment (mainnet/testnet) + * @param sourceIdentifier - Source chain identifier (chainId, selector, or internalId) + * @param destinationIdentifier - Destination chain identifier + * @param inputKeyType - Type of identifier used (chainId, selector, internalId) + * @returns Lane details or null if not found + */ + async getLaneDetails( + environment: Environment, + sourceIdentifier: string, + destinationIdentifier: string, + inputKeyType: LaneInputKeyType + ): Promise { + logger.info({ + message: "Getting lane details", + requestId: this.requestId, + environment, + sourceIdentifier, + destinationIdentifier, + inputKeyType, + }) + + try { + // Load reference data + const { lanesReferenceData, chainsReferenceData } = loadReferenceData({ + environment, + version: Version.V1_2_0, + }) + + // Resolve identifiers to internal IDs + const sourceInternalId = this.resolveToInternalId( + sourceIdentifier, + inputKeyType, + chainsReferenceData as Record + ) + const destinationInternalId = this.resolveToInternalId( + destinationIdentifier, + inputKeyType, + chainsReferenceData as Record + ) + + if (!sourceInternalId || !destinationInternalId) { + logger.warn({ + message: "Could not resolve chain identifiers", + requestId: this.requestId, + sourceIdentifier, + destinationIdentifier, + sourceInternalId, + destinationInternalId, + }) + return { data: null } + } + + // Get lane data + const sourceLanes = lanesReferenceData[sourceInternalId] as Record | undefined + if (!sourceLanes) { + return { data: null } + } + + const laneConfig = sourceLanes[destinationInternalId] + if (!laneConfig) { + return { data: null } + } + + // Resolve chain info + const sourceChain = this.resolveChainInfo(sourceInternalId, chainsReferenceData) + const destChain = this.resolveChainInfo(destinationInternalId, chainsReferenceData) + + if (!sourceChain || !destChain) { + return { data: null } + } + + // Build lane details with rate limits + const laneDetails = await this.buildLaneDetailsWithRateLimits( + sourceChain, + destChain, + laneConfig, + sourceInternalId, + destinationInternalId, + environment + ) + + logger.info({ + message: "Lane details with rate limits retrieved", + requestId: this.requestId, + sourceInternalId, + destinationInternalId, + tokenCount: Object.keys(laneDetails.supportedTokens).length, + }) + + return { data: laneDetails } + } catch (error) { + logger.error({ + message: "Failed to get lane details", + requestId: this.requestId, + error: error instanceof Error ? error.message : "Unknown error", + }) + return { data: null } + } + } + + /** + * Builds a mapping from selector names (e.g., "ethereum-mainnet") to chains.json keys (e.g., "mainnet") + * This enables the API to accept both naming conventions. + * + * @param chainsReferenceData - Chain configuration data + * @returns Map of selector name → chains.json key + */ + private buildSelectorNameToChainKeyMap(chainsReferenceData: Record): Map { + const map = new Map() + + for (const [chainKey] of Object.entries(chainsReferenceData)) { + try { + // Get the chain ID and type to look up the selector entry + const supportedChain = directoryToSupportedChain(chainKey) + const chainId = getChainId(supportedChain) + const { chainType } = getChainTypeAndFamily(supportedChain) + + if (chainId) { + const selectorEntry = getSelectorEntry(chainId, chainType) + if (selectorEntry?.name && selectorEntry.name !== chainKey) { + // Map selector name to chains.json key + map.set(selectorEntry.name, chainKey) + } + } + } catch { + // Skip chains that can't be resolved + } + } + + return map + } + + /** + * Resolves a chain identifier to its internal ID (chains.json key) + * + * Accepts both: + * - chains.json keys (e.g., "mainnet", "bsc-mainnet") + * - selector names (e.g., "ethereum-mainnet", "binance_smart_chain-mainnet") + * + * @param identifier - Chain identifier (chainId, selector, or internalId) + * @param inputKeyType - Type of identifier + * @param chainsReferenceData - Chain configuration data + * @returns Internal ID (chains.json key) or null if not found + */ + resolveToInternalId( + identifier: string, + inputKeyType: LaneInputKeyType, + chainsReferenceData: Record + ): string | null { + // If already an internal_id, check both chains.json key and selector name + if (inputKeyType === "internalId") { + // First, try direct lookup in chains.json keys + if (chainsReferenceData[identifier]) { + return identifier + } + + // If not found, check if identifier is a selector name and map to chains.json key + const selectorNameMap = this.buildSelectorNameToChainKeyMap(chainsReferenceData) + const chainKey = selectorNameMap.get(identifier) + if (chainKey && chainsReferenceData[chainKey]) { + return chainKey + } + + return null + } + + // Search through chains to find matching chain_id or selector + if (inputKeyType === "chainId") { + // Collect all matching chains (chainId can have collisions across chain families) + const matches: Array<{ internalId: string; chainType: ChainType; chainFamily: ChainFamily }> = [] + + for (const [internalId] of Object.entries(chainsReferenceData)) { + try { + const supportedChain = directoryToSupportedChain(internalId) + const chainId = getChainId(supportedChain) + if (chainId && chainId.toString() === identifier) { + const { chainType, chainFamily } = getChainTypeAndFamily(supportedChain) + matches.push({ internalId, chainType, chainFamily }) + } + } catch { + // Skip chains that can't be resolved + } + } + + if (matches.length === 0) { + return null + } + + // Prioritize EVM chains since by-chain-id is typically used for EVM chain IDs + const evmMatch = matches.find((m) => m.chainFamily === "evm") + if (evmMatch) { + return evmMatch.internalId + } + + // Fall back to first match if no EVM chain found + return matches[0].internalId + } + + // For selector, there should be no collisions + for (const [internalId, chainConfig] of Object.entries(chainsReferenceData)) { + if (inputKeyType === "selector") { + if (chainConfig.chainSelector === identifier) { + return internalId + } + } + } + + return null + } + + /** + * Builds lane details with rate limits included in supportedTokens + */ + private async buildLaneDetailsWithRateLimits( + sourceChain: ChainInfoInternal, + destChain: ChainInfoInternal, + laneConfig: LaneConfig, + sourceInternalId: string, + destinationInternalId: string, + environment: Environment + ): Promise { + // Convert internal chain info to public interface + const publicSourceChain: ChainInfo = { + chainId: sourceChain.chainId, + displayName: sourceChain.displayName, + selector: sourceChain.selector, + internalId: sourceChain.internalId, + } + + const publicDestChain: ChainInfo = { + chainId: destChain.chainId, + displayName: destChain.displayName, + selector: destChain.selector, + internalId: destChain.internalId, + } + + // Extract supported token symbols + const tokenSymbols = this.extractSupportedTokens(laneConfig) + + // Fetch rate limits per token concurrently + const limit = pLimit(GRAPHQL_CONCURRENCY) + const supportedTokensWithRateLimits: Record = {} + + const tokenResults = await Promise.allSettled( + tokenSymbols.map((tokenSymbol) => + limit(async () => ({ + tokenSymbol, + rateLimits: await fetchLaneRateLimits(environment, tokenSymbol, sourceInternalId, destinationInternalId), + })) + ) + ) + + for (const settled of tokenResults) { + if (settled.status !== "fulfilled") continue + const { tokenSymbol, rateLimits: laneRateLimits } = settled.value + + if (laneRateLimits) { + supportedTokensWithRateLimits[tokenSymbol] = { + rateLimits: { standard: laneRateLimits.standard, custom: laneRateLimits.custom }, + fees: null, + } + } else { + logger.warn({ + message: "Token in lanes.json supportedTokens has no on-chain lane data — filtering out", + requestId: this.requestId, + tokenSymbol, + sourceInternalId, + destinationInternalId, + }) + } + } + + return { + sourceChain: publicSourceChain, + destinationChain: publicDestChain, + onRamp: { + address: laneConfig.onRamp.address, + version: normalizeVersion(laneConfig.onRamp.version), + enforceOutOfOrder: laneConfig.onRamp.enforceOutOfOrder, + }, + offRamp: { + address: laneConfig.offRamp.address, + version: normalizeVersion(laneConfig.offRamp.version), + }, + supportedTokens: supportedTokensWithRateLimits, + } + } + + /** + * Retrieves only supported tokens with rate limits for a specific lane + * + * @param environment - Network environment (mainnet/testnet) + * @param sourceIdentifier - Source chain identifier (chainId, selector, or internalId) + * @param destinationIdentifier - Destination chain identifier + * @param inputKeyType - Type of identifier used (chainId, selector, internalId) + * @returns Supported tokens with rate limits or null if lane not found + */ + async getSupportedTokensWithRateLimits( + environment: Environment, + sourceIdentifier: string, + destinationIdentifier: string, + inputKeyType: LaneInputKeyType + ): Promise { + logger.info({ + message: "Getting supported tokens with rate limits", + requestId: this.requestId, + environment, + sourceIdentifier, + destinationIdentifier, + inputKeyType, + }) + + try { + // Load reference data + const { lanesReferenceData, chainsReferenceData } = loadReferenceData({ + environment, + version: Version.V1_2_0, + }) + + // Resolve identifiers to internal IDs + const sourceInternalId = this.resolveToInternalId( + sourceIdentifier, + inputKeyType, + chainsReferenceData as Record + ) + const destinationInternalId = this.resolveToInternalId( + destinationIdentifier, + inputKeyType, + chainsReferenceData as Record + ) + + if (!sourceInternalId || !destinationInternalId) { + logger.warn({ + message: "Could not resolve chain identifiers", + requestId: this.requestId, + sourceIdentifier, + destinationIdentifier, + }) + return { data: null, tokenCount: 0 } + } + + // Get lane data + const sourceLanes = lanesReferenceData[sourceInternalId] as Record | undefined + if (!sourceLanes) { + return { data: null, tokenCount: 0 } + } + + const laneConfig = sourceLanes[destinationInternalId] + if (!laneConfig) { + return { data: null, tokenCount: 0 } + } + + // Extract supported token symbols + const tokenSymbols = this.extractSupportedTokens(laneConfig) + + // Fetch rate limits per token concurrently + const limit = pLimit(GRAPHQL_CONCURRENCY) + const supportedTokensWithRateLimits: Record = {} + + const tokenResults = await Promise.allSettled( + tokenSymbols.map((tokenSymbol) => + limit(async () => ({ + tokenSymbol, + rateLimits: await fetchLaneRateLimits(environment, tokenSymbol, sourceInternalId, destinationInternalId), + })) + ) + ) + + for (const settled of tokenResults) { + if (settled.status !== "fulfilled") continue + const { tokenSymbol, rateLimits: laneRateLimits } = settled.value + + if (laneRateLimits) { + supportedTokensWithRateLimits[tokenSymbol] = { + rateLimits: { standard: laneRateLimits.standard, custom: laneRateLimits.custom }, + fees: null, + } + } else { + logger.warn({ + message: "Token in lanes.json supportedTokens has no on-chain lane data — filtering out", + requestId: this.requestId, + tokenSymbol, + sourceInternalId, + destinationInternalId, + }) + } + } + + const tokenCount = Object.keys(supportedTokensWithRateLimits).length + + logger.info({ + message: "Supported tokens with rate limits retrieved", + requestId: this.requestId, + sourceInternalId, + destinationInternalId, + tokenCount, + }) + + return { data: supportedTokensWithRateLimits, tokenCount } + } catch (error) { + logger.error({ + message: "Failed to get supported tokens with rate limits", + requestId: this.requestId, + error: error instanceof Error ? error.message : "Unknown error", + }) + return { data: null, tokenCount: 0 } + } + } +} diff --git a/src/lib/ccip/services/rate-limits-data.ts b/src/lib/ccip/services/rate-limits-data.ts new file mode 100644 index 00000000000..217a1c44670 --- /dev/null +++ b/src/lib/ccip/services/rate-limits-data.ts @@ -0,0 +1,320 @@ +import { + Environment, + RateLimitsFilterType, + RateLimitsServiceResponse, + TokenLaneData, + RawTokenRateLimits, + RateLimiterConfig, + RateLimiterEntry, + RateLimiterDirections, + isRateLimiterUnavailable, + LaneRateLimitsFilterType, + LaneInputKeyType, +} from "~/lib/ccip/types/index.ts" +import { LaneDataService } from "./lane-data.ts" +import { loadReferenceData, Version } from "@config/data/ccip/index.ts" +import type { ChainConfig } from "@config/data/ccip/types.ts" +import { logger } from "@lib/logging/index.js" + +import { fetchLaneRateLimits } from "~/lib/ccip/graphql/services/enrichment-data-service.ts" + +export const prerender = false + +/** + * Service class for handling CCIP rate limits data operations + * Provides functionality to filter and retrieve rate limiter configurations + */ +export class RateLimitsDataService { + private readonly requestId: string + + /** + * Creates a new instance of RateLimitsDataService + */ + constructor() { + this.requestId = crypto.randomUUID() + + logger.debug({ + message: "RateLimitsDataService initialized", + requestId: this.requestId, + }) + } + + /** + * Retrieves rate limits data for a specific lane, optionally filtered by tokens, direction, and rate type + * + * @param environment - Network environment (mainnet/testnet) + * @param filters - Filter parameters including source/destination chains, tokens, direction, and rate type + * @returns Filtered rate limits data with metadata + */ + async getFilteredRateLimits( + environment: Environment, + filters: RateLimitsFilterType + ): Promise { + logger.debug({ + message: "Processing rate limits request", + requestId: this.requestId, + environment, + filters, + }) + + try { + // Load reference data to resolve chain identifiers + const { chainsReferenceData } = loadReferenceData({ + environment, + version: Version.V1_2_0, + }) + + // Resolve chain identifiers to chains.json keys (handles both short names and selector names) + const laneDataService = new LaneDataService() + const resolvedSourceId = + laneDataService.resolveToInternalId( + filters.sourceInternalId, + "internalId", + chainsReferenceData as Record + ) || filters.sourceInternalId + const resolvedDestId = + laneDataService.resolveToInternalId( + filters.destinationInternalId, + "internalId", + chainsReferenceData as Record + ) || filters.destinationInternalId + + // Create resolved filters + const resolvedFilters: RateLimitsFilterType = { + ...filters, + sourceInternalId: resolvedSourceId, + destinationInternalId: resolvedDestId, + } + + // Get token list: from filter or from all tokens in reference data + const { tokensReferenceData } = loadReferenceData({ environment, version: Version.V1_2_0 }) + const tokenFilter = resolvedFilters.tokens + ? resolvedFilters.tokens + .split(",") + .map((t: string) => t.trim()) + .filter((t: string) => t.length > 0) + : Object.keys(tokensReferenceData) + + // Fetch rate limits per token from GraphQL + const result: Record = {} + for (const tokenSymbol of tokenFilter) { + const laneRateLimits = await fetchLaneRateLimits( + environment, + tokenSymbol, + resolvedFilters.sourceInternalId, + resolvedFilters.destinationInternalId + ) + if (laneRateLimits) { + const filteredLimits = this.applyFilters(laneRateLimits, resolvedFilters.direction, resolvedFilters.rateType) + if (filteredLimits) { + result[tokenSymbol] = filteredLimits + } + } + } + + const tokenCount = Object.keys(result).length + + logger.info({ + message: "Rate limits data retrieved successfully", + requestId: this.requestId, + tokenCount, + sourceChain: filters.sourceInternalId, + destinationChain: filters.destinationInternalId, + }) + + return { + data: result, + metadata: { + tokenCount, + }, + } + } catch (error) { + logger.error({ + message: "Failed to process rate limits data", + requestId: this.requestId, + error: error instanceof Error ? error.message : "Unknown error", + }) + + throw error + } + } + + /** + * Applies direction and rate type filters to rate limits + * + * @param rateLimits - Original rate limits with standard and custom entries + * @param direction - Optional direction filter ("in" or "out") + * @param rateType - Optional rate type filter ("standard" or "custom") + * @returns Filtered rate limits or null if no data matches + */ + private applyFilters( + rateLimits: RawTokenRateLimits, + direction?: "in" | "out", + rateType?: "standard" | "custom" + ): TokenLaneData | null { + const filteredStandard = this.applyDirectionFilter(rateLimits.standard, direction) + const filteredCustom = this.applyDirectionFilter(rateLimits.custom, direction) + const fees = rateLimits.fees ?? null + + if (rateType === "standard") { + if (!filteredStandard) { + return null + } + return { + rateLimits: { standard: filteredStandard, custom: null }, + fees, + } + } + + if (rateType === "custom") { + if (!filteredCustom) { + return null + } + return { + rateLimits: { standard: null, custom: filteredCustom }, + fees, + } + } + + if (!filteredStandard && !filteredCustom) { + return null + } + + return { + rateLimits: { + standard: filteredStandard ?? null, + custom: filteredCustom ?? null, + }, + fees, + } + } + + /** + * Applies direction filter to a rate limiter entry + * + * @param entry - Rate limiter entry (directions or unavailable) + * @param direction - Optional direction filter ("in" or "out") + * @returns Filtered entry or null if no data matches + */ + private applyDirectionFilter(entry: RateLimiterEntry, direction?: "in" | "out"): RateLimiterEntry | null { + // If entry is unavailable, return it as-is + if (isRateLimiterUnavailable(entry)) { + return entry + } + + // If no direction filter, return the full entry + if (!direction) { + return entry + } + + // Filter to specific direction + const directionsEntry = entry as RateLimiterDirections + const filteredConfig = directionsEntry[direction] + if (!filteredConfig) { + return null + } + + // Return only the requested direction + return { + [direction]: filteredConfig, + } as RateLimiterDirections + } + + /** + * Validates that a rate limiter config exists and has valid structure + */ + private isValidRateLimiterConfig(config: unknown): config is RateLimiterConfig { + if (!config || typeof config !== "object") { + return false + } + + const c = config as Record + return typeof c.capacity === "string" && typeof c.isEnabled === "boolean" && typeof c.rate === "string" + } + + /** + * Gets the request ID for this service instance + */ + getRequestId(): string { + return this.requestId + } + + /** + * Retrieves rate limits for a specific lane using path parameters + * + * @param environment - Network environment (mainnet/testnet) + * @param sourceIdentifier - Source chain identifier + * @param destinationIdentifier - Destination chain identifier + * @param inputKeyType - Type of chain identifier (chainId, selector, internalId) + * @param filters - Optional filters for tokens, direction, rate type + * @returns Rate limits data with metadata + */ + async getLaneRateLimits( + environment: Environment, + sourceIdentifier: string, + destinationIdentifier: string, + inputKeyType: LaneInputKeyType, + filters: LaneRateLimitsFilterType = {} + ): Promise { + logger.info({ + message: "Processing lane rate limits request", + requestId: this.requestId, + environment, + sourceIdentifier, + destinationIdentifier, + inputKeyType, + filters, + }) + + try { + // Resolve chain identifiers to internal IDs + const { chainsReferenceData } = loadReferenceData({ + environment, + version: Version.V1_2_0, + }) + + const laneDataService = new LaneDataService() + const sourceInternalId = laneDataService.resolveToInternalId( + sourceIdentifier, + inputKeyType, + chainsReferenceData as Record + ) + const destinationInternalId = laneDataService.resolveToInternalId( + destinationIdentifier, + inputKeyType, + chainsReferenceData as Record + ) + + if (!sourceInternalId || !destinationInternalId) { + logger.warn({ + message: "Could not resolve chain identifiers for rate limits", + requestId: this.requestId, + sourceIdentifier, + destinationIdentifier, + }) + return { + data: {}, + metadata: { tokenCount: 0 }, + } + } + + // Use existing filter-based method with resolved internal IDs + const fullFilters: RateLimitsFilterType = { + sourceInternalId, + destinationInternalId, + tokens: filters.tokens, + direction: filters.direction, + rateType: filters.rateType, + } + + return this.getFilteredRateLimits(environment, fullFilters) + } catch (error) { + logger.error({ + message: "Failed to get lane rate limits", + requestId: this.requestId, + error: error instanceof Error ? error.message : "Unknown error", + }) + throw error + } + } +} diff --git a/src/lib/ccip/services/realtime-data-instance.ts b/src/lib/ccip/services/realtime-data-instance.ts new file mode 100644 index 00000000000..b1ac8df61bd --- /dev/null +++ b/src/lib/ccip/services/realtime-data-instance.ts @@ -0,0 +1,7 @@ +import { RealtimeDataService } from "./realtime-data.ts" + +/** + * Singleton instance of RealtimeDataService + * Use this shared instance across all components to avoid creating multiple instances + */ +export const realtimeDataService = new RealtimeDataService() diff --git a/src/lib/ccip/services/realtime-data.ts b/src/lib/ccip/services/realtime-data.ts new file mode 100644 index 00000000000..a9a864ce09f --- /dev/null +++ b/src/lib/ccip/services/realtime-data.ts @@ -0,0 +1,260 @@ +import { Environment } from "~/lib/ccip/types/index.ts" +import type { + TokenRateLimits, + TokenLaneData, + RateLimiterEntry, + RateLimiterConfig, + CustomFinalityConfig, + OutputKeyType, +} from "~/lib/ccip/types/index.ts" + +export const prerender = false + +/** + * Base URL for CCIP realtime API + * For client-side calls, use relative URLs to hit the local API endpoints + */ +const getApiBaseUrl = () => { + // In browser context, use relative URLs + if (typeof window !== "undefined") { + return "" + } + // In server context, use environment variable or default + return process.env.CCIP_REALTIME_API_BASE_URL || "https://api.ccip.chainlink.com" +} + +/** + * Response structure for lane supported tokens endpoint + */ +export interface LaneSupportedTokensResponse { + metadata: { + environment: Environment + timestamp: string + requestId: string + sourceChain: string + destinationChain: string + tokenCount: number + } + data: Record +} + +/** + * Response structure for token finality endpoint + */ +export interface TokenFinalityResponse { + metadata: { + environment: Environment + timestamp: string + requestId: string + tokenSymbol: string + chainCount: number + } + data: Record +} + +/** + * Service class for handling CCIP realtime data operations + * Provides functionality to fetch live data from the CCIP API + */ +export class RealtimeDataService { + private readonly requestId: string + + /** + * Creates a new instance of RealtimeDataService + */ + constructor() { + // Generate UUID - handle both browser and server environments + if (typeof crypto !== "undefined" && crypto.randomUUID) { + this.requestId = crypto.randomUUID() + } else { + this.requestId = `${Date.now()}-${Math.random().toString(36).substring(2, 11)}` + } + } + + /** + * Fetches supported tokens with rate limits for a specific lane + * + * @param sourceInternalId - Source chain internal ID + * @param destinationInternalId - Destination chain internal ID + * @param environment - Network environment (mainnet/testnet) + * @returns Supported tokens with rate limits + */ + async getLaneSupportedTokens( + sourceInternalId: string, + destinationInternalId: string, + environment: Environment + ): Promise { + try { + const baseUrl = getApiBaseUrl() + const url = `${baseUrl}/api/ccip/v1/lanes/by-internal-id/${sourceInternalId}/${destinationInternalId}/supported-tokens?environment=${environment}` + + const response = await fetch(url) + + if (!response.ok) { + return null + } + + const data = await response.json() + return data + } catch (error) { + console.error("Error fetching lane supported tokens:", error) + return null + } + } + + /** + * Fetches token finality details across all chains + * + * @param tokenCanonicalSymbol - Token canonical symbol (e.g., "BETS", "LINK") + * @param environment - Network environment (mainnet/testnet) + * @param outputKey - Format to use for displaying chain keys (optional) + * @returns Token finality data for all chains + */ + async getTokenFinality( + tokenCanonicalSymbol: string, + environment: Environment, + outputKey?: OutputKeyType + ): Promise { + try { + const baseUrl = getApiBaseUrl() + let url = `${baseUrl}/api/ccip/v1/tokens/${tokenCanonicalSymbol}/finality?environment=${environment}` + + if (outputKey) { + url += `&output_key=${outputKey}` + } + + const response = await fetch(url) + + if (!response.ok) { + console.error("Failed to fetch token finality:", response.status) + return null + } + + const data = await response.json() + return data + } catch (error) { + console.error("Error fetching token finality:", error) + return null + } + } + + /** + * Checks if rate limiter data is unavailable (null) + * + * @param entry - Rate limiter entry to check + * @returns True if unavailable (null) + */ + isRateLimiterUnavailable(entry: RateLimiterEntry): entry is null { + return entry === null + } + + /** + * Checks if rate limiter is enabled + * + * @param config - Rate limiter configuration + * @returns True if enabled + */ + isRateLimiterEnabled(config: RateLimiterConfig): boolean { + return config.isEnabled + } + + /** + * Gets the request ID for this service instance + */ + getRequestId(): string { + return this.requestId + } + + /** + * Extracts FTF (custom) rate limit data for a specific token and direction + * + * @param tokenRateLimits - Token rate limits containing standard and custom entries + * @param direction - Direction ("in" for inbound, "out" for outbound) + * @returns FTF rate limiter config or null if unavailable + */ + getFTFRateLimit(tokenRateLimits: TokenRateLimits, direction: "in" | "out"): RateLimiterConfig | null { + if (!tokenRateLimits.custom || this.isRateLimiterUnavailable(tokenRateLimits.custom)) { + return null + } + + const customEntry = tokenRateLimits.custom + return customEntry[direction] || null + } + + /** + * Gets FTF capacity for a specific token and direction + * + * @param tokenRateLimits - Token rate limits containing standard and custom entries + * @param direction - Direction ("in" for inbound, "out" for outbound) + * @returns FTF capacity value or null if unavailable + */ + getFTFCapacity(tokenRateLimits: TokenRateLimits, direction: "in" | "out"): string | null { + const ftfLimit = this.getFTFRateLimit(tokenRateLimits, direction) + return ftfLimit?.capacity || null + } + + /** + * Gets FTF refill rate for a specific token and direction + * + * @param tokenRateLimits - Token rate limits containing standard and custom entries + * @param direction - Direction ("in" for inbound, "out" for outbound) + * @returns FTF refill rate value or null if unavailable + */ + getFTFRefillRate(tokenRateLimits: TokenRateLimits, direction: "in" | "out"): string | null { + const ftfLimit = this.getFTFRateLimit(tokenRateLimits, direction) + return ftfLimit?.rate || null + } + + /** + * Checks if FTF rate limiting is enabled for a specific token and direction + * + * @param tokenRateLimits - Token rate limits containing standard and custom entries + * @param direction - Direction ("in" for inbound, "out" for outbound) + * @returns True if FTF is enabled, false otherwise + */ + isFTFEnabled(tokenRateLimits: TokenRateLimits, direction: "in" | "out"): boolean { + const ftfLimit = this.getFTFRateLimit(tokenRateLimits, direction) + return ftfLimit?.isEnabled || false + } + + /** + * Gets both standard and FTF rate limits for a specific token and direction + * + * @param tokenRateLimits - Token rate limits containing standard and custom entries (can be null/undefined) + * @param direction - Direction ("in" for inbound, "out" for outbound) + * @returns Object containing both standard and FTF rate limits + */ + getAllRateLimitsForDirection( + tokenRateLimits: TokenRateLimits | null | undefined, + direction: "in" | "out" + ): { + standard: RateLimiterConfig | null + ftf: RateLimiterConfig | null + } { + if (!tokenRateLimits) { + return { standard: null, ftf: null } + } + + const standardLimit = + tokenRateLimits.standard && !this.isRateLimiterUnavailable(tokenRateLimits.standard) + ? tokenRateLimits.standard[direction] || null + : null + + const ftfLimit = this.getFTFRateLimit(tokenRateLimits, direction) + + return { + standard: standardLimit, + ftf: ftfLimit, + } + } + + /** + * Checks if a token has FTF rate limiting available + * + * @param tokenRateLimits - Token rate limits to check + * @returns True if FTF data is available (not null/unavailable) + */ + hasFTFRateLimits(tokenRateLimits: TokenRateLimits): boolean { + return tokenRateLimits.custom !== null && !this.isRateLimiterUnavailable(tokenRateLimits.custom) + } +} diff --git a/src/pages/api/services/token-data.ts b/src/lib/ccip/services/token-data.ts similarity index 53% rename from src/pages/api/services/token-data.ts rename to src/lib/ccip/services/token-data.ts index d72dca0b9eb..3a5bfa305f0 100644 --- a/src/pages/api/services/token-data.ts +++ b/src/lib/ccip/services/token-data.ts @@ -6,15 +6,31 @@ import { TokenChainData, TokenDataResponse, TokenServiceResponse, -} from "../ccip/types/index.ts" + TokenDetailChainData, + TokenDetailDataResponse, + TokenDetailServiceResponse, + CCVConfigData, + CCVConfig, + CustomFinalityConfig, +} from "~/lib/ccip/types/index.ts" import { Version } from "@config/data/ccip/types.ts" import { SupportedChain } from "@config/index.ts" import { getAllSupportedTokens, getAllTokenLanes, getTokenData } from "@config/data/ccip/data.ts" -import { resolveChainOrThrow, generateChainKey } from "@api/ccip/utils.ts" +import { resolveChainOrThrow, generateChainKey } from "~/lib/ccip/utils.ts" +import { getEffectivePoolVersion, shouldEnableCCVFeatures } from "~/lib/ccip/utils/pool-version.ts" import { logger } from "@lib/logging/index.js" import { getChainId, getChainTypeAndFamily, getTitle } from "../../../features/utils/index.ts" import { getSelectorEntry } from "@config/data/ccip/selectors.ts" +import { + fetchPoolDataForTokenAllChains, + fetchAllPoolData, + fetchMinBlockConfirmations, + stubCCVConfigData, + type AllPoolData, + type PoolData, +} from "~/lib/ccip/graphql/services/enrichment-data-service.ts" + export const prerender = false /** @@ -49,7 +65,8 @@ export class TokenDataService { private async processTokenData( environment: Environment, tokenCanonicalId: string, - outputKey: OutputKeyType + outputKey: OutputKeyType, + prefetchedPoolData?: AllPoolData ): Promise<{ [chainKey: string]: TokenChainData } | null> { logger.debug({ message: "Processing token data", @@ -90,6 +107,11 @@ export class TokenDataService { return null } + // Use pre-fetched pool data if available, otherwise fetch for this token + const tokenPoolData = prefetchedPoolData + ? prefetchedPoolData[tokenCanonicalId] || {} + : await fetchPoolDataForTokenAllChains(environment, tokenCanonicalId) + // Create the new structure with chains as keys const result: { [chainKey: string]: TokenChainData } = {} @@ -99,11 +121,12 @@ export class TokenDataService { Object.entries(tokenData).forEach(([chainId, chainData]) => { try { - // Only process chains where poolAddress exists - if (!chainData.poolAddress) { + // Only process chains where pool data exists in GraphQL + const poolInfo = tokenPoolData[chainId] + if (!poolInfo?.address) { this.skippedTokensCount++ logger.warn({ - message: "Chain missing poolAddress - skipping only this chain", + message: "Chain missing pool data from GraphQL - skipping only this chain", requestId: this.requestId, tokenCanonicalId, chainId, @@ -176,8 +199,12 @@ export class TokenDataService { decimals: chainData.decimals, destinations, name: chainData.name || "", - poolAddress: chainData.poolAddress, - poolType: chainData.poolType, + pool: { + address: poolInfo.address, + rawType: poolInfo.rawType, + type: poolInfo.type, + version: poolInfo.version, + }, symbol: chainData.symbol, tokenAddress: chainData.tokenAddress, }, @@ -301,9 +328,12 @@ export class TokenDataService { let processedTokensCount = 0 let validTokensCount = 0 + // Pre-fetch all pool data in one batch query + const allPoolData = await fetchAllPoolData(environment) + // Process each token for (const tokenCanonicalId of tokenCanonicalIds) { - const tokenDetails = await this.processTokenData(environment, tokenCanonicalId, outputKey) + const tokenDetails = await this.processTokenData(environment, tokenCanonicalId, outputKey, allPoolData) if (tokenDetails) { tokens[tokenCanonicalId] = tokenDetails validTokensCount++ @@ -361,4 +391,252 @@ export class TokenDataService { metadata, } } + + /** + * Retrieves detailed token information for a specific token, including custom finality data + * + * @param environment - Network environment (mainnet/testnet) + * @param tokenCanonicalSymbol - Canonical symbol for the token + * @param outputKey - Format to use for displaying chain information + * @returns Token details with custom finality information for each chain + */ + public async getTokenWithFinality( + environment: Environment, + tokenCanonicalSymbol: string, + outputKey: OutputKeyType = "chainId" + ): Promise { + logger.info({ + message: "Getting token with finality data", + requestId: this.requestId, + environment, + tokenCanonicalSymbol, + outputKey, + }) + + // Get base token data using existing method + const tokenData = await this.processTokenData(environment, tokenCanonicalSymbol, outputKey) + + if (!tokenData) { + logger.warn({ + message: "Token not found", + requestId: this.requestId, + tokenCanonicalSymbol, + }) + return null + } + + // Load CCV config data for threshold amounts (stubbed — TODO) + const ccvConfigData = this.loadCCVConfigData() + + // Get raw token data with directory keys for reverse lookup + const rawTokenData = this.getRawTokenData(environment, tokenCanonicalSymbol) + + // Get token's CCV config by directory key + const tokenCCVConfig = ccvConfigData[tokenCanonicalSymbol] + + // Merge token data with custom finality and CCV config information + const result: TokenDetailDataResponse = {} + + for (const [chainKey, chainData] of Object.entries(tokenData)) { + // Get directory key for version and config lookups + const directoryKey = rawTokenData ? this.findDirectoryKeyByChainId(rawTokenData, chainData.chainId) : null + + // Check if this pool supports CCV features (v2.0+ only) + const actualPoolVersion = chainData.pool?.version || "" + const isCCVEnabled = directoryKey + ? await shouldEnableCCVFeatures(environment, tokenCanonicalSymbol, directoryKey, actualPoolVersion) + : false + + // Both customFinality and ccvConfig are v2.0+ pool features only + let minBlockConfirmation: number | null = null + let hasCustomFinality: boolean | null = null + let ccvConfig: CCVConfig | null = null + let customFinalityDataAvailable = false + + if (isCCVEnabled && directoryKey) { + // Fetch minBlockConfirmation from GraphQL + minBlockConfirmation = await fetchMinBlockConfirmations(environment, tokenCanonicalSymbol, directoryKey) + customFinalityDataAvailable = true + + // Derive hasCustomFinality from minBlockConfirmation + if (minBlockConfirmation === null) { + hasCustomFinality = null + } else if (minBlockConfirmation > 0) { + hasCustomFinality = true + } else { + hasCustomFinality = false + } + + // Look up CCV config using directory key + if (tokenCCVConfig && directoryKey && tokenCCVConfig[directoryKey]) { + ccvConfig = { + thresholdAmount: tokenCCVConfig[directoryKey].thresholdAmount, + } + } else { + ccvConfig = { + thresholdAmount: "0", + } + } + } + + // Build customFinality response: + // - v1 pool (isCCVEnabled=false): null (feature not supported) + // - v2 pool with data: { hasCustomFinality, minBlockConfirmation } + // - v2 pool without data: { hasCustomFinality: null, minBlockConfirmation: null } (downstream error) + let customFinality: CustomFinalityConfig | null = null + if (isCCVEnabled) { + if (customFinalityDataAvailable) { + customFinality = { hasCustomFinality, minBlockConfirmation } + } else { + customFinality = { hasCustomFinality: null, minBlockConfirmation: null } + } + } + + const detailChainData: TokenDetailChainData = { + ...chainData, + customFinality, + ccvConfig, + pool: chainData.pool + ? { + address: chainData.pool.address, + rawType: chainData.pool.rawType, + type: chainData.pool.type, + version: directoryKey + ? await getEffectivePoolVersion( + environment, + tokenCanonicalSymbol, + directoryKey, + chainData.pool.version || "" + ) + : chainData.pool.version || "", + advancedPoolHooks: chainData.pool.advancedPoolHooks || null, + supportsV2Features: isCCVEnabled, + } + : null, + } + + result[chainKey] = detailChainData + } + + logger.info({ + message: "Token with finality data retrieved", + requestId: this.requestId, + tokenCanonicalSymbol, + chainCount: Object.keys(result).length, + }) + + return { + data: result, + metadata: { + chainCount: Object.keys(result).length, + }, + } + } + + // eslint-disable-next-line class-methods-use-this + private loadCCVConfigData(): CCVConfigData { + return stubCCVConfigData() + } + + /** + * Gets raw token data with directory keys (chains.json keys) as keys + * Used for looking up data that uses directory keys (like CCV config) + * Only includes EVM chains to avoid chain ID collisions with non-EVM chains + */ + private getRawTokenData( + environment: Environment, + tokenCanonicalSymbol: string + ): Record | null { + try { + const tokenData = getTokenData({ + environment, + version: Version.V1_2_0, + tokenId: tokenCanonicalSymbol, + }) + + if (!tokenData || Object.keys(tokenData).length === 0) { + return null + } + + const result: Record = {} + + for (const [directoryKey] of Object.entries(tokenData)) { + try { + const supportedChain = resolveChainOrThrow(directoryKey) + const { chainType } = getChainTypeAndFamily(supportedChain) + + if (chainType !== "evm") { + continue + } + + const numericChainId = getChainId(supportedChain) + if (numericChainId) { + result[directoryKey] = { chainId: numericChainId } + } + } catch { + // Skip chains that can't be resolved + } + } + + return result + } catch { + return null + } + } + + /** + * Finds the directory key for a given numeric chainId + */ + private findDirectoryKeyByChainId( + rawTokenData: Record, + targetChainId: number | string + ): string | null { + const targetNumeric = typeof targetChainId === "string" ? parseInt(targetChainId, 10) : targetChainId + + for (const [directoryKey, data] of Object.entries(rawTokenData)) { + const dataNumeric = typeof data.chainId === "string" ? parseInt(data.chainId, 10) : data.chainId + if (dataNumeric === targetNumeric) { + return directoryKey + } + } + + return null + } + + /** + * Gets the internal ID for a chain based on chainId/chainName + * This is needed to look up rate limits data which uses internal IDs as keys + */ + private getInternalIdFromChainKey( + chainId: number | string, + _chainName: string, + _outputKey: OutputKeyType + ): string | null { + try { + // If outputKey is internalId, the chainName might already be the internal ID + // We need to look up the selector entry by chainId + const numericChainId = typeof chainId === "string" ? parseInt(chainId, 10) : chainId + + if (isNaN(numericChainId)) { + // chainId is not numeric, might be a non-EVM chain identifier + // Try to find by name pattern + return null + } + + // Get selector entry which has the internal name + const selectorEntry = getSelectorEntry(numericChainId, "evm") + if (selectorEntry) { + return selectorEntry.name + } + + return null + } catch { + logger.debug({ + message: "Could not resolve internal ID for chain", + requestId: this.requestId, + chainId, + }) + return null + } + } } diff --git a/src/lib/ccip/services/token-directory.ts b/src/lib/ccip/services/token-directory.ts new file mode 100644 index 00000000000..a96ef1b6f8b --- /dev/null +++ b/src/lib/ccip/services/token-directory.ts @@ -0,0 +1,631 @@ +import { + Environment, + TokenDirectoryData, + TokenDirectoryLane, + TokenDirectoryServiceResponse, + CCVConfigData, + CCVChainConfig, + LaneVerifiers, + TokenRateLimits, + NamingConvention, + OutputKeyType, + CustomFinalityConfig, +} from "~/lib/ccip/types/index.ts" +import { loadReferenceData, Version } from "@config/data/ccip/index.ts" +import type { LaneConfig, ChainConfig } from "@config/data/ccip/types.ts" +import { logger } from "@lib/logging/index.js" +import { getTokenData } from "@config/data/ccip/data.ts" +import { getChainId, getChainTypeAndFamily, directoryToSupportedChain } from "../../../features/utils/index.ts" +import { getSelectorEntry } from "@config/data/ccip/selectors.ts" +import { ChainIdentifierService } from "./chain-identifier.ts" +import { getEffectivePoolVersion, shouldEnableCCVFeatures } from "~/lib/ccip/utils/pool-version.ts" + +import pLimit from "p-limit" +import { + fetchPoolDataForToken, + fetchLaneRateLimits, + fetchMinBlockConfirmations, + stubCCVConfigData, +} from "~/lib/ccip/graphql/services/enrichment-data-service.ts" + +const GRAPHQL_CONCURRENCY = 10 + +export const prerender = false + +/** + * Service class for handling token directory data operations + * Provides detailed token information including CCV configuration for a specific chain + */ +export class TokenDirectoryService { + private readonly requestId: string + + constructor(requestId?: string) { + this.requestId = requestId ?? crypto.randomUUID() + + logger.debug({ + message: "TokenDirectoryService initialized", + requestId: this.requestId, + }) + } + + /** + * Retrieves detailed token directory data for a specific token and chain + * + * @param environment - Network environment (mainnet/testnet) + * @param tokenSymbol - Token canonical symbol + * @param chainIdentifier - Chain identifier (can be directory key or selector name) + * @param outputKey - Format to use for displaying chain keys + * @param internalIdFormat - Format for internalId values (selector or directory) + * @returns Token directory data or null if not found + */ + async getTokenDirectory( + environment: Environment, + tokenSymbol: string, + chainIdentifier: string, + outputKey: OutputKeyType, + internalIdFormat: NamingConvention + ): Promise { + logger.info({ + message: "Getting token directory data", + requestId: this.requestId, + environment, + tokenSymbol, + chainIdentifier, + outputKey, + internalIdFormat, + }) + + try { + // Load reference data + const { lanesReferenceData, chainsReferenceData } = loadReferenceData({ + environment, + version: Version.V1_2_0, + }) + + // Use ChainIdentifierService to resolve the chain identifier + const chainIdService = new ChainIdentifierService(environment, internalIdFormat) + const resolved = chainIdService.resolve(chainIdentifier) + + if (!resolved) { + logger.warn({ + message: "Could not resolve chain identifier", + requestId: this.requestId, + chainIdentifier, + }) + return { data: null } + } + + const directoryKey = resolved.directoryKey + + // Check if chain exists in reference data + const chainConfig = chainsReferenceData[directoryKey] as ChainConfig | undefined + if (!chainConfig) { + logger.warn({ + message: "Chain not found in reference data", + requestId: this.requestId, + directoryKey, + }) + return { data: null } + } + + // Get token data for this chain + const tokenData = getTokenData({ + environment, + version: Version.V1_2_0, + tokenId: tokenSymbol, + }) + + if (!tokenData) { + logger.warn({ + message: "Token not found", + requestId: this.requestId, + tokenSymbol, + }) + return { data: null } + } + + // Find token data for the specific chain + // tokenData keys are directory keys (e.g., "mainnet", "arbitrum-mainnet") + const chainTokenData = tokenData[directoryKey] + + if (!chainTokenData) { + logger.warn({ + message: "Token not found on specified chain", + requestId: this.requestId, + tokenSymbol, + chainIdentifier: directoryKey, + }) + return { data: null } + } + + // Fetch pool data from GraphQL + const poolInfo = await fetchPoolDataForToken(environment, tokenSymbol, directoryKey) + + if (!poolInfo?.address) { + logger.warn({ + message: "Pool data not found for token on chain", + requestId: this.requestId, + tokenSymbol, + chainIdentifier: directoryKey, + }) + return { data: null } + } + + // Get selector name for later use + const selectorName = resolved.selectorName + + // Get chain info + const chainInfo = this.resolveChainInfo(directoryKey, chainConfig) + if (!chainInfo) { + return { data: null } + } + + // Check if this pool supports CCV features (v2.0+ only) + const actualPoolVersion = poolInfo.version || "" + const isCCVEnabled = await shouldEnableCCVFeatures(environment, tokenSymbol, directoryKey, actualPoolVersion) + + // Load CCV config (only used for v2.0+ pools) + const ccvConfigData = this.loadCCVConfigData() + const ccvConfig = isCCVEnabled ? ccvConfigData[tokenSymbol]?.[directoryKey] || null : null + + // Get outbound lanes (from this chain to others) + const outboundLanes = await this.getOutboundLanes( + environment, + directoryKey, + selectorName, + tokenSymbol, + lanesReferenceData, + chainsReferenceData as Record, + ccvConfig, + outputKey, + internalIdFormat, + chainIdService, + isCCVEnabled + ) + + // Get inbound lanes (from others to this chain) + const inboundLanes = await this.getInboundLanes( + environment, + directoryKey, + selectorName, + tokenSymbol, + lanesReferenceData, + chainsReferenceData as Record, + ccvConfig, + outputKey, + internalIdFormat, + chainIdService, + isCCVEnabled + ) + + // Format output based on outputKey and internalIdFormat + const formattedInternalId = chainIdService.format(directoryKey, internalIdFormat) + + // Build custom finality config (v2.0+ pools only) + let customFinality: CustomFinalityConfig | null = null + if (isCCVEnabled) { + const minBlockConfirmation = await fetchMinBlockConfirmations(environment, tokenSymbol, directoryKey) + customFinality = this.buildCustomFinalityConfig(minBlockConfirmation) + } + + const data: TokenDirectoryData = { + internalId: formattedInternalId, + chainId: chainInfo.chainId, + selector: chainInfo.selector, + token: { + address: chainTokenData.tokenAddress, + decimals: chainTokenData.decimals, + }, + pool: { + address: poolInfo.address, + rawType: poolInfo.rawType, + type: poolInfo.type, + version: await getEffectivePoolVersion(environment, tokenSymbol, directoryKey, poolInfo.version || ""), + advancedPoolHooks: null, + supportsV2Features: isCCVEnabled, + }, + // ccvConfig handling: + // - v1.x pool (isCCVEnabled=false): null (feature not supported) + // - v2.x pool with config entry: {thresholdAmount: value} (could be null for downstream error) + // - v2.x pool without config entry: {thresholdAmount: "0"} (not configured) + ccvConfig: isCCVEnabled + ? ccvConfig + ? { thresholdAmount: ccvConfig.thresholdAmount } + : { thresholdAmount: "0" } + : null, + customFinality, + outboundLanes, + inboundLanes, + } + + logger.info({ + message: "Token directory data retrieved", + requestId: this.requestId, + tokenSymbol, + chainIdentifier: directoryKey, + outboundLaneCount: Object.keys(outboundLanes).length, + inboundLaneCount: Object.keys(inboundLanes).length, + }) + + return { data } + } catch (error) { + logger.error({ + message: "Failed to get token directory data", + requestId: this.requestId, + error: error instanceof Error ? error.message : "Unknown error", + }) + return { data: null } + } + } + + /** + * Resolves chain information from chain key and config + */ + private resolveChainInfo( + chainKey: string, + chainConfig: ChainConfig + ): { chainId: number | string; selector: string } | null { + try { + let chainId: number | string = chainKey + + try { + const supportedChain = directoryToSupportedChain(chainKey) + const resolvedChainId = getChainId(supportedChain) + if (resolvedChainId) chainId = resolvedChainId + } catch { + // Use chainKey as fallback + } + + const selector = chainConfig.chainSelector + if (!selector) { + return null + } + + return { chainId, selector } + } catch (error) { + logger.warn({ + message: "Failed to resolve chain info", + requestId: this.requestId, + chainKey, + error: error instanceof Error ? error.message : "Unknown error", + }) + return null + } + } + + /** + * Gets outbound lanes for the token from this chain + */ + private async getOutboundLanes( + environment: Environment, + sourceDirectoryKey: string, + sourceSelectorName: string, + tokenSymbol: string, + lanesReferenceData: Record>, + chainsReferenceData: Record, + ccvConfig: CCVChainConfig | null, + outputKey: OutputKeyType, + internalIdFormat: NamingConvention, + chainIdService: ChainIdentifierService, + isCCVEnabled: boolean + ): Promise> { + const result: Record = {} + + // Get lanes from this source chain + const sourceLanes = lanesReferenceData[sourceDirectoryKey] + if (!sourceLanes) { + return result + } + + // Collect lanes to process, then fetch rate limits concurrently + const lanesToProcess: Array<{ + destDirectoryKey: string + destChainInfo: { chainId: string | number; selector: string } + laneKey: string + verifiers: LaneVerifiers | null + outputLaneKey: string + formattedInternalId: string + }> = [] + + for (const [destDirectoryKey, laneConfig] of Object.entries(sourceLanes)) { + if (!laneConfig.supportedTokens?.includes(tokenSymbol)) continue + + const destChainConfig = chainsReferenceData[destDirectoryKey] + if (!destChainConfig) continue + + const destChainInfo = this.resolveChainInfo(destDirectoryKey, destChainConfig) + if (!destChainInfo) continue + + const destResolved = chainIdService.resolve(destDirectoryKey) + const destSelectorName = destResolved?.selectorName || destDirectoryKey + const laneKey = this.buildLaneSelectorKey(sourceSelectorName, destSelectorName) + const verifiers = this.getVerifiersForLane(ccvConfig, laneKey, "outbound", isCCVEnabled) + const outputLaneKey = this.formatLaneKey(destDirectoryKey, outputKey, internalIdFormat, chainIdService) + const formattedInternalId = chainIdService.format(destDirectoryKey, internalIdFormat) + + lanesToProcess.push({ destDirectoryKey, destChainInfo, laneKey, verifiers, outputLaneKey, formattedInternalId }) + } + + // Fetch rate limits concurrently with concurrency limit + const limit = pLimit(GRAPHQL_CONCURRENCY) + const laneResults = await Promise.allSettled( + lanesToProcess.map((lane) => + limit(async () => ({ + ...lane, + rateLimits: await fetchLaneRateLimits(environment, tokenSymbol, sourceDirectoryKey, lane.destDirectoryKey), + })) + ) + ) + + for (const settled of laneResults) { + if (settled.status !== "fulfilled") continue + const lane = settled.value + result[lane.outputLaneKey] = { + internalId: lane.formattedInternalId, + chainId: lane.destChainInfo.chainId, + selector: lane.destChainInfo.selector, + rateLimits: { + standard: lane.rateLimits?.standard ?? null, + custom: lane.rateLimits?.custom ?? null, + }, + fees: null, + verifiers: lane.verifiers, + } + } + + return result + } + + /** + * Gets inbound lanes for the token to this chain + */ + private async getInboundLanes( + environment: Environment, + destDirectoryKey: string, + destSelectorName: string, + tokenSymbol: string, + lanesReferenceData: Record>, + chainsReferenceData: Record, + ccvConfig: CCVChainConfig | null, + outputKey: OutputKeyType, + internalIdFormat: NamingConvention, + chainIdService: ChainIdentifierService, + isCCVEnabled: boolean + ): Promise> { + const result: Record = {} + + // Collect inbound lanes to process + const lanesToProcess: Array<{ + sourceDirectoryKey: string + sourceChainInfo: { chainId: string | number; selector: string } + laneKey: string + verifiers: LaneVerifiers | null + outputLaneKey: string + formattedInternalId: string + }> = [] + + for (const [sourceDirectoryKey, sourceLanes] of Object.entries(lanesReferenceData)) { + const laneConfig = sourceLanes[destDirectoryKey] + if (!laneConfig) continue + if (!laneConfig.supportedTokens?.includes(tokenSymbol)) continue + + const sourceChainConfig = chainsReferenceData[sourceDirectoryKey] + if (!sourceChainConfig) continue + + const sourceChainInfo = this.resolveChainInfo(sourceDirectoryKey, sourceChainConfig) + if (!sourceChainInfo) continue + + const sourceResolved = chainIdService.resolve(sourceDirectoryKey) + const sourceSelectorName = sourceResolved?.selectorName || sourceDirectoryKey + const laneKey = this.buildLaneSelectorKey(sourceSelectorName, destSelectorName) + const verifiers = this.getVerifiersForLane(ccvConfig, laneKey, "inbound", isCCVEnabled) + const outputLaneKey = this.formatLaneKey(sourceDirectoryKey, outputKey, internalIdFormat, chainIdService) + const formattedInternalId = chainIdService.format(sourceDirectoryKey, internalIdFormat) + + lanesToProcess.push({ + sourceDirectoryKey, + sourceChainInfo, + laneKey, + verifiers, + outputLaneKey, + formattedInternalId, + }) + } + + // Fetch rate limits concurrently with concurrency limit + const limit = pLimit(GRAPHQL_CONCURRENCY) + const laneResults = await Promise.allSettled( + lanesToProcess.map((lane) => + limit(async () => ({ + ...lane, + rateLimits: await fetchLaneRateLimits(environment, tokenSymbol, lane.sourceDirectoryKey, destDirectoryKey), + })) + ) + ) + + for (const settled of laneResults) { + if (settled.status !== "fulfilled") continue + const lane = settled.value + result[lane.outputLaneKey] = { + internalId: lane.formattedInternalId, + chainId: lane.sourceChainInfo.chainId, + selector: lane.sourceChainInfo.selector, + rateLimits: { + standard: lane.rateLimits?.standard ?? null, + custom: lane.rateLimits?.custom ?? null, + }, + fees: null, + verifiers: lane.verifiers, + } + } + + return result + } + + /** + * Builds a lane key using deterministic format: sourceSelector-to-destSelector. + * Scales to any chain without hardcoded mappings. + * e.g., "ethereum-mainnet-to-arbitrum-mainnet", "ethereum-mainnet-to-base-mainnet" + */ + private buildLaneSelectorKey(sourceSelectorName: string, destSelectorName: string): string { + return `${sourceSelectorName}-to-${destSelectorName}` + } + + /** + * Gets verifiers for a specific lane from CCV config. + * Returns pre-computed verifier sets: + * - belowThreshold: Verifiers used when transfer amount is below the threshold + * - aboveThreshold: All verifiers used when transfer amount is at or above the threshold + * (belowThreshold + additional threshold verifiers) + * Threshold verifiers are only included for v2.0+ pools (when isCCVEnabled is true). + * + * Return value semantics: + * - null: v1.x pool (feature not supported) + * - {belowThreshold: [], aboveThreshold: []}: v2.x pool, no verifiers configured for this lane + * - {belowThreshold: [...], aboveThreshold: [...]}: v2.x pool, verifiers configured + * - {belowThreshold: null, aboveThreshold: null}: v2.x pool, downstream API error + */ + private getVerifiersForLane( + ccvConfig: CCVChainConfig | null, + laneKey: string, + direction: "outbound" | "inbound", + isCCVEnabled: boolean + ): LaneVerifiers | null { + // For v1.x pools (CCV not enabled), verifiers don't exist - return null + if (!isCCVEnabled) { + return null + } + + // For v2.x pools, CCV config should exist + if (!ccvConfig) { + return { belowThreshold: [], aboveThreshold: [] } + } + + const ccvs = direction === "outbound" ? ccvConfig.outboundCCVs : ccvConfig.inboundCCVs + if (!ccvs) { + return { belowThreshold: [], aboveThreshold: [] } + } + + const thresholdAmount = ccvConfig.thresholdAmount ?? "0" + + // Exact lookup only (no fuzzy matching) + const laneVerifiers = ccvs[laneKey] + if (laneVerifiers) { + return this.buildVerifiersResponse(laneVerifiers.base, laneVerifiers.threshold, thresholdAmount) + } + + return { belowThreshold: [], aboveThreshold: [] } + } + + /** + * Builds the verifiers response from base and threshold arrays. + * Handles downstream API error case when arrays are null. + * When thresholdAmount is "0" (threshold disabled pool-wide), aboveThreshold equals belowThreshold + * because the contract never adds threshold verifiers (AdvancedPoolHooks._resolveRequiredCCVs). + */ + private buildVerifiersResponse( + baseVerifiers: string[] | null, + thresholdVerifiers: string[] | null, + thresholdAmount: string + ): LaneVerifiers { + // If either base or threshold is null, it indicates a downstream API error + if (baseVerifiers === null || thresholdVerifiers === null) { + return { belowThreshold: null, aboveThreshold: null } + } + + const belowThreshold = baseVerifiers + const aboveThreshold = thresholdAmount === "0" ? baseVerifiers : [...baseVerifiers, ...thresholdVerifiers] + + return { belowThreshold, aboveThreshold } + } + + /** + /** + * Formats a lane key based on output format + */ + private formatLaneKey( + directoryKey: string, + outputKey: OutputKeyType, + internalIdFormat: NamingConvention, + chainIdService: ChainIdentifierService + ): string { + if (outputKey === "chainId") { + try { + const supportedChain = directoryToSupportedChain(directoryKey) + const chainId = getChainId(supportedChain) + const { chainType } = getChainTypeAndFamily(supportedChain) + if (chainId) { + return chainType === "evm" ? chainId.toString() : `${chainType}:${chainId}` + } + } catch { + // Fall through to default + } + return directoryKey + } + + if (outputKey === "selector") { + const resolved = chainIdService.resolve(directoryKey) + if (resolved) { + try { + const supportedChain = directoryToSupportedChain(directoryKey) + const chainId = getChainId(supportedChain) + const { chainType } = getChainTypeAndFamily(supportedChain) + if (chainId) { + const selectorEntry = getSelectorEntry(chainId, chainType) + if (selectorEntry) { + return selectorEntry.selector + } + } + } catch { + // Fall through + } + } + return directoryKey + } + + // outputKey === "internalId" + return chainIdService.format(directoryKey, internalIdFormat) + } + + /** + * Loads CCV config data (stubbed — not yet available in GraphQL) + */ + + private loadCCVConfigData(): CCVConfigData { + return stubCCVConfigData() + } + + /** + * Builds custom finality configuration from minBlockConfirmation value + * + * @param minBlockConfirmation - The minimum block confirmation value, or null/undefined if unavailable + * @returns CustomFinalityConfig object with hasCustomFinality and minBlockConfirmation + */ + private buildCustomFinalityConfig(minBlockConfirmation: number | null | undefined): CustomFinalityConfig | null { + // If minBlockConfirmation is undefined, we don't have rate limits data for this token/chain + if (minBlockConfirmation === undefined) { + return null + } + + // If minBlockConfirmation is null, there was an issue with downstream API + if (minBlockConfirmation === null) { + return { + hasCustomFinality: null, + minBlockConfirmation: null, + } + } + + // hasCustomFinality is true if minBlockConfirmation > 0 + return { + hasCustomFinality: minBlockConfirmation > 0, + minBlockConfirmation, + } + } + + /** + * Gets the request ID for this service instance + */ + getRequestId(): string { + return this.requestId + } +} diff --git a/src/pages/api/ccip/types/faucet.ts b/src/lib/ccip/types/faucet.ts similarity index 100% rename from src/pages/api/ccip/types/faucet.ts rename to src/lib/ccip/types/faucet.ts diff --git a/src/lib/ccip/types/index.ts b/src/lib/ccip/types/index.ts new file mode 100644 index 00000000000..46f7ceb147c --- /dev/null +++ b/src/lib/ccip/types/index.ts @@ -0,0 +1,702 @@ +// Chain Data API Types + +import { Environment } from "@config/data/ccip/types.ts" +import type { ChainType, ChainFamily } from "@config/types.ts" + +export { Environment } +export type { ChainType, ChainFamily } + +export const prerender = false + +// Naming convention for chain identifiers +// - 'directory': chains.json keys (e.g., "mainnet", "bsc-mainnet") +// - 'selector': selectors.yml names (e.g., "ethereum-mainnet", "binance_smart_chain-mainnet") +export type NamingConvention = "directory" | "selector" + +// Search types +export type SearchType = "selector" | "chainId" | "internalId" | "displayName" + +export interface SearchDetectionResult { + type: SearchType + normalizedQuery: string +} + +/** + * Enriched fee token information with address and metadata + * Used when enrichFeeTokens=true query parameter is set + */ +export type FeeTokenEnriched = { + symbol: string + name: string + address: string + decimals: number +} + +export type ChainConfigError = { + chainId: number + networkId: string + reason: string + missingFields: string[] +} + +export type ChainMetadata = { + environment: Environment + timestamp: string + requestId: string + ignoredChainCount: number + validChainCount: number + searchQuery?: string + searchType?: SearchType +} + +export interface ChainDetails { + chainId: number | string + displayName: string + selector: string + internalId: string + feeTokens: string[] | FeeTokenEnriched[] + router: string + rmn: string + chainType: ChainType + chainFamily: ChainFamily + supported: boolean + registryModule?: string + tokenAdminRegistry?: string + tokenPoolFactory?: string + feeQuoter?: string + mcms?: string +} + +export type ChainApiResponse = { + metadata: ChainMetadata + data: Record> + ignored: { + chainId: number + networkId: string + reason: string + missingFields: string[] + chain_id?: string + }[] +} + +export type OutputKeyType = "chainId" | "selector" | "internalId" + +export type ChainApiError = { + error: string + message: string +} + +export interface FilterType { + chainId?: string + selector?: string + internalId?: string +} + +export type SelectorEntry = { + selector: string + name: string +} + +export type SelectorsConfig = { + selectors: Record +} + +// Token Data API Types + +export type TokenConfigError = { + symbol: string + reason: string + missingFields: string[] +} + +export type TokenMetadata = { + environment: Environment + timestamp: string + requestId: string + ignoredTokenCount: number + validTokenCount: number +} + +export type TokenPool = { + address: string + rawType: string + type: string + version: string + advancedPoolHooks?: string | null +} + +export type TokenChainData = { + chainId: number | string + chainName: string + decimals: number + destinations: string[] + name: string + pool: TokenPool + symbol: string + tokenAddress: string +} + +export type TokenDataResponse = { + [key: string]: { + [chainKey: string]: TokenChainData + } +} + +export type TokenServiceResponse = { + tokens: TokenDataResponse + errors: TokenConfigError[] + metadata: { + validTokenCount: number + ignoredTokenCount: number + } +} + +export type TokenApiResponse = { + metadata: TokenMetadata + data: TokenDataResponse + ignored: TokenConfigError[] +} + +export interface TokenFilterType { + token_id?: string + chain_id?: string +} + +/** + * CCV (Cross-Chain Verifier) configuration for a pool + * Only present for v2.0+ pools (check pool.supportsV2Features) + * For v1.x pools, the entire ccvConfig field is null + * + * Values for thresholdAmount: + * - "0": CCV not configured for this v2 pool + * - "N" (positive number string): CCV configured with threshold N + * - null: downstream API error fetching CCV config + */ +export interface CCVConfig { + thresholdAmount: string | null +} + +// Token Detail API Types (for /tokens/{tokenCanonicalSymbol} endpoint) + +/** + * Custom finality configuration (reused across token endpoints) + */ +export interface CustomFinalityConfig { + /** Whether custom finality is enabled (derived from minBlockConfirmation > 0) */ + hasCustomFinality: boolean | null + /** Minimum block confirmations required, null if unavailable */ + minBlockConfirmation: number | null +} + +/** + * Extended token chain data with custom finality and CCV information + */ +export interface TokenDetailChainData extends Omit { + /** Custom finality configuration for the token on this chain + * - null: v1 pool (feature not supported) + * - {hasCustomFinality: null, minBlockConfirmation: null}: v2 pool, downstream API error + * - {hasCustomFinality: false, minBlockConfirmation: 0}: v2 pool, feature not used + * - {hasCustomFinality: true, minBlockConfirmation: N}: v2 pool, feature enabled + */ + customFinality: CustomFinalityConfig | null + /** CCV (Cross-Chain Verifier) configuration for the pool + * - null: v1 pool (feature not supported, check pool.supportsV2Features) + * - {thresholdAmount: "0"}: v2 pool, CCV not configured + * - {thresholdAmount: null}: v2 pool, downstream API error + * - {thresholdAmount: "N"}: v2 pool, CCV configured with threshold N + */ + ccvConfig: CCVConfig | null + /** Pool information including version, hooks, and v2 feature support flag */ + pool: { + address: string + rawType: string + type: string + version: string + advancedPoolHooks: string | null + /** Whether this pool supports v2 features (customFinality, ccvConfig). + * When true and customFinality/ccvConfig fields have null values inside, + * it indicates a downstream API error rather than feature not supported. */ + supportsV2Features: boolean + } | null +} + +/** + * Token detail response data structure + */ +export type TokenDetailDataResponse = { + [chainKey: string]: TokenDetailChainData +} + +/** + * Metadata for token detail API responses + */ +export interface TokenDetailMetadata { + environment: Environment + timestamp: string + requestId: string + tokenSymbol: string + chainCount: number +} + +/** + * Token detail API response format + */ +export interface TokenDetailApiResponse { + metadata: TokenDetailMetadata + data: TokenDetailDataResponse +} + +/** + * Token detail service response (internal) + */ +export interface TokenDetailServiceResponse { + data: TokenDetailDataResponse + metadata: { + chainCount: number + } +} + +// Lane Data API Types + +export type LaneConfigError = { + sourceChain: string + destinationChain: string + reason: string + missingFields: string[] +} + +export type LaneMetadata = { + environment: Environment + timestamp: string + requestId: string + ignoredLaneCount: number + validLaneCount: number +} + +// Internal interface with chainType and chainFamily for processing +export interface ChainInfoInternal { + chainId: number | string + displayName: string + selector: string + internalId: string + chainType: ChainType + chainFamily: ChainFamily +} + +// Public interface for API responses without chainType and chainFamily +export interface ChainInfo { + chainId: number | string + displayName: string + selector: string + internalId: string +} + +export interface LaneDetails { + sourceChain: ChainInfo + destinationChain: ChainInfo + onRamp: { + address: string + version: string + enforceOutOfOrder?: boolean + } + offRamp: { + address: string + version: string + } + supportedTokens: string[] +} + +export type LaneDataResponse = Record + +export type LaneServiceResponse = { + data: LaneDataResponse + errors: LaneConfigError[] + metadata: { + validLaneCount: number + ignoredLaneCount: number + } +} + +export type LaneApiResponse = { + metadata: LaneMetadata + data: LaneDataResponse + ignored: LaneConfigError[] +} + +export interface LaneFilterType { + sourceChainId?: string + destinationChainId?: string + sourceSelector?: string + destinationSelector?: string + sourceInternalId?: string + destinationInternalId?: string + version?: string +} + +// Lane Detail API Types (for /lanes/by-{type}/{source}/{destination} endpoints) + +/** + * Input key type for lane path parameters + */ +export type LaneInputKeyType = "chainId" | "selector" | "internalId" + +/** + * Metadata for single lane detail API responses + */ +export interface LaneDetailMetadata { + environment: Environment + timestamp: string + requestId: string + sourceChain: string + destinationChain: string +} + +// Rate Limits API Types + +/** + * Rate limiter configuration for a single direction (in or out) + */ +export interface RateLimiterConfig { + capacity: string + isEnabled: boolean + rate: string +} + +/** + * Rate limiter directions (in and/or out) + * - { in: {...}, out: {...} } = rate limits configured and available + * - { in: null, out: null } = downstream API error (v1 or v2 pool) + */ +export interface RateLimiterDirections { + in?: RateLimiterConfig | null + out?: RateLimiterConfig | null +} + +/** + * Rate limiter entry can be directions data or null (not configured) + * - null = rate limits not configured for this type (standard/custom) + * - { in: null, out: null } = downstream API error + * - { in: {...}, out: {...} } = rate limits available + */ +export type RateLimiterEntry = RateLimiterDirections | null + +/** + * Transfer fees for a token on a lane in basis points + */ +export interface TokenFees { + standardTransferFeeBps: number + customTransferFeeBps: number +} + +/** + * Raw rate limits from mock data (fees may not be present) + */ +export interface RawTokenRateLimits { + standard: RateLimiterEntry + custom: RateLimiterEntry + fees?: TokenFees +} + +/** + * Rate limits for a single token on a lane with both standard and custom limits + * Each entry contains directional (in/out) rate limit configurations + */ +export interface TokenRateLimits { + standard: RateLimiterEntry + custom: RateLimiterEntry +} + +/** + * Combined rate limits and fees for a token on a lane + * Used in API responses that return both rate limits and transfer fees + */ +export interface TokenLaneData { + rateLimits: TokenRateLimits + fees: TokenFees | null +} + +/** + * Lane details with rate limits included in supportedTokens + * Used for single lane detail endpoints that merge rate limits + */ +export interface LaneDetailWithRateLimits { + sourceChain: ChainInfo + destinationChain: ChainInfo + onRamp: { + address: string + version: string + enforceOutOfOrder?: boolean + } + offRamp: { + address: string + version: string + } + supportedTokens: Record +} + +/** + * Single lane detail API response format (with rate limits) + */ +export interface LaneDetailApiResponse { + metadata: LaneDetailMetadata + data: LaneDetailWithRateLimits +} + +/** + * Lane detail service response (internal) + */ +export interface LaneDetailServiceResponse { + data: LaneDetailWithRateLimits | null +} + +// Supported Tokens API Types (for /lanes/by-{type}/{source}/{destination}/supported-tokens endpoints) + +/** + * Metadata for supported tokens API responses + */ +export interface SupportedTokensMetadata { + environment: Environment + timestamp: string + requestId: string + sourceChain: string + destinationChain: string + tokenCount: number +} + +/** + * Supported tokens API response format + */ +export interface SupportedTokensApiResponse { + metadata: SupportedTokensMetadata + data: Record +} + +/** + * Supported tokens service response (internal) + */ +export interface SupportedTokensServiceResponse { + data: Record | null + tokenCount: number +} + +/** + * Type guard to check if a RateLimiterEntry is unavailable (null) + */ +export function isRateLimiterUnavailable(entry: RateLimiterEntry): entry is null { + return entry === null +} + +/** + * Metadata for rate limits API responses + */ +export interface RateLimitsMetadata { + environment: Environment + timestamp: string + requestId: string + sourceChain: string + destinationChain: string + tokenCount: number +} + +/** + * Filter parameters for rate limits queries (query-based - deprecated) + */ +export interface RateLimitsFilterType { + sourceInternalId: string + destinationInternalId: string + tokens?: string + direction?: "in" | "out" + rateType?: "standard" | "custom" +} + +/** + * Filter parameters for lane rate limits queries (path-based) + * Source and destination come from URL path parameters + */ +export interface LaneRateLimitsFilterType { + tokens?: string + direction?: "in" | "out" + rateType?: "standard" | "custom" +} + +/** + * Direction type for rate limits + */ +export type RateLimitsDirection = "in" | "out" + +/** + * Rate type for rate limits (standard or custom) + */ +export type RateLimitsType = "standard" | "custom" + +/** + * Source chain rate limits data with minBlockConfirmation and remote destinations + * Uses RawTokenRateLimits since fees may not be present in mock data + */ +export interface SourceChainRateLimitsData { + minBlockConfirmation: number | null + remote: Record +} + +/** + * Rate limits data structure in the mock JSON files + * Token -> SourceChain -> { minBlockConfirmation?, remote: { DestChain -> { standard, custom } } } + */ +export type RateLimitsData = Record> + +/** + * Rate limits API response format + */ +export interface RateLimitsApiResponse { + metadata: RateLimitsMetadata + data: Record +} + +/** + * Rate limits service response (internal) + */ +export interface RateLimitsServiceResponse { + data: Record + metadata: { + tokenCount: number + } +} + +// Token Directory API Types (for /tokens/{symbol}/chains/{chain} endpoint) + +/** + * Verifiers configuration for a lane with pre-computed sets for different transfer amounts + * Only present for v2.0+ pools (check pool.supportsV2Features) + * For v1.x pools, the entire verifiers field is null + * + * Values for belowThreshold/aboveThreshold: + * - []: No verifiers configured for this lane + * - [addr1, addr2, ...]: Verifiers configured + * - null: Downstream API error fetching verifiers + * + * Usage: + * - belowThreshold: Verifiers used when transfer amount is below the threshold + * - aboveThreshold: Verifiers used when transfer amount is at or above the threshold + * (includes all belowThreshold verifiers plus additional threshold verifiers) + */ +export interface LaneVerifiers { + belowThreshold: string[] | null + aboveThreshold: string[] | null +} + +/** + * Lane data in token directory response + * + * Use pool.supportsV2Features to interpret verifiers: + * - pool.supportsV2Features=false + verifiers=null → v1.x pool, feature not supported + * - pool.supportsV2Features=true + verifiers={belowThreshold: null, aboveThreshold: null} → downstream API error + * - pool.supportsV2Features=true + verifiers={belowThreshold: [], aboveThreshold: []} → not configured + * - pool.supportsV2Features=true + verifiers={belowThreshold: [...], aboveThreshold: [...]} → configured + */ +export interface TokenDirectoryLane { + internalId: string + chainId: number | string + selector: string + rateLimits: TokenRateLimits + fees: TokenFees | null + verifiers: LaneVerifiers | null +} + +/** + * Token info in directory response + */ +export interface TokenDirectoryTokenInfo { + address: string + decimals: number +} + +/** + * Pool info in directory response + */ +export interface TokenDirectoryPoolInfo { + address: string + rawType: string + type: string + version: string + advancedPoolHooks: string | null + /** Whether this pool supports v2 features (customFinality, ccvConfig). + * When true and customFinality/ccvConfig fields have null values inside, + * it indicates a downstream API error rather than feature not supported. */ + supportsV2Features: boolean +} + +/** + * Token directory data for a specific chain + */ +export interface TokenDirectoryData { + internalId: string + chainId: number | string + selector: string + token: TokenDirectoryTokenInfo + pool: TokenDirectoryPoolInfo + ccvConfig: CCVConfig | null + customFinality: CustomFinalityConfig | null + outboundLanes: Record + inboundLanes: Record +} + +/** + * Metadata for token directory API responses + */ +export interface TokenDirectoryMetadata { + environment: Environment + timestamp: string + requestId: string + symbol: string + sourceChain: string +} + +/** + * Token directory API response format + */ +export interface TokenDirectoryApiResponse { + metadata: TokenDirectoryMetadata + data: TokenDirectoryData +} + +/** + * Token directory service response (internal) + */ +export interface TokenDirectoryServiceResponse { + data: TokenDirectoryData | null +} + +/** + * CCV config data structure in mock JSON files + * Token -> SourceChain (directory key) -> { thresholdAmount, outboundCCVs, inboundCCVs } + * + * Values for base/threshold arrays: + * - []: No verifiers configured + * - [addr1, ...]: Verifiers configured + * - null: Downstream API error fetching verifiers + */ +export interface CCVLaneConfig { + base: string[] | null + threshold: string[] | null +} + +export interface CCVChainConfig { + thresholdAmount: string + outboundCCVs: Record + inboundCCVs: Record +} + +export type CCVConfigData = Record> + +// Faucet API Types +export type { + FaucetChainConfig, + ChallengeParams, + ChallengeResponse, + VerifyRequest, + VerifyResponse, + VerifySignatureArgs, + FamilyAdapter, + FaucetApiResponse, + FaucetError, +} from "./faucet.ts" diff --git a/src/pages/api/ccip/utils.ts b/src/lib/ccip/utils.ts similarity index 60% rename from src/pages/api/ccip/utils.ts rename to src/lib/ccip/utils.ts index c10232bc66c..369733615b4 100644 --- a/src/pages/api/ccip/utils.ts +++ b/src/lib/ccip/utils.ts @@ -3,8 +3,21 @@ import { JsonRpcProvider, Contract } from "ethers" import { ChainsConfig, Environment, loadReferenceData, Version } from "@config/data/ccip/index.ts" import { SupportedChain } from "@config/index.ts" import { directoryToSupportedChain } from "@features/utils/index.ts" -import { v4 as uuidv4 } from "uuid" -import type { TokenMetadata, ChainType, OutputKeyType } from "./types/index.ts" +import type { + TokenMetadata, + ChainType, + OutputKeyType, + ChainFamily, + ChainMetadata, + ChainConfigError, + FilterType, + RateLimitsMetadata, + RateLimitsFilterType, + RateLimitsDirection, + RateLimitsType, +} from "./types/index.ts" +import { jsonHeaders, commonHeaders as sharedCommonHeaders } from "@lib/api/cacheHeaders.js" +import { logger } from "@lib/logging/index.js" export const prerender = false @@ -13,23 +26,6 @@ export type { ChainsConfig, Version } export { Environment } export type { SelectorsConfig } from "@config/data/ccip/selectors.ts" -/** - * Common HTTP headers used across all API responses - */ -export const commonHeaders = { - "Content-Type": "application/json", -} - -/** - * Extended headers for successful responses with caching directives - */ -export const successHeaders = { - ...commonHeaders, - "Cache-Control": "s-max-age=300, stale-while-revalidate", - "CDN-Cache-Control": "max-age=300", - "Vercel-CDN-Cache-Control": "max-age=300", -} - /** * Custom error class for CCIP-specific errors */ @@ -43,35 +39,8 @@ export class CCIPError extends Error { } } -/** - * Metadata structure for chain API responses - */ -export type ChainMetadata = { - environment: Environment - timestamp: string - requestId: string - ignoredChainCount: number - validChainCount: number -} - -/** - * Error structure for chain configuration issues - */ -export type ChainConfigError = { - chainId: number - networkId: string - reason: string - missingFields: string[] -} - -/** - * Filter parameters for chain queries - */ -export type FilterType = { - chainId?: string - selector?: string - internalId?: string -} +// Re-export types from types/index.ts for backwards compatibility +export type { ChainMetadata, ChainConfigError, FilterType } /** * Arguments required for ARM proxy contract interactions @@ -179,7 +148,11 @@ export const checkIfChainIsCursed = async ( try { return await getArmIsCursed({ provider, routerAddress }) } catch (error) { - console.error(`Error checking if chain ${chain} is cursed: ${error}`) + logger.error({ + message: "Error checking if chain is cursed", + chain, + error: error instanceof Error ? error.message : "Unknown error", + }) return false } } @@ -199,12 +172,13 @@ export const withTimeout = (promise: Promise, ms: number, timeoutErrorMess /** * Creates metadata object for chain API responses * @param environment - Current environment (mainnet/testnet) + * @param requestId - Optional request ID for correlation (generates new UUID if not provided) * @returns Metadata object with timestamp and request tracking */ -export const createMetadata = (environment: Environment): ChainMetadata => ({ +export const createMetadata = (environment: Environment, requestId?: string): ChainMetadata => ({ environment, timestamp: new Date().toISOString(), - requestId: uuidv4(), + requestId: requestId ?? crypto.randomUUID(), ignoredChainCount: 0, validChainCount: 0, }) @@ -224,6 +198,90 @@ export const createTokenMetadata = (environment: Environment): TokenMetadata => } } +/** + * Creates rate-limits-specific metadata object + * @param environment - Current network environment + * @param sourceChain - Source chain internal ID + * @param destinationChain - Destination chain internal ID + * @param tokenCount - Number of tokens in the response + * @returns Metadata object for rate limits API response + */ +export const createRateLimitsMetadata = ( + environment: Environment, + sourceChain: string, + destinationChain: string, + tokenCount: number +): RateLimitsMetadata => { + return { + environment, + timestamp: new Date().toISOString(), + requestId: crypto.randomUUID(), + sourceChain, + destinationChain, + tokenCount, + } +} + +/** + * Validates rate limits filter parameters + * @param filters - Filter parameters to validate + * @throws CCIPError if required parameters are missing or invalid + */ +export const validateRateLimitsFilters = (filters: { + sourceInternalId?: string + destinationInternalId?: string + tokens?: string + direction?: string + rateType?: string +}): RateLimitsFilterType => { + // Validate required parameters + if (!filters.sourceInternalId) { + throw new CCIPError(400, "source_internal_id parameter is required") + } + if (!filters.destinationInternalId) { + throw new CCIPError(400, "destination_internal_id parameter is required") + } + + // Validate direction if provided + let direction: RateLimitsDirection | undefined + if (filters.direction) { + const normalizedDirection = filters.direction.toLowerCase() + if (!["in", "out"].includes(normalizedDirection)) { + throw new CCIPError(400, 'direction parameter must be "in" or "out"') + } + direction = normalizedDirection as RateLimitsDirection + } + + // Validate rate_type if provided + let rateType: RateLimitsType | undefined + if (filters.rateType) { + const normalizedRateType = filters.rateType.toLowerCase() + if (!["standard", "custom"].includes(normalizedRateType)) { + throw new CCIPError(400, 'rate_type parameter must be "standard" or "custom"') + } + rateType = normalizedRateType as RateLimitsType + } + + // Validate tokens if provided (must not be empty after parsing) + if (filters.tokens !== undefined && filters.tokens !== null) { + const tokenList = filters.tokens + .split(",") + .map((t) => t.trim()) + .filter((t) => t.length > 0) + if (filters.tokens.length > 0 && tokenList.length === 0) { + throw new CCIPError(400, "tokens parameter cannot be empty when provided") + } + } + + return { + sourceInternalId: filters.sourceInternalId, + destinationInternalId: filters.destinationInternalId, + tokens: filters.tokens, + direction, + rateType, + } +} + /** * Validates the environment parameter * @param environment - Environment string to validate @@ -251,7 +309,7 @@ export const validateFilters = (filters: FilterType): void => { } /** - * Validates and normalizes the outputKey parameter + * Validates and normalizes the output_key parameter * @param outputKey - Output key to validate * @returns Validated output key * @throws CCIPError if output key is invalid @@ -259,11 +317,29 @@ export const validateFilters = (filters: FilterType): void => { export const validateOutputKey = (outputKey?: string): "chainId" | "selector" | "internalId" => { if (!outputKey) return "chainId" if (!["chainId", "selector", "internalId"].includes(outputKey)) { - throw new CCIPError(400, "outputKey must be one of: chainId, selector, or internalId") + throw new CCIPError(400, "outputKey must be one of: chainId, selector, or internalId.") } return outputKey as "chainId" | "selector" | "internalId" } +/** + * Validates the internalIdFormat parameter + * Controls which naming convention is used for internalId in responses: + * - 'directory': chains.json keys (e.g., "mainnet", "bsc-mainnet") + * - 'selector': selectors.yml names (e.g., "ethereum-mainnet", "binance_smart_chain-mainnet") + * + * @param internalIdFormat - Format to validate + * @returns Validated format, defaults to "selector" for backward compatibility + * @throws CCIPError if format is invalid + */ +export const validateInternalIdFormat = (internalIdFormat?: string): "directory" | "selector" => { + if (!internalIdFormat) return "selector" // Default for backward compatibility + if (!["directory", "selector"].includes(internalIdFormat)) { + throw new CCIPError(400, 'internalIdFormat must be "directory" or "selector".') + } + return internalIdFormat as "directory" | "selector" +} + /** * Validates the enrichFeeTokens parameter * @param enrichFeeTokens - String value to validate @@ -274,11 +350,84 @@ export const validateEnrichFeeTokens = (enrichFeeTokens?: string): boolean => { if (!enrichFeeTokens) return false const normalizedValue = enrichFeeTokens.toLowerCase() if (!["true", "false"].includes(normalizedValue)) { - throw new CCIPError(400, 'enrichFeeTokens must be "true" or "false"') + throw new CCIPError(400, 'enrichFeeTokens must be "true" or "false".') } return normalizedValue === "true" } +/** + * Validates search parameter + * @param search - Search query string to validate + * @returns Trimmed search string or null if empty + * @throws CCIPError if search query is invalid + */ +export const validateSearch = (search: string | null): string | null => { + if (!search) return null + + const trimmed = search.trim() + + if (trimmed.length === 0) return null + + if (trimmed.length > 100) { + throw new CCIPError(400, "Search query must not exceed 100 characters.") + } + + // Allow alphanumeric, spaces, hyphens, and underscores (explicit ASCII to prevent Unicode issues) + if (!/^[a-zA-Z0-9_\s-]+$/.test(trimmed)) { + throw new CCIPError(400, "Search query contains invalid characters.") + } + + return trimmed +} + +/** + * Validates family parameter + * @param family - Family string to validate + * @returns Normalized ChainFamily or null if empty + * @throws CCIPError if family value is invalid + */ +export const validateFamily = (family: string | null): ChainFamily | null => { + if (!family) return null + + const trimmed = family.trim() + if (trimmed.length === 0) return null + + const normalized = trimmed.toLowerCase() + + const familyMap: Record = { + evm: "evm", + solana: "solana", + aptos: "aptos", + sui: "sui", + tron: "tron", + canton: "canton", + ton: "ton", + stellar: "stellar", + starknet: "starknet", + } + + const mapped = familyMap[normalized] + if (!mapped) { + throw new CCIPError(400, "family must be one of: evm, solana, aptos, sui, tron, canton, ton, stellar, starknet.") + } + + return mapped +} + +/** + * Validates that search and legacy filters are not combined + * @param search - Search query string + * @param filters - Legacy filter parameters + * @throws CCIPError if search is combined with legacy filters + */ +export const validateSearchParams = (search: string | null, filters: FilterType): void => { + const hasLegacyFilter = filters.chainId || filters.selector || filters.internalId + + if (search && hasLegacyFilter) { + throw new CCIPError(400, "Cannot combine search with chainId, selector, or internalId filters.") + } +} + export const generateChainKey = (chainId: number | string, chainType: ChainType, outputKey: OutputKeyType): string => { const chainIdStr = chainId.toString() @@ -313,42 +462,90 @@ export const normalizeVersion = (version: string): string => { } // Fallback for unknown formats - console.warn(`Unknown version format: ${version}`) + logger.warn({ + message: "Unknown version format, using default", + version, + defaultVersion: "1.0.0", + }) return "1.0.0" } +/** + * Error types for API responses + */ +export enum APIErrorType { + VALIDATION_ERROR = "VALIDATION_ERROR", + SERVER_ERROR = "SERVER_ERROR", + NOT_FOUND = "NOT_FOUND", + INVALID_PARAMETER = "INVALID_PARAMETER", +} + +/** + * Standard API error response format + * All fields are required for consistency across all endpoints + */ +export interface APIError { + error: APIErrorType + message: string + requestId: string + details: Record +} + +/** + * Creates a standardized API error response + * All error responses include: error, message, requestId, and details + * + * @param error - Error type + * @param message - Error message + * @param status - HTTP status code + * @param requestId - Request ID for correlation (required) + * @param details - Additional error details (defaults to empty object) + * @returns Response object with error details + */ +export function createErrorResponse( + error: APIErrorType, + message: string, + status: number, + requestId: string, + details: Record = {} +): Response { + const errorResponse: APIError = { + error, + message, + requestId, + details, + } + + return new Response(JSON.stringify(errorResponse), { + status, + headers: sharedCommonHeaders, + }) +} + /** * Handles API errors and converts them to standardized responses * @param error - Error to handle + * @param requestId - Request ID for correlation * @returns Standardized error response */ -export const handleApiError = (error: unknown): Response => { - let errorType = "UNKNOWN_ERROR" +export const handleApiError = (error: unknown, requestId: string): Response => { + let errorType = APIErrorType.SERVER_ERROR let message = "An unexpected error occurred" let statusCode = 500 if (error instanceof CCIPError) { - errorType = "VALIDATION_ERROR" + errorType = error.statusCode === 400 ? APIErrorType.VALIDATION_ERROR : APIErrorType.SERVER_ERROR message = error.message statusCode = error.statusCode } else if (error instanceof Error) { message = error.message if (error.name === "ValidationError") { - errorType = "VALIDATION_ERROR" + errorType = APIErrorType.VALIDATION_ERROR statusCode = 400 } } - return new Response( - JSON.stringify({ - error: errorType, - message, - }), - { - status: statusCode, - headers: commonHeaders, - } - ) + return createErrorResponse(errorType, message, statusCode, requestId) } /** @@ -398,47 +595,10 @@ export const loadChainConfiguration = async ( sourceRouterAddress, } } catch (error) { - console.error("Error loading chain configuration:", error) + logger.error({ + message: "Error loading chain configuration", + error: error instanceof Error ? error.message : "Unknown error", + }) throw new CCIPError(500, "Failed to load chain configuration") } } - -/** - * Error types for API responses - */ -export enum APIErrorType { - VALIDATION_ERROR = "VALIDATION_ERROR", - SERVER_ERROR = "SERVER_ERROR", - NOT_FOUND = "NOT_FOUND", - INVALID_PARAMETER = "INVALID_PARAMETER", -} - -/** - * Standard API error response format - */ -export interface APIError { - error: APIErrorType - message: string - details?: unknown -} - -/** - * Creates a standardized API error response - * @param error - Error type - * @param message - Error message - * @param status - HTTP status code - * @param details - Additional error details - * @returns Response object with error details - */ -export function createErrorResponse(error: APIErrorType, message: string, status: number, details?: unknown): Response { - const errorResponse: APIError = { - error, - message, - ...(details ? { details } : {}), - } - - return new Response(JSON.stringify(errorResponse), { - status, - headers: commonHeaders, - }) -} diff --git a/src/lib/ccip/utils/__tests__/pool-version.test.ts b/src/lib/ccip/utils/__tests__/pool-version.test.ts new file mode 100644 index 00000000000..a62dea014c7 --- /dev/null +++ b/src/lib/ccip/utils/__tests__/pool-version.test.ts @@ -0,0 +1,123 @@ +import { describe, it, expect, jest } from "@jest/globals" + +// Mock data: tokenSymbol → directoryKey → version +const mockVersions: Record> = { + mainnet: { + "LBTC::mainnet": "2.0.0", + "LINK::mainnet": "2.0.0", + "USDC::mainnet": "2.0.0", + }, + testnet: { + "CCIP-BnM::ethereum-testnet-sepolia": "2.0.0", + "USDC::ethereum-testnet-sepolia": "2.0.0", + "LINK::ethereum-testnet-sepolia": "2.0.0", + }, +} + +// Mock the enrichment data service before importing pool-version +jest.unstable_mockModule("~/lib/ccip/graphql/services/enrichment-data-service.ts", () => ({ + fetchPoolVersion: jest.fn(async (environment: string, tokenSymbol: string, directoryKey: string) => { + const envData = mockVersions[environment] + if (!envData) return null + return envData[`${tokenSymbol}::${directoryKey}`] ?? null + }), +})) + +// Dynamic imports after mock setup (required for ESM) +const { parseMajorVersion, isV2Pool, shouldEnableCCVFeatures, getEffectivePoolVersion } = + await import("../pool-version.ts") +const { Environment } = await import("~/lib/ccip/types/index.ts") + +describe("Pool Version Utilities", () => { + describe("parseMajorVersion", () => { + it("should parse standard semver versions", () => { + expect(parseMajorVersion("1.0.0")).toBe(1) + expect(parseMajorVersion("2.0.0")).toBe(2) + expect(parseMajorVersion("1.5.1")).toBe(1) + expect(parseMajorVersion("2.1.3")).toBe(2) + expect(parseMajorVersion("10.0.0")).toBe(10) + }) + + it("should handle versions with v prefix", () => { + expect(parseMajorVersion("v1.0.0")).toBe(1) + expect(parseMajorVersion("v2.0.0")).toBe(2) + expect(parseMajorVersion("V1.5.0")).toBe(1) + }) + + it("should return 0 for invalid versions", () => { + expect(parseMajorVersion("")).toBe(0) + expect(parseMajorVersion("invalid")).toBe(0) + }) + + it("should handle edge cases", () => { + expect(parseMajorVersion("0.1.0")).toBe(0) + expect(parseMajorVersion("1")).toBe(1) + expect(parseMajorVersion("2.0")).toBe(2) + }) + }) + + describe("isV2Pool", () => { + it("should return true for v2.0+ versions", () => { + expect(isV2Pool("2.0.0")).toBe(true) + expect(isV2Pool("2.1.0")).toBe(true) + expect(isV2Pool("3.0.0")).toBe(true) + expect(isV2Pool("v2.0.0")).toBe(true) + }) + + it("should return false for v1.x versions", () => { + expect(isV2Pool("1.0.0")).toBe(false) + expect(isV2Pool("1.5.0")).toBe(false) + expect(isV2Pool("1.6.0")).toBe(false) + expect(isV2Pool("1.6.3")).toBe(false) + expect(isV2Pool("v1.6.0")).toBe(false) + }) + + it("should return false for invalid versions", () => { + expect(isV2Pool("")).toBe(false) + expect(isV2Pool("invalid")).toBe(false) + }) + }) + + describe("getEffectivePoolVersion", () => { + it("should return GraphQL version when available", async () => { + const result = await getEffectivePoolVersion(Environment.Mainnet, "LBTC", "mainnet", "1.6.0") + expect(result).toBe("2.0.0") + }) + + it("should return actual version when no GraphQL data", async () => { + const result = await getEffectivePoolVersion(Environment.Mainnet, "DAI", "mainnet", "1.6.0") + expect(result).toBe("1.6.0") + }) + + it("should handle testnet", async () => { + const result = await getEffectivePoolVersion(Environment.Testnet, "CCIP-BnM", "ethereum-testnet-sepolia", "1.6.0") + expect(result).toBe("2.0.0") + }) + + it("should return actual version for non-overridden testnet tokens", async () => { + const result = await getEffectivePoolVersion(Environment.Testnet, "GHO", "ethereum-testnet-sepolia", "1.5.0") + expect(result).toBe("1.5.0") + }) + }) + + describe("shouldEnableCCVFeatures", () => { + it("should return true for v2.0+ pools", async () => { + expect(await shouldEnableCCVFeatures(Environment.Mainnet, "LBTC", "mainnet", "1.6.0")).toBe(true) + }) + + it("should return false for v1.x pools without override", async () => { + expect(await shouldEnableCCVFeatures(Environment.Mainnet, "DAI", "mainnet", "1.6.0")).toBe(false) + }) + + it("should return true if actual version is 2.0+ even without GraphQL data", async () => { + expect(await shouldEnableCCVFeatures(Environment.Mainnet, "UNKNOWN", "mainnet", "2.0.0")).toBe(true) + }) + + it("should handle testnet correctly", async () => { + expect(await shouldEnableCCVFeatures(Environment.Testnet, "CCIP-BnM", "ethereum-testnet-sepolia", "1.6.0")).toBe( + true + ) + expect(await shouldEnableCCVFeatures(Environment.Testnet, "GHO", "ethereum-testnet-sepolia", "1.5.0")).toBe(false) + }) + }) +}) diff --git a/src/lib/ccip/utils/display-name.ts b/src/lib/ccip/utils/display-name.ts new file mode 100644 index 00000000000..adca735e25b --- /dev/null +++ b/src/lib/ccip/utils/display-name.ts @@ -0,0 +1,22 @@ +/** + * Display name utilities for CCIP chains + */ + +/** + * Derives display name from internalId by converting kebab-case or snake_case to Title Case. + * @param internalId - The internal chain identifier (e.g., "ethereum-mainnet", "binance_smart_chain-testnet") + * @returns Human-readable display name (e.g., "Ethereum Mainnet", "Binance Smart Chain Testnet") + * @example + * deriveDisplayName("ethereum-mainnet") // "Ethereum Mainnet" + * deriveDisplayName("binance_smart_chain-testnet") // "Binance Smart Chain Testnet" + */ +export function deriveDisplayName(internalId: string): string { + if (!internalId) { + return "Unknown" + } + return internalId + .split(/[-_]/) + .filter((word) => word.length > 0) // Filter empty strings to prevent double spaces + .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) + .join(" ") +} diff --git a/src/lib/ccip/utils/pool-version.ts b/src/lib/ccip/utils/pool-version.ts new file mode 100644 index 00000000000..3d8f49918b9 --- /dev/null +++ b/src/lib/ccip/utils/pool-version.ts @@ -0,0 +1,89 @@ +/** + * Pool Version Utilities + * + * Centralized utilities for handling CCIP pool version logic. + * CCV (Cross-Chain Verifiers), threshold amounts, and custom finality + * are only available for v2.0+ pools. + */ + +import { Environment } from "~/lib/ccip/types/index.ts" +import { fetchPoolVersion } from "~/lib/ccip/graphql/services/enrichment-data-service.ts" + +/** + * Minimum major version that supports CCV features + */ +const CCV_MIN_MAJOR_VERSION = 2 + +/** + * Parses a semantic version string and returns the major version number. + * Handles various formats: "2.0.0", "1.6.0", "v1.5.0", etc. + * + * @param version - Version string to parse + * @returns Major version number, or 0 if parsing fails + */ +export function parseMajorVersion(version: string): number { + if (!version) return 0 + + // Remove leading 'v' if present + const normalized = version.toLowerCase().replace(/^v/, "") + + // Extract major version from semver format + const match = normalized.match(/^(\d+)/) + if (match) { + return parseInt(match[1], 10) + } + + return 0 +} + +/** + * Checks if a pool version supports CCV features (v2.0+). + * + * @param version - Pool version string (e.g., "2.0.0", "1.6.0") + * @returns true if version is 2.0 or higher + */ +export function isV2Pool(version: string): boolean { + const majorVersion = parseMajorVersion(version) + return majorVersion >= CCV_MIN_MAJOR_VERSION +} + +/** + * Gets the effective pool version for a token on a specific chain. + * Fetches from GraphQL, falls back to actualVersion if GraphQL has no data. + * + * @param environment - Network environment + * @param tokenSymbol - Token canonical symbol (e.g., "LBTC", "LINK") + * @param directoryKey - Chain directory key (e.g., "mainnet", "arbitrum-mainnet") + * @param actualVersion - Actual pool version from reference data (fallback) + * @returns Effective pool version + */ +export async function getEffectivePoolVersion( + environment: Environment, + tokenSymbol: string, + directoryKey: string, + actualVersion: string +): Promise { + const graphqlVersion = await fetchPoolVersion(environment, tokenSymbol, directoryKey) + return graphqlVersion || actualVersion +} + +/** + * Checks if CCV features should be enabled for a token on a specific chain. + * This is the primary function services should use to determine if CCV data + * should be included in API responses. + * + * @param environment - Network environment + * @param tokenSymbol - Token canonical symbol + * @param directoryKey - Chain directory key + * @param actualPoolVersion - Actual pool version from reference data + * @returns true if CCV features should be enabled + */ +export async function shouldEnableCCVFeatures( + environment: Environment, + tokenSymbol: string, + directoryKey: string, + actualPoolVersion: string +): Promise { + const effectiveVersion = await getEffectivePoolVersion(environment, tokenSymbol, directoryKey, actualPoolVersion) + return isV2Pool(effectiveVersion) +} diff --git a/src/lib/ccip/utils/rate-limit-formatter.ts b/src/lib/ccip/utils/rate-limit-formatter.ts new file mode 100644 index 00000000000..d7431f39f31 --- /dev/null +++ b/src/lib/ccip/utils/rate-limit-formatter.ts @@ -0,0 +1,72 @@ +import type { RateLimiterConfig } from "~/lib/ccip/types/index.ts" + +/** + * Formats a rate limit value from wei to tokens + * @param value - Rate limit value in wei (as string) + * @returns Formatted string with proper number formatting + */ +export function formatRateLimit(value: string | null | undefined): string { + if (!value || value === "0") return "0" + + try { + // Convert from wei to tokens (divide by 1e18) + const numValue = BigInt(value) + const formatted = Number(numValue) / 1e18 + return formatted.toLocaleString(undefined, { maximumFractionDigits: 2 }) + } catch (error) { + console.error("Error formatting rate limit:", error) + return "0" + } +} + +/** + * Checks if a token is paused based on rate limit configuration + * A token is considered paused if the capacity is "0" + * @param rateLimit - Rate limiter configuration + * @returns True if token is paused + */ +export function isTokenPaused(rateLimit: RateLimiterConfig | null | undefined): boolean { + return rateLimit?.capacity === "0" +} + +/** + * Gets display value for a rate limit + * @param rateLimit - Rate limiter configuration + * @param isLoading - Whether data is still loading + * @returns Display string for the rate limit + */ +export function getRateLimitDisplay(rateLimit: RateLimiterConfig | null | undefined, isLoading: boolean): string { + if (isLoading) return "Loading..." + if (!rateLimit) return "N/A" + if (!rateLimit.isEnabled) return "Disabled" + return formatRateLimit(rateLimit.capacity) +} + +/** + * Gets display value for a rate limit capacity + * @param rateLimit - Rate limiter configuration + * @param isLoading - Whether data is still loading + * @returns Display string for capacity + */ +export function getRateLimitCapacityDisplay( + rateLimit: RateLimiterConfig | null | undefined, + isLoading: boolean +): string { + if (isLoading) return "Loading..." + if (!rateLimit) return "Unavailable" + if (!rateLimit.isEnabled) return "Disabled" + return formatRateLimit(rateLimit.capacity) +} + +/** + * Gets display value for a rate limit refill rate + * @param rateLimit - Rate limiter configuration + * @param isLoading - Whether data is still loading + * @returns Display string for refill rate + */ +export function getRateLimitRateDisplay(rateLimit: RateLimiterConfig | null | undefined, isLoading: boolean): string { + if (isLoading) return "Loading..." + if (!rateLimit) return "N/A" + if (!rateLimit.isEnabled) return "Disabled" + return formatRateLimit(rateLimit.rate) +} diff --git a/src/lib/codeSample/language.ts b/src/lib/codeSample/language.ts new file mode 100644 index 00000000000..24e4c3b3313 --- /dev/null +++ b/src/lib/codeSample/language.ts @@ -0,0 +1,25 @@ +export function languageBadge(language: string): string { + const l = language.toLowerCase() + if (l === "solidity" || l === "sol") return "SOL" + if (["javascript", "js", "mjs", "cjs"].includes(l)) return "JS" + if (["typescript", "ts", "mts", "cts"].includes(l)) return "TS" + if (["bash", "sh", "shell"].includes(l)) return "SH" + if (l === "go" || l === "golang") return "GO" + if (l === "json" || l === "jsonc") return "JSON" + if (l === "yaml" || l === "yml") return "YAML" + return l.slice(0, 4).toUpperCase() +} + +export function getLanguageIconSrc(language: string): string | undefined { + const l = language.toLowerCase() + // Map language names/aliases to icons in `public/images/language-icons/`. + if (l === "solidity" || l === "sol") return "/images/language-icons/solidity.svg" + if (["typescript", "ts", "mts", "cts"].includes(l)) return "/images/language-icons/typescript.svg" + if (["go", "golang"].includes(l)) return "/images/language-icons/go.svg" + if (["json", "jsonc"].includes(l)) return "/images/language-icons/json.svg" + if (l === "toml") return "/images/language-icons/toml.svg" + if (["python", "py"].includes(l)) return "/images/language-icons/python.svg" + if (["rust", "rs"].includes(l)) return "/images/language-icons/rust.svg" + if (["bash", "sh", "shell", "zsh", "terminal"].includes(l)) return "/images/language-icons/terminal.svg" + return undefined +} diff --git a/src/lib/index.ts b/src/lib/index.ts index 849fff2d239..03aced06021 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1 +1,2 @@ export * from "./clsx/clsx.ts" +export * from "./markdown/index.js" diff --git a/src/lib/languageStore.ts b/src/lib/languageStore.ts index 56ca8b34e26..0fc11a0d972 100644 --- a/src/lib/languageStore.ts +++ b/src/lib/languageStore.ts @@ -5,5 +5,5 @@ export type SupportedLanguage = "go" | "ts" // Store with localStorage persistence export const selectedLanguage = persistentAtom( "docs-language-preference", - "go" // default value + "ts" // default value ) diff --git a/src/lib/markdown/__tests__/formatters.test.ts b/src/lib/markdown/__tests__/formatters.test.ts new file mode 100644 index 00000000000..71299614d33 --- /dev/null +++ b/src/lib/markdown/__tests__/formatters.test.ts @@ -0,0 +1,359 @@ +/** + * Tests for shared markdown formatting utilities + * These are pure functions used by both build-time (generate-llms.ts) + * and runtime (CopyPageLink) markdown generation + */ + +import { describe, it, expect } from "@jest/globals" +import { + formatHeading, + formatLink, + formatBold, + formatItalic, + formatInlineCode, + formatCodeBlock, + formatBlockquote, + formatTable, + formatImage, + formatHorizontalRule, + formatUnorderedList, + formatOrderedList, + formatFrontmatter, + cleanText, + normalizeMarkdown, + unescapeMarkdown, + stripHighlightComments, + resolveUrl, +} from "../formatters.js" + +describe("Heading Formatters", () => { + it("should format h1 correctly", () => { + expect(formatHeading(1, "Title")).toBe("# Title\n\n") + }) + + it("should format h2 correctly", () => { + expect(formatHeading(2, "Subtitle")).toBe("## Subtitle\n\n") + }) + + it("should format h3-h6 correctly", () => { + expect(formatHeading(3, "Section")).toBe("### Section\n\n") + expect(formatHeading(4, "Subsection")).toBe("#### Subsection\n\n") + expect(formatHeading(5, "Minor")).toBe("##### Minor\n\n") + expect(formatHeading(6, "Smallest")).toBe("###### Smallest\n\n") + }) + + it("should handle empty headings", () => { + expect(formatHeading(1, "")).toBe("# \n\n") + }) +}) + +describe("Inline Formatters", () => { + it("should format links", () => { + expect(formatLink("Click here", "https://example.com")).toBe("[Click here](https://example.com)") + }) + + it("should format bold text", () => { + expect(formatBold("important")).toBe("**important**") + }) + + it("should format italic text", () => { + expect(formatItalic("emphasis")).toBe("*emphasis*") + }) + + it("should format inline code", () => { + expect(formatInlineCode("const x = 1")).toBe("`const x = 1`") + }) +}) + +describe("Code Block Formatter", () => { + it("should format code block with language", () => { + const code = "function test() {\n return true\n}" + const result = formatCodeBlock(code, "javascript") + expect(result).toBe("```javascript\nfunction test() {\n return true\n}\n```\n\n") + }) + + it("should format code block without language", () => { + const code = "plain text" + const result = formatCodeBlock(code) + expect(result).toBe("```\nplain text\n```\n\n") + }) + + it("should handle empty code blocks", () => { + expect(formatCodeBlock("")).toBe("```\n\n```\n\n") + }) +}) + +describe("Table Formatter", () => { + it("should format table with header", () => { + const rows = [ + ["Name", "Age"], + ["Alice", "30"], + ["Bob", "25"], + ] + const result = formatTable(rows) + + expect(result).toContain("| Name | Age |") + expect(result).toContain("| --- | --- |") + expect(result).toContain("| Alice | 30 |") + expect(result).toContain("| Bob | 25 |") + expect(result.endsWith("\n")).toBe(true) + }) + + it("should format table without header", () => { + const rows = [ + ["A", "B"], + ["C", "D"], + ] + const result = formatTable(rows, false) + + expect(result).toContain("| A | B |") + expect(result).toContain("| C | D |") + expect(result).not.toContain("| --- | --- |") + }) + + it("should handle single row table", () => { + const rows = [["Single", "Row"]] + const result = formatTable(rows) + + expect(result).toContain("| Single | Row |") + expect(result).toContain("| --- | --- |") + }) + + it("should handle empty table", () => { + expect(formatTable([])).toBe("") + }) +}) + +describe("List Formatters", () => { + it("should format unordered list", () => { + const items = ["First item", "Second item", "Third item"] + const result = formatUnorderedList(items) + + expect(result).toBe("- First item\n- Second item\n- Third item\n\n") + }) + + it("should format ordered list", () => { + const items = ["First", "Second", "Third"] + const result = formatOrderedList(items) + + expect(result).toBe("1. First\n2. Second\n3. Third\n\n") + }) + + it("should handle empty lists", () => { + expect(formatUnorderedList([])).toBe("\n\n") + expect(formatOrderedList([])).toBe("\n\n") + }) +}) + +describe("Other Formatters", () => { + it("should format blockquote", () => { + const result = formatBlockquote("Important note\nSecond line") + expect(result).toBe("> Important note\n> Second line\n\n") + }) + + it("should format horizontal rule", () => { + expect(formatHorizontalRule()).toBe("---\n\n") + }) + + it("should format image", () => { + expect(formatImage("Alt text", "/path/to/image.png")).toBe("![Alt text](/path/to/image.png)") + }) + + it("should format image with title", () => { + expect(formatImage("Alt", "/img.png", "Title")).toBe('![Alt](/img.png "Title")') + }) +}) + +describe("Frontmatter Formatter", () => { + it("should format frontmatter with simple values", () => { + const data = { + title: "Test Page", + url: "https://example.com", + extracted: "2024-01-01T00:00:00.000Z", + } + const result = formatFrontmatter(data) + + expect(result).toContain("---") + expect(result).toContain("title: Test Page") + // URLs with colons get quoted (correct YAML behavior) + expect(result).toContain('url: "https://example.com"') + expect(result).toContain('extracted: "2024-01-01T00:00:00.000Z"') + expect(result.endsWith("\n\n")).toBe(true) + }) + + it("should quote strings with special YAML characters", () => { + const data = { + title: "Title: With Colon", + description: "Has # hash", + } + const result = formatFrontmatter(data) + + expect(result).toContain('title: "Title: With Colon"') + expect(result).toContain('description: "Has # hash"') + }) + + it("should handle boolean and number values", () => { + const data = { + published: true, + count: 42, + } + const result = formatFrontmatter(data) + + expect(result).toContain("published: true") + expect(result).toContain("count: 42") + }) +}) + +describe("Text Utilities", () => { + it("should clean text with encoding issues", () => { + expect(cleanText("’")).toBe("'") + expect(cleanText("“test â€")).toBe('"test "') + }) + + it("should normalize whitespace", () => { + expect(cleanText(" hello world ")).toBe("hello world") + expect(cleanText("test\n\n\nmore")).toBe("test more") + }) + + it("should remove zero-width characters", () => { + expect(cleanText("test\u200B\u200C\u200Dtext")).toBe("testtext") + // BOM character gets normalized to space by whitespace normalization + expect(cleanText("hello\uFEFFworld")).toBe("hello world") + }) + + it("should handle smart quotes", () => { + // Left/right single quotes → straight apostrophes + expect(cleanText("\u2018test\u2019")).toBe("'test'") + // Left/right double quotes → straight quotes + expect(cleanText("\u201Ctest\u201D")).toBe('"test"') + }) +}) + +describe("Markdown Normalization", () => { + it("should normalize line endings", () => { + const markdown = "Line 1\r\nLine 2\r\nLine 3" + expect(normalizeMarkdown(markdown)).toBe("Line 1\nLine 2\nLine 3") + }) + + it("should normalize multiple blank lines", () => { + const markdown = "Paragraph 1\n\n\n\nParagraph 2" + expect(normalizeMarkdown(markdown)).toBe("Paragraph 1\n\nParagraph 2") + }) + + it("should normalize list markers", () => { + const markdown = "* Item 1\n+ Item 2\n- Item 3" + expect(normalizeMarkdown(markdown)).toBe("- Item 1\n- Item 2\n- Item 3") + }) + + it("should trim trailing whitespace", () => { + const markdown = "Line with spaces \nAnother line " + const result = normalizeMarkdown(markdown) + expect(result).toBe("Line with spaces\nAnother line") + }) +}) + +describe("Unescape Markdown", () => { + it("should unescape markdown characters outside code blocks", () => { + const text = "Test \\_underscore\\_ and \\[brackets\\]" + expect(unescapeMarkdown(text)).toBe("Test _underscore_ and [brackets]") + }) + + it("should preserve escaping inside code blocks", () => { + const text = "```\n\\_code\\_\n```" + expect(unescapeMarkdown(text)).toBe("```\n\\_code\\_\n```") + }) + + it("should remove prettier-ignore comments", () => { + const text = "Line 1\n{/* prettier-ignore */}\nLine 2" + expect(unescapeMarkdown(text)).toBe("Line 1\nLine 2") + }) + + it("should handle multiple code blocks", () => { + const text = "Before\n```\ncode1\n```\nMiddle\n```\ncode2\n```\nAfter" + const result = unescapeMarkdown(text) + expect(result).toContain("code1") + expect(result).toContain("code2") + }) +}) + +describe("Strip Highlight Comments", () => { + it("should remove highlight-line comments", () => { + const code = "const x = 1 // highlight-line\nconst y = 2" + expect(stripHighlightComments(code)).toBe("const x = 1\nconst y = 2") + }) + + it("should remove highlight-start and highlight-end", () => { + const code = "line1 // highlight-start\nline2\nline3 // highlight-end" + expect(stripHighlightComments(code)).toBe("line1\nline2\nline3") + }) + + it("should handle mixed whitespace", () => { + const code = "test // highlight-line \nnext" + // Removes comment but preserves leading whitespace on the line + expect(stripHighlightComments(code)).toBe("test \nnext") + }) + + it("should preserve non-highlight comments", () => { + const code = "const x = 1 // regular comment\nconst y = 2 // highlight-line\nconst z = 3 // another comment" + const result = stripHighlightComments(code) + expect(result).toContain("// regular comment") + expect(result).toContain("// another comment") + expect(result).not.toContain("highlight-line") + }) +}) + +describe("URL Resolution", () => { + it("should preserve absolute URLs", () => { + expect(resolveUrl("https://example.com/path", "https://base.com")).toBe("https://example.com/path") + expect(resolveUrl("http://example.com", "https://base.com")).toBe("http://example.com") + }) + + it("should resolve relative URLs with base", () => { + expect(resolveUrl("/path/to/page", "https://example.com")).toBe("https://example.com/path/to/page") + }) + + it("should handle URLs without base (server-side)", () => { + // When window is not defined (Node.js), base defaults to empty string + const result = resolveUrl("https://example.com") + expect(result).toBe("https://example.com") + }) + + it("should handle invalid URLs gracefully", () => { + // If URL constructor fails, return original + const result = resolveUrl("not-a-valid-url", "") + expect(result).toBe("not-a-valid-url") + }) +}) + +describe("Integration Tests", () => { + it("should format a complete markdown document", () => { + const title = formatHeading(1, "Documentation") + const intro = "This is an introduction.\n\n" + const code = formatCodeBlock('console.log("Hello")', "javascript") + const list = formatUnorderedList(["Feature 1", "Feature 2"]) + + const result = title + intro + code + list + + expect(result).toContain("# Documentation") + expect(result).toContain("introduction") + expect(result).toContain("```javascript") + expect(result).toContain("- Feature 1") + }) + + it("should produce consistent output for same input", () => { + const data = { title: "Test", url: "https://test.com" } + + const result1 = formatFrontmatter(data) + const result2 = formatFrontmatter(data) + + expect(result1).toBe(result2) + }) + + it("should handle text cleaning pipeline", () => { + const dirtyText = " ’test “quotes†with spaces " + const cleaned = cleanText(dirtyText) + const normalized = normalizeMarkdown(cleaned) + + expect(normalized).toBe('\'test "quotes" with spaces') + }) +}) diff --git a/src/lib/markdown/__tests__/transformMarkdown.test.ts b/src/lib/markdown/__tests__/transformMarkdown.test.ts new file mode 100644 index 00000000000..b564bc74200 --- /dev/null +++ b/src/lib/markdown/__tests__/transformMarkdown.test.ts @@ -0,0 +1,112 @@ +/** + * Tests for markdown transformation + */ + +import { describe, it, expect } from "@jest/globals" +import { transformMarkdown } from "@lib/markdown/transformMarkdown.js" +import { extractFrontmatter, titleCase, getPageLanguage } from "@lib/markdown/utils.js" + +describe("transformMarkdown", () => { + it("should transform basic markdown", async () => { + const markdown = `# Hello World + +This is a test. + +\`\`\`javascript +console.log("test") +\`\`\` +` + + const result = await transformMarkdown(markdown, "/fake/path.mdx") + expect(result).toContain("# Hello World") + expect(result).toContain("This is a test") + expect(result).toContain("```javascript") + }) + + it("should handle code blocks", async () => { + const markdown = `\`\`\`solidity +contract Test { + // comment +} +\`\`\` +` + + const result = await transformMarkdown(markdown, "/fake/path.mdx") + expect(result).toContain("```solidity") + expect(result).toContain("contract Test") + }) + + it("should preserve links", async () => { + const markdown = `[Link text](/some/path)` + + const result = await transformMarkdown(markdown, "/fake/path.mdx") + expect(result).toContain("[Link text](/some/path)") + }) + + it("should handle tables", async () => { + const markdown = `| Col1 | Col2 | +|------|------| +| A | B |` + + const result = await transformMarkdown(markdown, "/fake/path.mdx") + expect(result).toContain("Col1") + expect(result).toContain("Col2") + }) +}) + +describe("extractFrontmatter", () => { + it("should extract title from frontmatter", () => { + const raw = `--- +title: "Test Page" +--- + +Content here` + + const result = extractFrontmatter(raw) + expect(result.fmTitle).toBe("Test Page") + expect(result.body).toContain("Content here") + }) + + it("should handle missing frontmatter", () => { + const raw = `Content without frontmatter` + + const result = extractFrontmatter(raw) + expect(result.fmTitle).toBeUndefined() + expect(result.body).toBe(raw) + }) + + it("should extract sdkLang from frontmatter", () => { + const raw = `--- +title: "Test" +sdkLang: "go" +--- + +Content` + + const result = extractFrontmatter(raw) + expect(result.sdkLang).toBe("go") + }) +}) + +describe("titleCase", () => { + it("should convert to title case", () => { + expect(titleCase("hello-world")).toBe("Hello World") + expect(titleCase("test_file")).toBe("Test File") + expect(titleCase("already Title")).toBe("Already Title") + }) +}) + +describe("getPageLanguage", () => { + it("should detect language from filename", () => { + expect(getPageLanguage("/path/to/file-go.mdx")).toBe("go") + expect(getPageLanguage("/path/to/file-ts.mdx")).toBe("ts") + }) + + it("should return frontmatter language if present", () => { + expect(getPageLanguage("/path/to/file.mdx", "typescript")).toBe("typescript") + }) + + it("should return null for common files", () => { + expect(getPageLanguage("/path/to/file.mdx")).toBeNull() + }) +}) diff --git a/src/lib/markdown/componentHandlers.ts b/src/lib/markdown/componentHandlers.ts new file mode 100644 index 00000000000..47cd21c125f --- /dev/null +++ b/src/lib/markdown/componentHandlers.ts @@ -0,0 +1,526 @@ +/** + * Handlers for custom MDX components + */ + +import fs from "fs" +import path from "path" +import type { Parent, Literal, Node } from "unist" +import type { MdxJsxNode, ComponentContext } from "./types.js" +import { + calculateNetworkFeesForTokenMechanismDirect, + calculateMessagingNetworkFeesDirect, + TokenMechanism, +} from "../../config/data/ccip/index.js" + +/** + * Load CcipCommon callout mapping dynamically from CcipCommon.astro + * @returns Mapping of callout names to file paths + */ +export function loadCcipCommonMapping(): Record { + try { + const astroFilePath = path.resolve("src/features/ccip/CcipCommon.astro") + const astroContent = fs.readFileSync(astroFilePath, "utf-8") + + // First, build a map of Component names to file paths from imports + const importRegex = /import\s+(\w+)\s+from\s+["'](.+?)["']/g + const componentToFile: Record = {} + + for (const match of astroContent.matchAll(importRegex)) { + const [, componentName, filePath] = match + const cleanPath = filePath.replace(/^\.\//, "") + componentToFile[componentName] = cleanPath + } + + // Then, parse the conditional statements to map callout names to component names + const conditionalRegex = /callout\s+===\s+["'](\w+)["']\s+&&\s+<(\w+)/g + const mapping: Record = {} + + for (const match of astroContent.matchAll(conditionalRegex)) { + const [, calloutName, componentName] = match + const filePath = componentToFile[componentName] + if (filePath) { + mapping[calloutName] = filePath + } + } + + return mapping + } catch (e) { + console.warn("Failed to load CcipCommon mapping:", e) + return {} + } +} + +/** + * Handle CcipCommon component - inline the referenced markdown content + * @param node - AST node + * @param parent - Parent node + * @param index - Index in parent's children + * @param context - Component context + * @returns New index or void + */ +export function handleCcipCommon( + node: MdxJsxNode, + parent: Parent, + index: number, + context: ComponentContext +): number | void { + try { + const calloutAttr = node.attributes?.find((a) => a.name === "callout") + const calloutValue = typeof calloutAttr?.value === "string" ? calloutAttr.value : undefined + + if (calloutValue) { + // Load mapping dynamically from CcipCommon.astro + const calloutFileMap = loadCcipCommonMapping() + const fileName = calloutFileMap[calloutValue] + + if (fileName) { + const calloutPath = path.resolve("src/features/ccip", fileName) + + if (fs.existsSync(calloutPath)) { + let calloutContent = fs.readFileSync(calloutPath, "utf-8") + + // Strip frontmatter if present + if (calloutContent.trim().startsWith("---")) { + calloutContent = calloutContent.replace(/^---\s*\n[\s\S]*?\n---\s*\n/, "") + } + + // Strip import statements + calloutContent = calloutContent.replace(/^import\s+.+$/gm, "").trim() + + // Parse the callout markdown and insert it + const calloutTree = context.processor.parse(calloutContent) + if (calloutTree && calloutTree.children) { + parent.children.splice(index, 1, ...calloutTree.children) + return index + calloutTree.children.length + } + } + } + } + } catch (e) { + console.warn(`Failed to process CcipCommon in ${context.mdxAbsPath}:`, e) + } +} + +/** + * Handle CodeHighlightBlock component - inline imported code + * @param node - AST node + * @param parent - Parent node + * @param index - Index in parent's children + * @param context - Component context + * @returns New index or void + */ +export function handleCodeHighlightBlock( + node: MdxJsxNode, + parent: Parent, + index: number, + context: ComponentContext +): number | void { + try { + const codeVarAttr = node.attributes?.find((a) => a.name === "code") + const codeVarName = (codeVarAttr?.value as { data?: { estree?: { body?: { expression?: { name?: string } }[] } } }) + ?.data?.estree?.body?.[0]?.expression?.name + + if (codeVarName) { + const importRegex = new RegExp(`import\\s+${codeVarName}\\s+from\\s+['"](.+?)['"]`) + const match = context.markdown.match(importRegex) + + if (match) { + const importPath = match[1].split("?")[0] // Strip "?raw" and other query params + const codeAbsPath = path.resolve(path.dirname(context.mdxAbsPath), importPath) + let codeContent = fs.readFileSync(codeAbsPath, "utf-8") + + // Strip highlighter comments + codeContent = codeContent + .split("\n") + .map((line) => line.replace(/\s*\/\/\s*highlight-(line|start|end)/, "")) + .join("\n") + + const langAttr = node.attributes?.find((a) => a.name === "lang") + const titleAttr = node.attributes?.find((a) => a.name === "title") + + const newNodes: Node[] = [] + + if (titleAttr) { + const title = `Code snippet for ${titleAttr.value}:` + newNodes.push({ type: "paragraph", children: [{ type: "text", value: title } as Literal] } as Parent) + } + + newNodes.push({ + type: "code", + lang: langAttr?.value || "", + value: codeContent.trim(), + } as Literal) + + parent.children.splice(index, 1, ...newNodes) + return index + newNodes.length + } + } + } catch (e) { + console.warn(`Failed to process CodeHighlightBlock in ${context.mdxAbsPath}:`, e) + } +} + +/** + * Handle CodeHighlightBlockMulti component - inline language-specific code + * @param node - AST node + * @param parent - Parent node + * @param index - Index in parent's children + * @param context - Component context + * @returns New index or void + */ +export function handleCodeHighlightBlockMulti( + node: MdxJsxNode, + parent: Parent, + index: number, + context: ComponentContext +): number | void { + try { + const languagesAttr = node.attributes?.find((a) => a.name === "languages") + + if (languagesAttr && context.targetLanguage) { + // Extract the code variable name for the target language + // The structure is: languages={{ go: { code: goVar }, ts: { code: tsVar } }} + const attrValue = languagesAttr.value + const estreeBody = + typeof attrValue === "object" && attrValue && "data" in attrValue + ? attrValue.data?.estree?.body?.[0] + : undefined + const languagesObj = + estreeBody && typeof estreeBody === "object" && "expression" in estreeBody + ? (estreeBody.expression as { properties?: unknown })?.properties + : undefined + + if (languagesObj) { + for (const langProp of languagesObj as Record[]) { + const langKey = + (langProp.key as { name?: string; value?: string })?.name || + (langProp.key as { name?: string; value?: string })?.value + + if (langKey === context.targetLanguage) { + const codeProperty = (langProp.value as { properties?: Record[] })?.properties?.find( + (p) => (p.key as { name?: string })?.name === "code" + ) + const codeVarName = (codeProperty?.value as { name?: string })?.name + + if (codeVarName) { + // Find the import statement for this variable + const importRegex = new RegExp(`import\\s+${codeVarName}\\s+from\\s+['"](.+?)['"]`) + const match = context.markdown.match(importRegex) + + if (match) { + const importPath = match[1].split("?")[0] // Strip "?raw" + const codeAbsPath = path.resolve(path.dirname(context.mdxAbsPath), importPath) + let codeContent = fs.readFileSync(codeAbsPath, "utf-8") + + // Strip highlighter comments + codeContent = codeContent + .split("\n") + .map((line) => line.replace(/\s*\/\/\s*highlight-(line|start|end)/, "")) + .join("\n") + + // Infer language from file extension + const fileExt = path.extname(codeAbsPath).slice(1) + const lang = fileExt || context.targetLanguage + + // Create a code block for this language + const newNodes: Node[] = [] + newNodes.push({ + type: "code", + lang, + value: codeContent.trim(), + } as Literal) + + parent.children.splice(index, 1, ...newNodes) + return index + newNodes.length + } + } + break + } + } + } + } + } catch (e) { + console.warn(`Failed to process CodeHighlightBlockMulti in ${context.mdxAbsPath}:`, e) + } +} + +/** + * Handle CopyText component - extract text attribute + * @param node - AST node + * @param parent - Parent node + * @param index - Index in parent's children + * @param context - Component context + * @returns New index or void + */ +export function handleCopyText(node: MdxJsxNode, parent: Parent, index: number): number | void { + const textAttr = node.attributes?.find((a) => a.name === "text") + + if (textAttr?.value) { + const attrValue = textAttr.value + const textValue = + typeof attrValue === "string" + ? attrValue + : typeof attrValue === "object" && attrValue && "value" in attrValue + ? attrValue.value + : "" + + parent.children[index] = { type: "text", value: textValue } as Literal + } +} + +/** + * Handle generic MDX div elements - extract children + * @param node - AST node + * @param parent - Parent node + * @param index - Index in parent's children + * @param context - Component context + * @returns New index or void + */ +export function handleDiv(node: MdxJsxNode, parent: Parent, index: number): number | void { + // Replace the
element with just its children + if ((node as Parent).children) { + parent.children.splice(index, 1, ...(node as Parent).children) + return index + } +} + +/** + * Handle Aside component - convert to markdown blockquote + * @param node - AST node + * @param parent - Parent node + * @param index - Index in parent's children + * @param context - Component context + * @returns New index or void + */ +export function handleAside(node: MdxJsxNode, parent: Parent, index: number, context: ComponentContext): number | void { + try { + const typeAttr = node.attributes?.find((a) => a.name === "type") + const titleAttr = node.attributes?.find((a) => a.name === "title") + + const type = typeof typeAttr?.value === "string" ? typeAttr.value.toUpperCase() : "NOTE" + const title = typeof titleAttr?.value === "string" ? titleAttr.value : "" + + // Get children content + const children = (node as Parent).children || [] + + if (children.length === 0) { + return + } + + // Create blockquote header + const header = title ? `**${type}: ${title}**` : `**${type}**` + + // Create new nodes for blockquote + const newNodes: Node[] = [] + + // Add blockquote paragraph with header + newNodes.push({ + type: "blockquote", + children: [ + { + type: "paragraph", + children: [{ type: "text", value: header } as Literal], + } as Parent, + { + type: "paragraph", + children: [{ type: "text", value: "" } as Literal], + } as Parent, + ...children, + ], + } as Parent) + + parent.children.splice(index, 1, ...newNodes) + return index + newNodes.length + } catch (e) { + console.warn(`Failed to process Aside in ${context.mdxAbsPath}:`, e) + } +} + +/** + * Handle ClickToZoom component - convert to markdown image + * @param node - AST node + * @param parent - Parent node + * @param index - Index in parent's children + * @param context - Component context + * @returns New index or void + */ +export function handleClickToZoom( + node: MdxJsxNode, + parent: Parent, + index: number, + context: ComponentContext +): number | void { + try { + const srcAttr = node.attributes?.find((a) => a.name === "src") + const altAttr = node.attributes?.find((a) => a.name === "alt") + + const src = typeof srcAttr?.value === "string" ? srcAttr.value : "" + const alt = typeof altAttr?.value === "string" ? altAttr.value : "Image" + + if (!src) return + + // Create markdown image node + parent.children[index] = { + type: "image", + url: src, + alt, + } as Literal & { url: string; alt: string } + } catch (e) { + console.warn(`Failed to process ClickToZoom in ${context.mdxAbsPath}:`, e) + } +} + +/** + * Handle CodeSample component - generate Remix link or inline code + * @param node - AST node + * @param parent - Parent node + * @param index - Index in parent's children + * @param context - Component context + * @returns New index or void + */ +export function handleCodeSample( + node: MdxJsxNode, + parent: Parent, + index: number, + context: ComponentContext +): number | void { + try { + const srcAttr = node.attributes?.find((a) => a.name === "src") + const showButtonOnlyAttr = node.attributes?.find((a) => a.name === "showButtonOnly") + + const src = typeof srcAttr?.value === "string" ? srcAttr.value : "" + + // showButtonOnly is a boolean attribute - check for its presence or explicit value + let showButtonOnly = false + if (showButtonOnlyAttr) { + if ( + typeof showButtonOnlyAttr.value === "object" && + showButtonOnlyAttr.value && + "value" in showButtonOnlyAttr.value + ) { + showButtonOnly = Boolean(showButtonOnlyAttr.value.value) + } else if (showButtonOnlyAttr.value === undefined || showButtonOnlyAttr.value === null) { + // Attribute present without value means true + showButtonOnly = true + } + } + + if (!src) return + + if (showButtonOnly) { + // Generate Remix link + const fileName = path.basename(src) + const remixUrl = `https://remix.ethereum.org/#url=https://docs.chain.link/${src}` + + parent.children[index] = { + type: "paragraph", + children: [ + { + type: "link", + url: remixUrl, + children: [{ type: "text", value: `Open ${fileName} in Remix` } as Literal], + } as Parent & { url: string }, + ], + } as Parent + } else { + // Try to inline the code + const publicPath = path.join(process.cwd(), "public", src) + const possiblePaths = [publicPath, path.resolve(src), path.join(process.cwd(), "src", src)] + + let codeContent: string | null = null + for (const p of possiblePaths) { + if (fs.existsSync(p)) { + codeContent = fs.readFileSync(p, "utf-8") + break + } + } + + if (codeContent) { + // Detect language from file extension + const ext = path.extname(src).slice(1) + const lang = ext || "text" + + parent.children[index] = { + type: "code", + lang, + value: codeContent.trim(), + } as Literal & { lang: string } + } else { + // Fallback to link if file not found + const fileName = path.basename(src) + parent.children[index] = { + type: "paragraph", + children: [ + { + type: "text", + value: `Code sample: ${fileName} (file not found at build time)`, + } as Literal, + ], + } as Parent + } + } + } catch (e) { + console.warn(`Failed to process CodeSample in ${context.mdxAbsPath}:`, e) + } +} + +/** + * Handle Billing component - generate markdown table with CCIP network fees + * @param node - AST node + * @param parent - Parent node + * @param index - Index in parent's children + * @param context - Component context + * @returns New index or void + */ +export function handleBilling( + node: MdxJsxNode, + parent: Parent, + index: number, + context: ComponentContext +): number | void { + try { + // Calculate fees using the same logic as Billing.astro + const lockAndUnlockAllLanes = calculateNetworkFeesForTokenMechanismDirect(TokenMechanism.LockAndUnlock, "allLanes") + const restFromEthereum = calculateNetworkFeesForTokenMechanismDirect(TokenMechanism.BurnAndMint, "fromEthereum") + const restToEthereum = calculateNetworkFeesForTokenMechanismDirect(TokenMechanism.BurnAndMint, "toEthereum") + const restMechanismNonEthereum = calculateNetworkFeesForTokenMechanismDirect( + TokenMechanism.BurnAndMint, + "nonEthereum" + ) + const messagingFeesFromToEthereum = calculateMessagingNetworkFeesDirect("fromToEthereum") + const messagingFeesNonEthereum = calculateMessagingNetworkFeesDirect("nonEthereum") + + // Generate markdown table + const tableRows = [ + "| Use case | Token Pool Mechanism | Lanes | LINK | Others |", + "|----------|----------------------|-------|------|--------|", + `| Token Transfers / Programmable Token Transfers | Lock and Unlock | All Lanes | ${lockAndUnlockAllLanes.linkFee} | ${lockAndUnlockAllLanes.gasTokenFee} |`, + `| Token Transfers / Programmable Token Transfers | Lock and Mint / Burn and Mint / Burn and Unlock | Non-Ethereum | ${restMechanismNonEthereum.linkFee} | ${restMechanismNonEthereum.gasTokenFee} |`, + `| Token Transfers / Programmable Token Transfers | Lock and Mint / Burn and Mint / Burn and Unlock | From: Ethereum | ${restFromEthereum.linkFee} | ${restFromEthereum.gasTokenFee} |`, + `| Token Transfers / Programmable Token Transfers | Lock and Mint / Burn and Mint / Burn and Unlock | To: Ethereum | ${restToEthereum.linkFee} | ${restToEthereum.gasTokenFee} |`, + `| Messaging | N/A | Non-Ethereum | ${messagingFeesNonEthereum.linkFee} | ${messagingFeesNonEthereum.gasTokenFee} |`, + `| Messaging | N/A | From/To: Ethereum | ${messagingFeesFromToEthereum.linkFee} | ${messagingFeesFromToEthereum.gasTokenFee} |`, + ] + + const markdownTable = tableRows.join("\n") + + // Parse the table markdown and insert it + const tableTree = context.processor.parse(markdownTable) + if (tableTree && tableTree.children) { + parent.children.splice(index, 1, ...tableTree.children) + return index + tableTree.children.length + } + } catch (e) { + console.warn(`Failed to process Billing in ${context.mdxAbsPath}:`, e) + // Fallback: replace with a note about the table + parent.children[index] = { + type: "paragraph", + children: [ + { + type: "text", + value: "(Network fee table - see https://docs.chain.link/ccip/billing for details)", + } as Literal, + ], + } as Parent + } +} diff --git a/src/lib/markdown/formatters.ts b/src/lib/markdown/formatters.ts new file mode 100644 index 00000000000..73161aa8a4b --- /dev/null +++ b/src/lib/markdown/formatters.ts @@ -0,0 +1,240 @@ +/** + * Shared markdown formatting utilities + * Used by both build-time (generate-llms.ts) and runtime (CopyPageLink) markdown generation + */ + +/** + * Format a heading at the specified level + */ +export function formatHeading(level: 1 | 2 | 3 | 4 | 5 | 6, text: string): string { + const hashes = "#".repeat(level) + return `${hashes} ${text}\n\n` +} + +/** + * Format a link + */ +export function formatLink(text: string, url: string): string { + return `[${text}](${url})` +} + +/** + * Format bold text + */ +export function formatBold(text: string): string { + return `**${text}**` +} + +/** + * Format italic text + */ +export function formatItalic(text: string): string { + return `*${text}*` +} + +/** + * Format inline code + */ +export function formatInlineCode(text: string): string { + return `\`${text}\`` +} + +/** + * Format a code block with optional language + */ +export function formatCodeBlock(code: string, language = ""): string { + return `\`\`\`${language}\n${code}\n\`\`\`\n\n` +} + +/** + * Format a blockquote + */ +export function formatBlockquote(text: string): string { + const lines = text.split("\n").filter((line) => line.trim()) + return lines.map((line) => `> ${line}`).join("\n") + "\n\n" +} + +/** + * Format a horizontal rule + */ +export function formatHorizontalRule(): string { + return "---\n\n" +} + +/** + * Format an unordered list + */ +export function formatUnorderedList(items: string[]): string { + return items.map((item) => `- ${item}`).join("\n") + "\n\n" +} + +/** + * Format an ordered list + */ +export function formatOrderedList(items: string[]): string { + return items.map((item, index) => `${index + 1}. ${item}`).join("\n") + "\n\n" +} + +/** + * Format a markdown table + * @param rows - Array of rows, where each row is an array of cell values + * @param hasHeader - Whether the first row should be treated as a header (default: true) + */ +export function formatTable(rows: string[][], hasHeader = true): string { + if (rows.length === 0) return "" + + let markdown = "" + const firstRow = rows[0] + + // Header row + markdown += `| ${firstRow.join(" | ")} |\n` + + // Separator row + if (hasHeader) { + markdown += `| ${firstRow.map(() => "---").join(" | ")} |\n` + } + + // Data rows (skip first if it's a header) + const dataRows = hasHeader ? rows.slice(1) : rows + dataRows.forEach((row) => { + // Pad rows to match header length + const paddedRow = [...row] + while (paddedRow.length < firstRow.length) { + paddedRow.push("") + } + markdown += `| ${paddedRow.join(" | ")} |\n` + }) + + return `${markdown}\n` +} + +/** + * Format an image + */ +export function formatImage(alt: string, src: string, title?: string): string { + const titlePart = title ? ` "${title}"` : "" + return `![${alt}](${src}${titlePart})` +} + +/** + * Format YAML frontmatter + */ +export function formatFrontmatter(data: Record): string { + const lines = ["---"] + + for (const [key, value] of Object.entries(data)) { + if (typeof value === "string" && (value.includes(":") || value.includes("#"))) { + // Quote strings that contain special YAML characters + lines.push(`${key}: "${value}"`) + } else if (typeof value === "string") { + lines.push(`${key}: ${value}`) + } else { + lines.push(`${key}: ${value}`) + } + } + + lines.push("---", "", "") + return lines.join("\n") +} + +/** + * Clean and normalize text content + * Fixes common encoding issues and normalizes whitespace + */ +export function cleanText(text: string): string { + return ( + text + // Fix common encoding issues + .replace(/’/g, "'") + .replace(/“/g, '"') + .replace(/â€/g, '"') + .replace(/…/g, "...") + .replace(/â€"/g, "—") + .replace(/â€"/g, "–") + // Also handle actual smart quotes (using Unicode escapes for clarity) + .replace(/[\u2018\u2019]/g, "'") // ' and ' + .replace(/[\u201C\u201D]/g, '"') // " and " + // Normalize whitespace + .replace(/\s+/g, " ") + .replace(/\n\s+\n/g, "\n\n") + // Remove zero-width characters + .replace(/[\u200B-\u200D\uFEFF]/g, "") + .trim() + ) +} + +/** + * Normalize markdown for comparison/consistency + * Useful for testing that different markdown generators produce similar output + */ +export function normalizeMarkdown(markdown: string): string { + return ( + markdown + // Normalize line endings + .replace(/\r\n/g, "\n") + // Normalize multiple blank lines to single blank line + .replace(/\n{3,}/g, "\n\n") + // Normalize whitespace at end of lines + .replace(/[ \t]+$/gm, "") + // Normalize list markers + .replace(/^[*+-]\s+/gm, "- ") + .trim() + ) +} + +/** + * Unescape markdown characters for plain text + * Useful when generating markdown that will be read as plain text + */ +export function unescapeMarkdown(text: string): string { + let inFence = false + return text + .split("\n") + .map((line) => { + const trimmed = line.trim() + if (trimmed.startsWith("```") || trimmed.startsWith("~~~")) { + inFence = !inFence + return line + } + if (inFence) return line + return line + .replace(/\\_/g, "_") + .replace(/\\\[/g, "[") + .replace(/\\\]/g, "]") + .replace(/\\\(/g, "(") + .replace(/\\\)/g, ")") + }) + .filter((line) => line.trim() !== "{/* prettier-ignore */}") + .join("\n") +} + +/** + * Strip highlighter comments from code + * Removes // highlight-line, // highlight-start, // highlight-end + */ +export function stripHighlightComments(code: string): string { + return code + .split("\n") + .map((line) => line.replace(/ *\/\/\s*highlight-(line|start|end)/, "")) + .join("\n") +} + +/** + * Resolve relative URL to absolute URL + */ +export function resolveUrl(url: string, baseUrl = typeof window !== "undefined" ? window.location.origin : ""): string { + if (url.startsWith("http://") || url.startsWith("https://")) { + return url + } + + if (url.startsWith("/")) { + return `${baseUrl}${url}` + } + + // For relative URLs, try to resolve them + try { + return new URL(url, baseUrl).href + } catch { + return url + } +} diff --git a/src/lib/markdown/index.ts b/src/lib/markdown/index.ts new file mode 100644 index 00000000000..f3342c8a4fa --- /dev/null +++ b/src/lib/markdown/index.ts @@ -0,0 +1,6 @@ +/** + * Markdown utilities for Chainlink documentation + * Shared between build-time and runtime markdown generation + */ + +export * from "./formatters.js" diff --git a/src/lib/markdown/rehypeCodeSampleFences.ts b/src/lib/markdown/rehypeCodeSampleFences.ts new file mode 100644 index 00000000000..4d2cc70fa69 --- /dev/null +++ b/src/lib/markdown/rehypeCodeSampleFences.ts @@ -0,0 +1,141 @@ +import { visit } from "unist-util-visit" + +import { getLanguageIconSrc, languageBadge } from "../codeSample/language.js" + +function toCamelCaseDataAttr(attr: string): string { + // "data-filename" -> "dataFilename" + return attr.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase()) +} + +function getProp(node: any, attr: string): unknown { + if (!node?.properties) return undefined + return node.properties[attr] ?? node.properties[toCamelCaseDataAttr(attr)] +} + +function deleteProp(node: any, attr: string): void { + if (!node?.properties) return + delete node.properties[attr] + delete node.properties[toCamelCaseDataAttr(attr)] +} + +function normalizeClassName(className: unknown): string[] { + if (!className) return [] + if (Array.isArray(className)) return className.map(String) + return String(className) + .split(/\s+/) + .map((c) => c.trim()) + .filter(Boolean) +} + +/** + * Convert `.code-sample[data-filename]` wrappers (created in remark) into full + * CodeSample-style blocks by inserting the header markup and adjusting the + * contained `
` for shared styling + copy-button behavior.
+ */
+export default function rehypeCodeSampleFences() {
+  return (tree: unknown) => {
+    visit(tree as any, "element", (node: any, index: number | undefined, parent: any) => {
+      if (!node || node.tagName !== "div") return
+
+      const classes = normalizeClassName(node.properties?.className)
+      if (!classes.includes("code-sample")) return
+
+      const filenameRaw = getProp(node, "data-filename")
+      const filename = typeof filenameRaw === "string" ? filenameRaw.trim() : ""
+      if (!filename) return
+
+      // Avoid double-inserting if this already has a header.
+      const hasHeader =
+        Array.isArray(node.children) &&
+        node.children.some(
+          (c: any) =>
+            c?.type === "element" &&
+            c?.tagName === "div" &&
+            normalizeClassName(c?.properties?.className).includes("code-sample__header")
+        )
+      if (hasHeader) return
+
+      const preEl =
+        Array.isArray(node.children) && node.children.find((c: any) => c?.type === "element" && c?.tagName === "pre")
+      if (!preEl) return
+
+      const languageRaw = getProp(node, "data-language") ?? getProp(preEl, "data-language")
+      const language = typeof languageRaw === "string" && languageRaw.trim() ? languageRaw.trim() : "text"
+      const languageKey = language.toLowerCase()
+      const iconSrc = getLanguageIconSrc(languageKey)
+
+      // Update the 
 node to match CodeSample behavior
+      const existing = normalizeClassName(preEl.properties?.className)
+      preEl.properties = preEl.properties || {}
+      preEl.properties.className = Array.from(
+        new Set([...existing, "code-sample__pre", "code-sample__pre--with-header"])
+      )
+      preEl.properties["data-no-copy-button"] = ""
+
+      const langSpan: any = {
+        type: "element",
+        tagName: "span",
+        properties: {
+          className: ["code-sample__lang", ...(iconSrc ? ["code-sample__lang--icon"] : [])],
+          "aria-hidden": "true",
+        },
+        children: iconSrc
+          ? [
+              {
+                type: "element",
+                tagName: "img",
+                properties: { className: ["code-sample__lang-icon"], src: iconSrc, alt: "" },
+                children: [],
+              },
+            ]
+          : [{ type: "text", value: languageBadge(languageKey) }],
+      }
+
+      const filenameSpan: any = {
+        type: "element",
+        tagName: "span",
+        properties: { className: ["code-sample__filename"], title: filename },
+        children: [{ type: "text", value: filename }],
+      }
+
+      const headerLeft: any = {
+        type: "element",
+        tagName: "div",
+        properties: { className: ["code-sample__header-left"] },
+        children: [langSpan, filenameSpan],
+      }
+
+      const copyButton: any = {
+        type: "element",
+        tagName: "button",
+        properties: { type: "button", className: ["code-sample__copy-button"], "aria-label": "Copy code" },
+        children: [
+          {
+            type: "element",
+            tagName: "img",
+            properties: { src: "/assets/icons/copyIcon.svg", alt: "Copy code", width: "16", height: "16" },
+            children: [],
+          },
+        ],
+      }
+
+      const header: any = {
+        type: "element",
+        tagName: "div",
+        properties: { className: ["code-sample__header"] },
+        children: [headerLeft, copyButton],
+      }
+
+      const wrapper: any = {
+        type: "element",
+        tagName: "div",
+        properties: { className: ["code-sample"], "data-language": languageKey },
+        children: [header, preEl],
+      }
+
+      // Replace this placeholder wrapper with the full wrapper (keeping only the pre).
+      // (We intentionally don't preserve `data-filename` in output markup.)
+      if (parent && typeof index === "number") parent.children[index] = wrapper
+    })
+  }
+}
diff --git a/src/lib/markdown/remarkCodeFenceFilename.ts b/src/lib/markdown/remarkCodeFenceFilename.ts
new file mode 100644
index 00000000000..e1a26b40e93
--- /dev/null
+++ b/src/lib/markdown/remarkCodeFenceFilename.ts
@@ -0,0 +1,117 @@
+import { visit } from "unist-util-visit"
+
+import { getLanguageIconSrc, languageBadge } from "../codeSample/language.js"
+
+const FILENAME_RE = /(?:^|\s)filename\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s]+))/i
+
+/**
+ * Wrap fenced code blocks that include `filename="..."` meta in a lightweight
+ * `.code-sample` container so we can add a CodeSample-like header in rehype
+ * (after syntax highlighting), while keeping the filename metadata intact.
+ */
+export default function remarkCodeFenceFilename() {
+  return (tree: unknown) => {
+    visit(tree as any, "code", (node: any, index: number | undefined, parent: any) => {
+      if (!parent || typeof index !== "number") return
+
+      const meta = typeof node?.meta === "string" ? node.meta : ""
+      if (!meta) return
+
+      const match = meta.match(FILENAME_RE)
+      if (!match) return
+
+      const filename = String(match[1] || match[2] || match[3] || "").trim()
+      if (!filename) return
+
+      const language = typeof node.lang === "string" && node.lang.trim() ? node.lang.trim().toLowerCase() : "text"
+
+      const iconSrc = getLanguageIconSrc(language)
+      const badge = languageBadge(language)
+
+      const langChildren = iconSrc
+        ? [
+            {
+              type: "mdxJsxFlowElement",
+              name: "img",
+              attributes: [
+                { type: "mdxJsxAttribute", name: "class", value: "code-sample__lang-icon" },
+                { type: "mdxJsxAttribute", name: "src", value: iconSrc },
+                { type: "mdxJsxAttribute", name: "alt", value: "" },
+              ],
+              children: [],
+            },
+          ]
+        : [{ type: "text", value: badge }]
+
+      const header = {
+        type: "mdxJsxFlowElement",
+        name: "div",
+        attributes: [{ type: "mdxJsxAttribute", name: "class", value: "code-sample__header" }],
+        children: [
+          {
+            type: "mdxJsxFlowElement",
+            name: "div",
+            attributes: [{ type: "mdxJsxAttribute", name: "class", value: "code-sample__header-left" }],
+            children: [
+              {
+                type: "mdxJsxFlowElement",
+                name: "span",
+                attributes: [
+                  {
+                    type: "mdxJsxAttribute",
+                    name: "class",
+                    value: `code-sample__lang${iconSrc ? " code-sample__lang--icon" : ""}`,
+                  },
+                  { type: "mdxJsxAttribute", name: "aria-hidden", value: "true" },
+                ],
+                children: langChildren,
+              },
+              {
+                type: "mdxJsxFlowElement",
+                name: "span",
+                attributes: [
+                  { type: "mdxJsxAttribute", name: "class", value: "code-sample__filename" },
+                  { type: "mdxJsxAttribute", name: "title", value: filename },
+                ],
+                children: [{ type: "text", value: filename }],
+              },
+            ],
+          },
+          {
+            type: "mdxJsxFlowElement",
+            name: "button",
+            attributes: [
+              { type: "mdxJsxAttribute", name: "type", value: "button" },
+              { type: "mdxJsxAttribute", name: "class", value: "code-sample__copy-button" },
+              { type: "mdxJsxAttribute", name: "aria-label", value: "Copy code" },
+            ],
+            children: [
+              {
+                type: "mdxJsxFlowElement",
+                name: "img",
+                attributes: [
+                  { type: "mdxJsxAttribute", name: "src", value: "/assets/icons/copyIcon.svg" },
+                  { type: "mdxJsxAttribute", name: "alt", value: "Copy code" },
+                  { type: "mdxJsxAttribute", name: "width", value: "16" },
+                  { type: "mdxJsxAttribute", name: "height", value: "16" },
+                ],
+                children: [],
+              },
+            ],
+          },
+        ],
+      }
+
+      parent.children[index] = {
+        type: "mdxJsxFlowElement",
+        name: "div",
+        attributes: [
+          { type: "mdxJsxAttribute", name: "class", value: "code-sample" },
+          { type: "mdxJsxAttribute", name: "data-language", value: language },
+          { type: "mdxJsxAttribute", name: "data-filename", value: filename },
+        ],
+        children: [header, node],
+      }
+    })
+  }
+}
diff --git a/src/lib/markdown/transformMarkdown.ts b/src/lib/markdown/transformMarkdown.ts
new file mode 100644
index 00000000000..58c20f5da64
--- /dev/null
+++ b/src/lib/markdown/transformMarkdown.ts
@@ -0,0 +1,285 @@
+/**
+ * Core markdown transformation using unified/remark pipeline
+ */
+
+import { unified } from "unified"
+import remarkParse from "remark-parse"
+import remarkMdx from "remark-mdx"
+import remarkGfm from "remark-gfm"
+import remarkStringify from "remark-stringify"
+import { visit } from "unist-util-visit"
+import type { Node, Parent, Literal } from "unist"
+import type { TransformConfig, MdxJsxNode, ComponentContext } from "./types.js"
+import {
+  handleCcipCommon,
+  handleCodeHighlightBlock,
+  handleCodeHighlightBlockMulti,
+  handleCopyText,
+  handleDiv,
+  handleAside,
+  handleClickToZoom,
+  handleCodeSample,
+  handleBilling,
+  loadCcipCommonMapping,
+} from "./componentHandlers.js"
+import fs from "fs"
+import path from "path"
+
+/**
+ * Convert Aside components to markdown blockquotes
+ * Handles multi-line Aside tags by converting them to blockquote format
+ * Preserves Asides with nested JSX components (they'll be handled by AST or remain as-is)
+ * @param content - Markdown content that may contain Aside components
+ * @returns Content with simple Aside tags converted to blockquotes
+ */
+function convertAsidesToBlockquotes(content: string): string {
+  // Match multi-line Aside components
+  const asideRegex = /([\s\S]*?)<\/Aside>/g
+
+  return content.replace(asideRegex, (fullMatch, type, title, children) => {
+    // Check if the Aside contains other JSX components (like Tabs, CopyText, etc.)
+    const hasJSXComponents = /<[A-Z]\w+/.test(children)
+
+    if (hasJSXComponents) {
+      // Keep as-is - these complex nested structures need manual handling
+      // or will be dropped by the AST handlers
+      return fullMatch
+    }
+
+    // Create a blockquote directly in markdown format
+    // This avoids JSX parsing issues entirely
+    const cleanChildren = children.trim()
+    const asideType = type.toUpperCase()
+    const header = title ? `**${asideType}: ${title}**` : `**${asideType}**`
+
+    // Return as markdown blockquote
+    return `\n\n> ${header}\n>\n> ${cleanChildren}\n\n`
+  })
+}
+
+/**
+ * Convert ClickToZoom components to markdown images
+ * Handles self-closing ClickToZoom tags by converting to standard markdown image syntax
+ * @param content - Markdown content that may contain ClickToZoom components
+ * @returns Content with ClickToZoom tags converted to markdown images
+ */
+function convertClickToZoomToImages(content: string): string {
+  // Match self-closing ClickToZoom tags with any attributes
+  // Captures src and alt, ignores other attributes like style
+  const clickToZoomRegex = /]*src="([^"]+)"[^>]*(?:alt="([^"]*)")?[^>]*\/>/g
+
+  return content.replace(clickToZoomRegex, (_, src, alt) => {
+    const altText = alt || "Image"
+    return `![${altText}](${src})`
+  })
+}
+
+/**
+ * Preprocess CcipCommon components by inlining their content
+ * This is essential because remarkMdx doesn't always parse self-closing JSX tags properly
+ * @param markdown - Raw markdown content
+ * @returns Markdown with CcipCommon components replaced by their content
+ */
+function preprocessCcipCommon(markdown: string): string {
+  const ccipCommonRegex = //g
+  let preprocessedMarkdown = markdown
+
+  for (const match of markdown.matchAll(ccipCommonRegex)) {
+    const [fullMatch, calloutName] = match
+    const calloutFileMap = loadCcipCommonMapping()
+    const fileName = calloutFileMap[calloutName]
+
+    if (fileName) {
+      const calloutPath = path.resolve("src/features/ccip", fileName)
+      if (fs.existsSync(calloutPath)) {
+        let calloutContent = fs.readFileSync(calloutPath, "utf-8")
+
+        // Strip frontmatter if present
+        if (calloutContent.trim().startsWith("---")) {
+          calloutContent = calloutContent.replace(/^---\s*\n[\s\S]*?\n---\s*\n/, "")
+        }
+
+        // Strip import statements
+        calloutContent = calloutContent.replace(/^import\s+.+$/gm, "").trim()
+
+        // Convert Aside components to blockquotes
+        calloutContent = convertAsidesToBlockquotes(calloutContent)
+
+        // Replace the CcipCommon tag with the processed content
+        preprocessedMarkdown = preprocessedMarkdown.replace(fullMatch, "\n\n" + calloutContent + "\n\n")
+      }
+    }
+  }
+
+  return preprocessedMarkdown
+}
+
+/**
+ * Transform markdown content using unified/remark pipeline
+ * @param markdown - Raw markdown content
+ * @param mdxAbsPath - Absolute path to the MDX file
+ * @param config - Transformation configuration
+ * @returns Transformed markdown string
+ */
+export async function transformMarkdown(
+  markdown: string,
+  mdxAbsPath: string,
+  config: Partial = {}
+): Promise {
+  const { targetLanguage } = config
+
+  // Preprocessing pipeline - apply transformations before AST parsing
+  // This handles components that remarkMdx struggles to parse (multi-line JSX)
+
+  // Step 1: Preprocess CcipCommon components (inline callout content)
+  let preprocessedMarkdown = preprocessCcipCommon(markdown)
+
+  // Step 2: Convert Aside components to markdown blockquotes
+  // Applies to both main content and inlined CcipCommon content
+  preprocessedMarkdown = convertAsidesToBlockquotes(preprocessedMarkdown)
+
+  // Step 3: Convert ClickToZoom to markdown images
+  preprocessedMarkdown = convertClickToZoomToImages(preprocessedMarkdown)
+
+  // Create unified processor with remark plugins
+  const processor = unified()
+    .use(remarkParse)
+    .use(remarkMdx)
+    .use(remarkGfm)
+    .use(() => (tree: Node) => {
+      // Create context for component handlers
+      const context: ComponentContext = {
+        mdxAbsPath,
+        markdown,
+        targetLanguage,
+        processor,
+      }
+
+      visit(tree, (node: Node, index: number | undefined, parent: Parent | undefined) => {
+        if (!parent || typeof index !== "number") return
+
+        // Handle CodeHighlightBlockMulti
+        if (node.type === "mdxJsxFlowElement" && (node as MdxJsxNode).name === "CodeHighlightBlockMulti") {
+          return handleCodeHighlightBlockMulti(node as MdxJsxNode, parent, index, context)
+        }
+
+        // Handle CodeHighlightBlock
+        if (node.type === "mdxJsxFlowElement" && (node as MdxJsxNode).name === "CodeHighlightBlock") {
+          return handleCodeHighlightBlock(node as MdxJsxNode, parent, index, context)
+        }
+
+        // Handle CcipCommon
+        if (node.type === "mdxJsxFlowElement" && (node as MdxJsxNode).name === "CcipCommon") {
+          return handleCcipCommon(node as MdxJsxNode, parent, index, context)
+        }
+
+        // Handle Aside
+        if (node.type === "mdxJsxFlowElement" && (node as MdxJsxNode).name === "Aside") {
+          return handleAside(node as MdxJsxNode, parent, index, context)
+        }
+
+        // Handle ClickToZoom
+        if (node.type === "mdxJsxFlowElement" && (node as MdxJsxNode).name === "ClickToZoom") {
+          return handleClickToZoom(node as MdxJsxNode, parent, index, context)
+        }
+
+        // Handle CodeSample
+        if (node.type === "mdxJsxFlowElement" && (node as MdxJsxNode).name === "CodeSample") {
+          return handleCodeSample(node as MdxJsxNode, parent, index, context)
+        }
+
+        // Handle Billing
+        if (node.type === "mdxJsxFlowElement" && (node as MdxJsxNode).name === "Billing") {
+          return handleBilling(node as MdxJsxNode, parent, index, context)
+        }
+
+        // Handle MDX JSX text elements
+        if (node.type === "mdxJsxTextElement") {
+          const nodeName = (node as MdxJsxNode).name
+
+          // Handle CopyText
+          if (nodeName === "CopyText") {
+            return handleCopyText(node as MdxJsxNode, parent, index)
+          }
+
+          // Handle 
tags (often used for styling in tables) + if (nodeName === "div" && (node as Parent).children) { + return handleDiv(node as MdxJsxNode, parent, index) + } + } + + // Drop MDX/import/export nodes (except handled components) + if ( + (node.type === "mdxJsxFlowElement" && + (node as MdxJsxNode).name !== "Aside" && + (node as MdxJsxNode).name !== "CcipCommon" && + (node as MdxJsxNode).name !== "ClickToZoom" && + (node as MdxJsxNode).name !== "CodeSample" && + (node as MdxJsxNode).name !== "Billing") || + node.type === "mdxjsEsm" || + node.type === "import" || + node.type === "export" + ) { + parent.children.splice(index, 1) + return + } + + // Handle HTML nodes - drop them + if (node.type === "html") { + parent.children.splice(index, 1) + return + } + + // Handle JSX comments - drop them + if ( + (node.type === "mdxFlowExpression" || node.type === "mdxTextExpression") && + typeof (node as { value?: string }).value === "string" && + (node as { value?: string }).value?.trim().match(/^\/\*[\s\S]*?\*\/$/) + ) { + parent.children.splice(index, 1) + return + } + + // Replace images with their alt text + if (node.type === "image") { + const alt = (node as { alt?: string }).alt ? String((node as { alt?: string }).alt) : "Image" + parent.children[index] = { type: "text", value: `(Image: ${alt})` } as Literal + } + + // Note: We preserve link nodes as-is so they're rendered as markdown links [text](url) + }) + }) + .use(remarkStringify, { + fences: true, + bullet: "-", + }) + + const file = await processor.process(preprocessedMarkdown) + let result = String(file) + + // Remove any JSX comments that might have slipped through as text + result = result + .split("\n") + .filter((line) => !line.trim().match(/^{\/\*.*?\*\/}$/)) + .join("\n") + + return result +} + +/** + * Transform a single page to markdown with metadata + * @param mdxContent - Raw MDX content + * @param mdxAbsPath - Absolute path to MDX file + * @param config - Transformation configuration + * @returns Transformed markdown with frontmatter + */ +export async function transformPageToMarkdown( + mdxContent: string, + mdxAbsPath: string, + config: Partial = {} +): Promise { + // Transform the markdown + const transformed = await transformMarkdown(mdxContent, mdxAbsPath, config) + + return transformed +} diff --git a/src/lib/markdown/types.ts b/src/lib/markdown/types.ts new file mode 100644 index 00000000000..5362f96a33f --- /dev/null +++ b/src/lib/markdown/types.ts @@ -0,0 +1,112 @@ +/** + * Type definitions for markdown transformation library + */ + +import type { Node, Parent } from "unist" + +/** + * Metadata about a documentation page + */ +export interface PageMetadata { + /** Page title */ + title: string + /** Canonical URL */ + sourceUrl: string + /** Last modified date (ISO string) */ + lastModified?: string + /** Section (e.g., 'ccip', 'vrf') */ + section?: string + /** SDK language (for language-specific pages) */ + sdkLang?: string +} + +/** + * Frontmatter extracted from MDX files + */ +export interface Frontmatter { + /** Raw body content (without frontmatter) */ + body: string + /** Page title from frontmatter */ + fmTitle?: string + /** Last modified date from metadata */ + fmLastModified?: string + /** SDK language */ + sdkLang?: string +} + +/** + * MDX JSX attribute + */ +export interface MdxJsxAttribute { + name: string + value?: string | { value: string } | { data?: { estree?: { body?: unknown[] } } } +} + +/** + * MDX JSX node in the AST + */ +export interface MdxJsxNode extends Node { + name?: string + attributes?: MdxJsxAttribute[] +} + +/** + * Context passed to component handlers + */ +export interface ComponentContext { + /** Absolute path to the MDX file being processed */ + mdxAbsPath: string + /** Original markdown content */ + markdown: string + /** Target language (if any) */ + targetLanguage?: string + /** Unified processor instance */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + processor: any +} + +/** + * Handler function for custom components + */ +export type ComponentHandler = ( + node: MdxJsxNode, + parent: Parent, + index: number, + context: ComponentContext +) => number | void + +/** + * Configuration for markdown transformation + */ +export interface TransformConfig { + /** Base URL for the documentation site */ + siteBase: string + /** Target language for language-specific content */ + targetLanguage?: string + /** Whether to include frontmatter in output */ + includeFrontmatter?: boolean + /** Custom component handlers */ + componentHandlers?: Record +} + +/** + * Result of markdown transformation + */ +export interface TransformResult { + /** The transformed markdown content */ + markdown: string + /** Metadata extracted from the page */ + metadata: PageMetadata +} + +/** + * Code block with metadata + */ +export interface CodeBlock { + /** Programming language */ + lang: string + /** Code content */ + value: string + /** Optional title */ + title?: string +} diff --git a/src/lib/markdown/utils.ts b/src/lib/markdown/utils.ts new file mode 100644 index 00000000000..1fad5aaa9d5 --- /dev/null +++ b/src/lib/markdown/utils.ts @@ -0,0 +1,154 @@ +/** + * Utility functions for markdown transformation + */ + +import path from "path" +import type { Frontmatter } from "./types.js" + +/** + * Extract frontmatter from raw MDX content + * @param raw - Raw MDX file content + * @returns Frontmatter data and body content + */ +export function extractFrontmatter(raw: string): Frontmatter { + // Lightweight frontmatter extractor to avoid extra deps + // Supports triple-dash YAML frontmatter at the start of the file + if (raw.startsWith("---")) { + const end = raw.indexOf("\n---", 3) + if (end > 0) { + const fm = raw.slice(3, end).trim() + const body = raw.slice(end + 4) + // Very minimal parsing for title, metadata.lastModified, and sdkLang + const fmTitleMatch = fm.match(/^\s*title:\s*"?(.+?)"?\s*$/m) + const lastModMatch = fm.match(/^\s*metadata:\s*[\s\S]*?lastModified:\s*"?(.+?)"?\s*$/m) + const sdkLangMatch = fm.match(/^\s*sdkLang:\s*"?(.+?)"?\s*$/m) + const fmTitle = fmTitleMatch ? fmTitleMatch[1] : undefined + const fmLastModified = lastModMatch ? lastModMatch[1] : undefined + const sdkLang = sdkLangMatch ? sdkLangMatch[1] : undefined + return { body, fmTitle, fmLastModified, sdkLang } + } + } + return { body: raw } +} + +/** + * Convert absolute file path to content-relative path + * @param absFile - Absolute file path + * @returns Path relative to src/content/ + */ +export function toContentRelative(absFile: string): string { + const idx = absFile.indexOf(path.normalize("src/content/")) + return idx >= 0 ? absFile.slice(idx + "src/content/".length) : absFile +} + +/** + * Convert content-relative path to canonical URL + * @param section - Section name (e.g., 'ccip') + * @param relFromContent - Path relative to src/content/ + * @param siteBase - Base URL for the site + * @returns Full canonical URL + */ +export function toCanonicalUrl(section: string, relFromContent: string, siteBase: string): string { + // relFromContent like "ccip/index.mdx" or "ccip/foo/bar.mdx" + const withoutExt = relFromContent.replace(/\.(md|mdx)$/i, "") + let slug = withoutExt + if (slug.endsWith("/index")) slug = slug.slice(0, -"/index".length) + if (!slug.startsWith(section)) slug = `${section}/${slug}` + if (!slug.startsWith("/")) slug = `/${slug}` + return `${siteBase}${slug}` +} + +/** + * Infer page title from file path + * @param relFromContent - Path relative to src/content/ + * @returns Inferred title + */ +export function inferTitleFromPath(relFromContent: string): string { + const base = path.basename(relFromContent, path.extname(relFromContent)) + if (base.toLowerCase() === "index") { + const parts = relFromContent.split(path.sep).filter(Boolean) + return parts.length >= 2 ? titleCase(parts[parts.length - 2]) : "Documentation" + } + return titleCase(base) +} + +/** + * Convert string to title case + * @param s - Input string + * @returns Title-cased string + */ +export function titleCase(s: string): string { + return s + .replace(/[-_]/g, " ") + .replace(/\s+/g, " ") + .trim() + .replace(/\b\w/g, (m) => m.toUpperCase()) +} + +/** + * Get page language from filename or frontmatter + * @param absFile - Absolute file path + * @param sdkLang - SDK language from frontmatter + * @returns Language code or null if not language-specific + */ +export function getPageLanguage(absFile: string, sdkLang?: string): string | null { + // Return the language if specified in frontmatter + if (sdkLang) return sdkLang.toLowerCase() + + // Check filename suffix (e.g., "page-go.mdx" -> "go", "page-ts.mdx" -> "ts") + const basename = path.basename(absFile, path.extname(absFile)) + const match = basename.match(/-(go|ts)$/) + if (match) return match[1] + + // No language specified = common to all languages + return null +} + +/** + * Check if page should be included in language-specific file + * @param pageLanguage - Language of the page + * @param targetLanguage - Target language for the file + * @returns True if page should be included + */ +export function shouldIncludeInLanguageFile(pageLanguage: string | null, targetLanguage: string): boolean { + // Include if page is common (no language) or matches target language + return pageLanguage === null || pageLanguage === targetLanguage +} + +/** + * Convert value to ISO date string + * @param val - Date value (string or Date) + * @returns ISO date string (YYYY-MM-DD) or undefined + */ +export function getIsoStringOrUndefined(val: unknown): string | undefined { + if (typeof val !== "string") return undefined + const d = new Date(val) + return isNaN(d.getTime()) ? undefined : d.toISOString().slice(0, 10) +} + +/** + * Unescape markdown for plain text output + * @param s - Markdown string + * @returns Unescaped string + */ +export function unescapeForPlainText(s: string): string { + let inFence = false + return s + .split("\n") + .map((line) => { + const trimmed = line.trim() + if (trimmed.startsWith("```") || trimmed.startsWith("~~~")) { + inFence = !inFence + return line + } + if (inFence) return line + return line + .replace(/\\_/g, "_") + .replace(/\\\[/g, "[") + .replace(/\\\]/g, "]") + .replace(/\\\(/g, "(") + .replace(/\\\)/g, ")") + }) + .filter((line) => line.trim() !== "{/* prettier-ignore */}") + .join("\n") +} diff --git a/src/lib/solana/domain/services/signature-verification.ts b/src/lib/solana/domain/services/signature-verification.ts index 5d9f0d03cd1..9b34b273f0c 100644 --- a/src/lib/solana/domain/services/signature-verification.ts +++ b/src/lib/solana/domain/services/signature-verification.ts @@ -308,7 +308,7 @@ export class SolanaSignatureService { logger.warn({ message: "Timing-safe HMAC verification failed for SIWS challenge", requestId: params.requestId, - family: "svm", + family: "solana", receiverAddress: params.receiver, step: "hmac_verification", }) @@ -327,7 +327,7 @@ export class SolanaSignatureService { logger.debug({ message: "SIWS challenge metadata parsed", requestId: params.requestId, - family: "svm", + family: "solana", expiresAt: metadata.expiresAt, issuedAt: metadata.issuedAt, nonce: metadata.nonce, @@ -351,7 +351,7 @@ export class SolanaSignatureService { logger.warn({ message: "SIWS challenge expired", requestId: params.requestId, - family: "svm", + family: "solana", expiresAt: metadata.expiresAt, currentTime: now, timeRemaining: metadata.expiresAt - now, @@ -366,7 +366,7 @@ export class SolanaSignatureService { logger.warn({ message: "SIWS challenge issued in the future", requestId: params.requestId, - family: "svm", + family: "solana", issuedAt: metadata.issuedAt, currentTime: now, step: "future_check", @@ -388,7 +388,7 @@ export class SolanaSignatureService { logger.info({ message: "Ed25519 signature verification successful", requestId: params.requestId, - family: "svm", + family: "solana", receiverAddress: params.receiver, verificationTimeMs: verificationTime, step: "signature_verification", @@ -398,7 +398,7 @@ export class SolanaSignatureService { logger.warn({ message: "Ed25519 signature verification failed", requestId: params.requestId, - family: "svm", + family: "solana", receiverAddress: params.receiver, verificationTimeMs: verificationTime, step: "signature_verification", @@ -418,7 +418,7 @@ export class SolanaSignatureService { logger.error({ message: "Error during SIWS signature verification", requestId: params.requestId, - family: "svm", + family: "solana", error: error instanceof Error ? error.message : "Unknown error", step: "verification_error", }) diff --git a/src/lib/solana/index.ts b/src/lib/solana/index.ts index ab6c225c01c..a4f53569577 100644 --- a/src/lib/solana/index.ts +++ b/src/lib/solana/index.ts @@ -10,7 +10,7 @@ * 4. Wallet - Browser wallet integration * * Migration Complete: All legacy code has been removed. - * Use DripOrchestrator from @api/ccip/services/faucet/drip-orchestrator for business logic. + * Use DripOrchestrator from ~/lib/ccip/services-api/faucet/drip-orchestrator for business logic. */ // Core layer - Pure utilities with no dependencies diff --git a/src/lib/solana/wallet-adapter/components/WalletPicker.tsx b/src/lib/solana/wallet-adapter/components/WalletPicker.tsx index 0f4918781f8..57f7aadc2cb 100644 --- a/src/lib/solana/wallet-adapter/components/WalletPicker.tsx +++ b/src/lib/solana/wallet-adapter/components/WalletPicker.tsx @@ -5,7 +5,7 @@ import type { WalletReadyState } from "@solana/wallet-adapter-base" import styles from "./WalletPicker.module.css" // Default wallet icon - consistent with Chainlink design system -const DEFAULT_WALLET_ICON = "https://smartcontract.imgix.net/icons/wallet_filled.svg?auto=compress%2Cformat" +const DEFAULT_WALLET_ICON = "https://d2f70xi62kby8n.cloudfront.net/icons/wallet_filled.svg?auto=compress%2Cformat" interface WalletPickerProps { className?: string diff --git a/src/pages/api/ccip/types/index.ts b/src/pages/api/ccip/types/index.ts deleted file mode 100644 index f2a74d933ff..00000000000 --- a/src/pages/api/ccip/types/index.ts +++ /dev/null @@ -1,231 +0,0 @@ -// Chain Data API Types - -import { Environment } from "@config/data/ccip/types.ts" - -export { Environment } - -// Chain type and family declarations -export type ChainType = "evm" | "solana" | "aptos" | "sui" -export type ChainFamily = "evm" | "mvm" | "svm" - -export const prerender = false - -/** - * Enriched fee token information with address and metadata - * Used when enrichFeeTokens=true query parameter is set - */ -export type FeeTokenEnriched = { - symbol: string - name: string - address: string - decimals: number -} - -export type ChainConfigError = { - chainId: number - networkId: string - reason: string - missingFields: string[] -} - -export type ChainMetadata = { - environment: Environment - timestamp: string - requestId: string - ignoredChainCount: number -} - -export interface ChainDetails { - chainId: number | string - displayName: string - selector: string - internalId: string - feeTokens: string[] | FeeTokenEnriched[] - router: string - rmn: string - chainType: ChainType - chainFamily: ChainFamily - registryModule?: string - tokenAdminRegistry?: string - tokenPoolFactory?: string - feeQuoter?: string - mcms?: string -} - -export type ChainApiResponse = { - metadata: ChainMetadata - data: Record> - ignored: { - chainId: number - networkId: string - reason: string - missingFields: string[] - chain_id?: string - }[] -} - -export type OutputKeyType = "chainId" | "selector" | "internalId" - -export type ChainApiError = { - error: string - message: string -} - -export interface FilterType { - chainId?: string - selector?: string - internalId?: string -} - -export type SelectorEntry = { - selector: string - name: string -} - -export type SelectorsConfig = { - selectors: Record -} - -// Token Data API Types - -export type TokenConfigError = { - symbol: string - reason: string - missingFields: string[] -} - -export type TokenMetadata = { - environment: Environment - timestamp: string - requestId: string - ignoredTokenCount: number - validTokenCount: number -} - -export type TokenChainData = { - chainId: number | string - chainName: string - decimals: number - destinations: string[] - name: string - poolAddress: string - poolType: string - symbol: string - tokenAddress: string -} - -export type TokenDataResponse = { - [key: string]: { - [chainKey: string]: TokenChainData - } -} - -export type TokenServiceResponse = { - tokens: TokenDataResponse - errors: TokenConfigError[] - metadata: { - validTokenCount: number - ignoredTokenCount: number - } -} - -export type TokenApiResponse = { - metadata: TokenMetadata - data: TokenDataResponse - ignored: TokenConfigError[] -} - -export interface TokenFilterType { - token_id?: string - chain_id?: string -} - -// Lane Data API Types - -export type LaneConfigError = { - sourceChain: string - destinationChain: string - reason: string - missingFields: string[] -} - -export type LaneMetadata = { - environment: Environment - timestamp: string - requestId: string - ignoredLaneCount: number - validLaneCount: number -} - -// Internal interface with chainType and chainFamily for processing -export interface ChainInfoInternal { - chainId: number | string - displayName: string - selector: string - internalId: string - chainType: ChainType - chainFamily: ChainFamily -} - -// Public interface for API responses without chainType and chainFamily -export interface ChainInfo { - chainId: number | string - displayName: string - selector: string - internalId: string -} - -export interface LaneDetails { - sourceChain: ChainInfo - destinationChain: ChainInfo - onRamp: { - address: string - version: string - enforceOutOfOrder?: boolean - } - offRamp: { - address: string - version: string - } - supportedTokens: string[] -} - -export type LaneDataResponse = Record - -export type LaneServiceResponse = { - data: LaneDataResponse - errors: LaneConfigError[] - metadata: { - validLaneCount: number - ignoredLaneCount: number - } -} - -export type LaneApiResponse = { - metadata: LaneMetadata - data: LaneDataResponse - ignored: LaneConfigError[] -} - -export interface LaneFilterType { - sourceChainId?: string - destinationChainId?: string - sourceSelector?: string - destinationSelector?: string - sourceInternalId?: string - destinationInternalId?: string - version?: string -} - -// Faucet API Types -export type { - FaucetChainConfig, - ChallengeParams, - ChallengeResponse, - VerifyRequest, - VerifyResponse, - VerifySignatureArgs, - FamilyAdapter, - FaucetApiResponse, - FaucetError, -} from "./faucet.ts" diff --git a/src/pages/api/ccip/v1/chains.ts b/src/pages/api/ccip/v1/chains.ts index 64413aa9d68..7b0df0912cf 100644 --- a/src/pages/api/ccip/v1/chains.ts +++ b/src/pages/api/ccip/v1/chains.ts @@ -4,21 +4,25 @@ import { validateFilters, validateOutputKey, validateEnrichFeeTokens, + validateSearch, + validateFamily, + validateSearchParams, + validateInternalIdFormat, generateChainKey, createMetadata, - handleApiError, - successHeaders, - commonHeaders, loadChainConfiguration, FilterType, APIErrorType, createErrorResponse, CCIPError, -} from "../utils.ts" +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" import { logger } from "@lib/logging/index.js" -import type { ChainDetails, ChainApiResponse } from "../types/index.ts" -import { ChainDataService } from "../../services/chain-data.ts" +import type { ChainDetails, ChainApiResponse, ChainFamily } from "~/lib/ccip/types/index.ts" +import { ChainDataService, getAllChainsForSearch } from "~/lib/ccip/services/chain-data.ts" +import { searchChains } from "~/lib/ccip/services/chain-search.ts" +import { ChainIdentifierService } from "~/lib/ccip/services/chain-identifier.ts" export const prerender = false @@ -43,13 +47,38 @@ export const GET: APIRoute = async ({ request }) => { environment, }) - // Validate filters + // Validate search and family (new unified search params) + const search = validateSearch(params.get("search")) + const family = validateFamily(params.get("family")) + logger.debug({ + message: "Search params validated", + requestId, + search, + family, + }) + + // Validate legacy filters const filters: FilterType = { chainId: params.get("chainId") || undefined, selector: params.get("selector") || undefined, internalId: params.get("internalId") || undefined, } validateFilters(filters) + + // Validate mutual exclusion of search and legacy filters + validateSearchParams(search, filters) + + // Warn if family is used with legacy filters (family has no effect in legacy mode) + const hasLegacyFilter = filters.chainId || filters.selector || filters.internalId + if (family && hasLegacyFilter) { + logger.warn({ + message: "family parameter is ignored when using legacy filters (chainId, selector, internalId)", + requestId, + family, + filters, + }) + } + logger.debug({ message: "Filters validated", requestId, @@ -64,6 +93,14 @@ export const GET: APIRoute = async ({ request }) => { outputKey, }) + // Validate internalIdFormat parameter (only applies when outputKey=internalId) + const internalIdFormat = validateInternalIdFormat(params.get("internalIdFormat") || undefined) + logger.debug({ + message: "Internal ID format validated", + requestId, + internalIdFormat, + }) + // Validate enrichFeeTokens parameter const enrichFeeTokens = validateEnrichFeeTokens(params.get("enrichFeeTokens") || undefined) logger.debug({ @@ -72,6 +109,9 @@ export const GET: APIRoute = async ({ request }) => { enrichFeeTokens, }) + // Initialize chain identifier service for formatting (only used when outputKey=internalId) + const chainIdService = new ChainIdentifierService(environment, internalIdFormat) + const config = await loadChainConfiguration(environment) logger.debug({ message: "Chain configuration loaded", @@ -80,37 +120,119 @@ export const GET: APIRoute = async ({ request }) => { chainCount: Object.keys(config.chainsConfig).length, }) - const chainDataService = new ChainDataService(config.chainsConfig) - const { - data, - errors, - metadata: serviceMetadata, - } = await chainDataService.getFilteredChains(environment, filters, enrichFeeTokens) + const chainDataService = new ChainDataService(config.chainsConfig, requestId) - logger.info({ - message: "Chain data retrieved successfully", - requestId, - validChainCount: serviceMetadata.validChainCount, - errorCount: errors.length, - filters, - }) + let data: Record + let errors: { chainId: number; networkId: string; reason: string; missingFields: string[] }[] + const metadata = createMetadata(environment, requestId) - const metadata = createMetadata(environment) - metadata.ignoredChainCount = serviceMetadata.ignoredChainCount - metadata.validChainCount = serviceMetadata.validChainCount + if (search) { + // SEARCH MODE: Get all chains (supported + unsupported) and search + const { + data: supportedData, + errors: supportedErrors, + metadata: _serviceMetadata, + } = await chainDataService.getFilteredChains(environment, {}, enrichFeeTokens) + + // Flatten supported chains from all families + const supportedChains = [ + ...supportedData.evm, + ...supportedData.solana, + ...supportedData.aptos, + ...supportedData.sui, + ...supportedData.tron, + ...supportedData.canton, + ...supportedData.ton, + ...supportedData.stellar, + ...supportedData.starknet, + ] + + // Get all chains including unsupported + const allChains = getAllChainsForSearch(environment, supportedChains) + + // Execute search with optional family filter + const { results, searchType } = searchChains(search, allChains, family) + + // Group results by family + data = { evm: [], solana: [], aptos: [], sui: [], tron: [], canton: [], ton: [], stellar: [], starknet: [] } + for (const chain of results) { + data[chain.chainFamily].push(chain) + } + + errors = supportedErrors + metadata.validChainCount = results.length + metadata.ignoredChainCount = supportedErrors.length + metadata.searchQuery = search + metadata.searchType = searchType + + logger.info({ + message: "Search completed successfully", + requestId, + searchQuery: search, + searchType, + resultCount: results.length, + family, + }) + } else { + // LEGACY MODE: Existing filter behavior (supported chains only) + const { + data: serviceData, + errors: serviceErrors, + metadata: serviceMetadata, + } = await chainDataService.getFilteredChains(environment, filters, enrichFeeTokens) + + // Add supported: true to all chains in legacy mode + data = { + evm: serviceData.evm.map((c) => ({ ...c, supported: true })), + solana: serviceData.solana.map((c) => ({ ...c, supported: true })), + aptos: serviceData.aptos.map((c) => ({ ...c, supported: true })), + sui: serviceData.sui.map((c) => ({ ...c, supported: true })), + tron: serviceData.tron.map((c) => ({ ...c, supported: true })), + canton: serviceData.canton.map((c) => ({ ...c, supported: true })), + ton: serviceData.ton.map((c) => ({ ...c, supported: true })), + stellar: serviceData.stellar.map((c) => ({ ...c, supported: true })), + starknet: serviceData.starknet.map((c) => ({ ...c, supported: true })), + } + + errors = serviceErrors + metadata.validChainCount = serviceMetadata.validChainCount + metadata.ignoredChainCount = serviceMetadata.ignoredChainCount + + logger.info({ + message: "Chain data retrieved successfully", + requestId, + validChainCount: serviceMetadata.validChainCount, + errorCount: errors.length, + filters, + }) + } // Convert each chain family's array to a keyed object structure as required by the API + // Always apply internalIdFormat to format the internalId field in each chain object const formattedData = Object.entries(data).reduce( - (acc, [family, chainList]) => { - acc[family] = chainList.reduce( + (acc, [familyKey, chainList]) => { + acc[familyKey] = chainList.reduce( (familyAcc, chain) => { - const key = - outputKey === "chainId" - ? generateChainKey(chain.chainId, chain.chainType, outputKey) - : outputKey - ? chain[outputKey].toString() - : chain.internalId - familyAcc[key] = chain + let key: string + + // Always format the internalId field based on internalIdFormat + const resolved = chainIdService.resolve(chain.internalId) + const formattedInternalId = resolved + ? chainIdService.format(resolved.directoryKey, internalIdFormat) + : chain.internalId + const formattedChain = { ...chain, internalId: formattedInternalId } + + if (outputKey === "chainId") { + key = generateChainKey(chain.chainId, chain.chainType, outputKey) + } else if (outputKey === "internalId") { + key = formattedInternalId + } else if (outputKey) { + key = chain[outputKey].toString() + } else { + key = chain.internalId + } + + familyAcc[key] = formattedChain return familyAcc }, {} as Record @@ -133,7 +255,7 @@ export const GET: APIRoute = async ({ request }) => { }) return new Response(JSON.stringify(response), { - headers: { ...commonHeaders, ...successHeaders }, + headers: jsonHeaders, }) } catch (error) { logger.error({ @@ -149,16 +271,16 @@ export const GET: APIRoute = async ({ request }) => { error.statusCode === 400 ? APIErrorType.VALIDATION_ERROR : APIErrorType.SERVER_ERROR, error.message, error.statusCode, - {} + requestId ) } - // Handle other errors - if (error instanceof Error) { - return createErrorResponse(APIErrorType.SERVER_ERROR, "Failed to process chain request", 500, { - message: error.message, - }) - } - return handleApiError(error) + // Handle all other errors generically without exposing internal details + return createErrorResponse( + APIErrorType.SERVER_ERROR, + "An unexpected error occurred while processing the request.", + 500, + requestId + ) } } diff --git a/src/pages/api/ccip/v1/docs.astro b/src/pages/api/ccip/v1/docs.astro index 6e1ad90eb26..4ca6e697ae2 100644 --- a/src/pages/api/ccip/v1/docs.astro +++ b/src/pages/api/ccip/v1/docs.astro @@ -13,13 +13,13 @@ const fetchCcipChains = async () => { const evmChains = data.data.evm; console.log('EVM chains:', evmChains); - // Access Solana VM chains (if available) - const solanaChains = data.data.svm || {}; + // Access Solana chains (if available) + const solanaChains = data.data.solana || {}; console.log('Solana chains:', solanaChains); - - // Access Move VM chains (if available) - const mvmChains = data.data.mvm || {}; - console.log('Aptos chains:', mvmChains); + + // Access Aptos chains (if available) + const aptosChains = data.data.aptos || {}; + console.log('Aptos chains:', aptosChains); return data; } catch (err) { @@ -50,7 +50,7 @@ const fetchSolanaChains = async () => { const data = await response.json(); // Extract just the Solana chains - const solanaChains = data.data.svm || {}; + const solanaChains = data.data.solana || {}; console.log('Solana chains:', solanaChains); return solanaChains; } catch (err) { diff --git a/src/pages/api/ccip/v1/drips/[chainName]/challenge.ts b/src/pages/api/ccip/v1/drips/[chainName]/challenge.ts index 9c578ededb1..aafe4e63588 100644 --- a/src/pages/api/ccip/v1/drips/[chainName]/challenge.ts +++ b/src/pages/api/ccip/v1/drips/[chainName]/challenge.ts @@ -1,8 +1,9 @@ import type { APIRoute } from "astro" -import { APIErrorType, createErrorResponse, commonHeaders, CCIPError } from "@api/ccip/utils.ts" +import { APIErrorType, createErrorResponse, CCIPError } from "~/lib/ccip/utils.ts" +import { commonHeaders } from "@lib/api/cacheHeaders.ts" import { logger } from "@lib/logging/index.js" import { getFaucetConfig } from "@lib/core/config/index.ts" -import { FaucetService } from "../../../../services/faucet-service.ts" +import { FaucetService } from "~/lib/ccip/services/faucet-service.ts" export const prerender = false export const runtime = "nodejs" // Required for crypto operations @@ -30,13 +31,13 @@ export const GET: APIRoute = async ({ request, params }) => { const receiver = url.searchParams.get("receiver") if (!token) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Missing token parameter", 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Missing token parameter", 422, requestId, { code: "invalid_token", }) } if (!receiver) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Missing receiver parameter", 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Missing receiver parameter", 422, requestId, { code: "invalid_receiver", }) } @@ -102,33 +103,30 @@ export const GET: APIRoute = async ({ request, params }) => { error.statusCode === 400 ? APIErrorType.VALIDATION_ERROR : APIErrorType.SERVER_ERROR, error.message, error.statusCode, - { traceId: requestId } + requestId ) } // Handle validation errors if (error instanceof Error && error.message.includes("not supported")) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, requestId, { code: "unsupported_chain", - traceId: requestId, }) } if (error instanceof Error && error.message.includes("Invalid address")) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, requestId, { code: "invalid_address", - traceId: requestId, }) } if (error instanceof Error && error.message.includes("not allowed")) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, requestId, { code: "unsupported_token", - traceId: requestId, }) } // Handle other errors - return createErrorResponse(APIErrorType.SERVER_ERROR, "Failed to generate challenge", 500, { traceId: requestId }) + return createErrorResponse(APIErrorType.SERVER_ERROR, "Failed to generate challenge", 500, requestId) } } diff --git a/src/pages/api/ccip/v1/drips/[chainName]/execute.ts b/src/pages/api/ccip/v1/drips/[chainName]/execute.ts index 4d88f178c45..676b93bc8b0 100644 --- a/src/pages/api/ccip/v1/drips/[chainName]/execute.ts +++ b/src/pages/api/ccip/v1/drips/[chainName]/execute.ts @@ -1,11 +1,12 @@ import type { APIRoute } from "astro" -import { APIErrorType, createErrorResponse, commonHeaders, CCIPError } from "@api/ccip/utils.ts" +import { APIErrorType, createErrorResponse, CCIPError } from "~/lib/ccip/utils.ts" +import { commonHeaders } from "@lib/api/cacheHeaders.ts" import { logger } from "@lib/logging/index.js" -import { FaucetService } from "../../../../services/faucet-service.ts" -import { SvmDripAdapter } from "@api/ccip/faucet/adapters/svm-drip.ts" -import { resolveFaucetChain } from "@api/ccip/faucet/chain-resolver.ts" -import { handleFaucetError } from "@api/ccip/services/faucet/error-handler.ts" -import { ChainConfigurationService } from "@api/ccip/services/chain-config.ts" +import { FaucetService } from "~/lib/ccip/services/faucet-service.ts" +import { SvmDripAdapter } from "~/lib/ccip/faucet/adapters/svm-drip.ts" +import { resolveFaucetChain } from "~/lib/ccip/faucet/chain-resolver.ts" +import { handleFaucetError } from "~/lib/ccip/services-api/faucet/error-handler.ts" +import { ChainConfigurationService } from "~/lib/ccip/services-api/chain-config.ts" export const prerender = false export const runtime = "nodejs" @@ -32,9 +33,8 @@ export const POST: APIRoute = async ({ request, params }) => { try { body = await request.json() } catch { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid JSON body", 400, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid JSON body", 400, requestId, { code: "invalid_json", - traceId: requestId, }) } @@ -61,30 +61,26 @@ export const POST: APIRoute = async ({ request, params }) => { // 2. Input validation if (!token || typeof token !== "string") { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid token parameter", 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid token parameter", 422, requestId, { code: "invalid_token", - traceId: requestId, }) } if (!receiver || typeof receiver !== "string") { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid receiver parameter", 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid receiver parameter", 422, requestId, { code: "invalid_receiver", - traceId: requestId, }) } if (!challenge || typeof challenge !== "string") { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid challenge parameter", 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid challenge parameter", 422, requestId, { code: "bad_challenge", - traceId: requestId, }) } if (!receiverSignature || typeof receiverSignature !== "string") { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid signature parameter", 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid signature parameter", 422, requestId, { code: "invalid_signature", - traceId: requestId, }) } @@ -101,9 +97,9 @@ export const POST: APIRoute = async ({ request, params }) => { APIErrorType.VALIDATION_ERROR, `Faucet configuration error: ${configError instanceof Error ? configError.message : "Invalid chain or token configuration"}`, 400, + requestId, { code: "FAUCET_CONFIG_ERROR", - traceId: requestId, } ) } @@ -113,9 +109,9 @@ export const POST: APIRoute = async ({ request, params }) => { APIErrorType.VALIDATION_ERROR, `Unsupported chain: ${params.chainName}. This chain is not enabled for faucet operations.`, 400, + requestId, { code: "UNSUPPORTED_CHAIN", - traceId: requestId, supportedChains: ["solana-devnet"], } ) @@ -160,9 +156,9 @@ export const POST: APIRoute = async ({ request, params }) => { APIErrorType.VALIDATION_ERROR, `Authentication failed: ${verifyResult.message || "Signature verification failed"}`, statusCode, + requestId, { code: verifyResult.code || "INVALID_SIGNATURE", - traceId: requestId, } ) } @@ -179,10 +175,15 @@ export const POST: APIRoute = async ({ request, params }) => { const svmDripAdapter = new SvmDripAdapter() if (!svmDripAdapter.isDripAvailable(chainConfig)) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Drip is not available for this chain", 503, { - code: "drip_unavailable", - traceId: requestId, - }) + return createErrorResponse( + APIErrorType.VALIDATION_ERROR, + "Drip is not available for this chain", + 503, + requestId, + { + code: "drip_unavailable", + } + ) } // 6. Execute the drip (rate limiting handled on-chain by Solana program) @@ -234,7 +235,7 @@ export const POST: APIRoute = async ({ request, params }) => { token, receiver, }, - traceId: requestId, + requestId, }), { headers: { ...commonHeaders, ...securityHeaders }, @@ -274,11 +275,11 @@ export const POST: APIRoute = async ({ request, params }) => { error.statusCode === 400 ? APIErrorType.VALIDATION_ERROR : APIErrorType.SERVER_ERROR, error.message, error.statusCode, - { traceId: requestId } + requestId ) } // Handle other errors - return createErrorResponse(APIErrorType.SERVER_ERROR, "Failed to execute drip", 500, { traceId: requestId }) + return createErrorResponse(APIErrorType.SERVER_ERROR, "Failed to execute drip", 500, requestId) } } diff --git a/src/pages/api/ccip/v1/drips/[chainName]/index.ts b/src/pages/api/ccip/v1/drips/[chainName]/index.ts index b89cee85286..4a72b2a3256 100644 --- a/src/pages/api/ccip/v1/drips/[chainName]/index.ts +++ b/src/pages/api/ccip/v1/drips/[chainName]/index.ts @@ -1,7 +1,8 @@ import type { APIRoute } from "astro" -import { APIErrorType, createErrorResponse, commonHeaders, CCIPError } from "@api/ccip/utils.ts" +import { APIErrorType, createErrorResponse, CCIPError } from "~/lib/ccip/utils.ts" +import { commonHeaders } from "@lib/api/cacheHeaders.ts" import { logger } from "@lib/logging/index.js" -import { FaucetService } from "../../../../services/faucet-service.ts" +import { FaucetService } from "~/lib/ccip/services/faucet-service.ts" export const prerender = false export const runtime = "nodejs" // Required for crypto operations @@ -28,9 +29,8 @@ export const POST: APIRoute = async ({ request, params }) => { try { body = await request.json() } catch { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid JSON body", 400, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid JSON body", 400, requestId, { code: "invalid_json", - traceId: requestId, }) } @@ -49,30 +49,26 @@ export const POST: APIRoute = async ({ request, params }) => { // 3. Input validation if (!token || typeof token !== "string") { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid token parameter", 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid token parameter", 422, requestId, { code: "invalid_token", - traceId: requestId, }) } if (!receiver || typeof receiver !== "string") { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid receiver parameter", 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid receiver parameter", 422, requestId, { code: "invalid_receiver", - traceId: requestId, }) } if (!challenge || typeof challenge !== "string") { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid challenge parameter", 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid challenge parameter", 422, requestId, { code: "bad_challenge", - traceId: requestId, }) } if (!receiverSignature || typeof receiverSignature !== "string") { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid signature parameter", 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Invalid signature parameter", 422, requestId, { code: "invalid_signature", - traceId: requestId, }) } @@ -109,10 +105,15 @@ export const POST: APIRoute = async ({ request, params }) => { // 5. Handle verification result if (verifyResult.status === "error") { // Return 400 for verification failures (client error, not server error) - return createErrorResponse(APIErrorType.VALIDATION_ERROR, verifyResult.message || "Verification failed", 400, { - code: verifyResult.code || "verification_failed", - traceId: requestId, - }) + return createErrorResponse( + APIErrorType.VALIDATION_ERROR, + verifyResult.message || "Verification failed", + 400, + requestId, + { + code: verifyResult.code || "verification_failed", + } + ) } // 6. Security headers @@ -144,7 +145,7 @@ export const POST: APIRoute = async ({ request, params }) => { error.statusCode === 400 ? APIErrorType.VALIDATION_ERROR : APIErrorType.SERVER_ERROR, error.message, error.statusCode, - { traceId: requestId } + requestId ) } @@ -153,56 +154,49 @@ export const POST: APIRoute = async ({ request, params }) => { const errorMessage = error.message.toLowerCase() if (errorMessage.includes("challenge expired")) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Challenge has expired", 401, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Challenge has expired", 401, requestId, { code: "challenge_expired", - traceId: requestId, }) } if (errorMessage.includes("challenge tampered") || errorMessage.includes("invalid hmac")) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Challenge has been tampered with", 401, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Challenge has been tampered with", 401, requestId, { code: "challenge_tampered", - traceId: requestId, }) } if (errorMessage.includes("signature verification failed")) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Signature verification failed", 401, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Signature verification failed", 401, requestId, { code: "invalid_signature", - traceId: requestId, }) } if (errorMessage.includes("origin mismatch")) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Challenge origin mismatch", 401, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, "Challenge origin mismatch", 401, requestId, { code: "origin_mismatch", - traceId: requestId, }) } if (errorMessage.includes("not supported")) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, requestId, { code: "unsupported_chain", - traceId: requestId, }) } if (errorMessage.includes("invalid address")) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, requestId, { code: "invalid_address", - traceId: requestId, }) } if (errorMessage.includes("not allowed")) { - return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, { + return createErrorResponse(APIErrorType.VALIDATION_ERROR, error.message, 422, requestId, { code: "unsupported_token", - traceId: requestId, }) } } // Handle other errors - return createErrorResponse(APIErrorType.SERVER_ERROR, "Failed to verify signature", 500, { traceId: requestId }) + return createErrorResponse(APIErrorType.SERVER_ERROR, "Failed to verify signature", 500, requestId) } } diff --git a/src/pages/api/ccip/v1/lanes.ts b/src/pages/api/ccip/v1/lanes.ts index d0936224e3f..7399e2bf378 100644 --- a/src/pages/api/ccip/v1/lanes.ts +++ b/src/pages/api/ccip/v1/lanes.ts @@ -3,16 +3,15 @@ import { validateEnvironment, validateOutputKey, handleApiError, - successHeaders, - commonHeaders, APIErrorType, createErrorResponse, CCIPError, -} from "../utils.ts" +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" import { logger } from "@lib/logging/index.js" -import type { LaneFilterType, LaneApiResponse, LaneMetadata } from "../types/index.ts" -import { LaneDataService } from "../../services/lane-data.ts" +import type { LaneFilterType, LaneApiResponse, LaneMetadata } from "~/lib/ccip/types/index.ts" +import { LaneDataService } from "~/lib/ccip/services/lane-data.ts" export const prerender = false @@ -39,12 +38,12 @@ export const GET: APIRoute = async ({ request }) => { // Get filters for lanes const filters: LaneFilterType = { - sourceChainId: params.get("sourceChainId") || undefined, - destinationChainId: params.get("destinationChainId") || undefined, - sourceSelector: params.get("sourceSelector") || undefined, - destinationSelector: params.get("destinationSelector") || undefined, - sourceInternalId: params.get("sourceInternalId") || undefined, - destinationInternalId: params.get("destinationInternalId") || undefined, + sourceChainId: params.get("source_chain_id") || undefined, + destinationChainId: params.get("destination_chain_id") || undefined, + sourceSelector: params.get("source_selector") || undefined, + destinationSelector: params.get("destination_selector") || undefined, + sourceInternalId: params.get("source_internal_id") || undefined, + destinationInternalId: params.get("destination_internal_id") || undefined, version: params.get("version") || undefined, } @@ -55,7 +54,7 @@ export const GET: APIRoute = async ({ request }) => { }) // Validate output key - const outputKey = validateOutputKey(params.get("outputKey") || undefined) + const outputKey = validateOutputKey(params.get("output_key") || undefined) logger.debug({ message: "Output key validated", requestId, @@ -117,7 +116,7 @@ export const GET: APIRoute = async ({ request }) => { }) return new Response(JSON.stringify(response), { - headers: { ...commonHeaders, ...successHeaders }, + headers: jsonHeaders, }) } catch (error) { logger.error({ @@ -133,16 +132,11 @@ export const GET: APIRoute = async ({ request }) => { error.statusCode === 400 ? APIErrorType.VALIDATION_ERROR : APIErrorType.SERVER_ERROR, error.message, error.statusCode, - {} + requestId ) } // Handle other errors - if (error instanceof Error) { - return createErrorResponse(APIErrorType.SERVER_ERROR, "Failed to process lanes request", 500, { - message: error.message, - }) - } - return handleApiError(error) + return handleApiError(error, requestId) } } diff --git a/src/pages/api/ccip/v1/lanes/by-chain-id/[source]/[destination]/index.ts b/src/pages/api/ccip/v1/lanes/by-chain-id/[source]/[destination]/index.ts new file mode 100644 index 00000000000..214341f63e5 --- /dev/null +++ b/src/pages/api/ccip/v1/lanes/by-chain-id/[source]/[destination]/index.ts @@ -0,0 +1,166 @@ +import type { APIRoute } from "astro" +import { + validateEnvironment, + validateInternalIdFormat, + handleApiError, + APIErrorType, + createErrorResponse, + CCIPError, +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" +import { logger } from "@lib/logging/index.js" + +import type { LaneDetailApiResponse, LaneDetailMetadata } from "~/lib/ccip/types/index.ts" +import { LaneDataService } from "~/lib/ccip/services/lane-data.ts" +import { ChainIdentifierService } from "~/lib/ccip/services/chain-identifier.ts" +import { loadReferenceData, Version } from "@config/data/ccip/index.ts" +import type { ChainConfig } from "@config/data/ccip/types.ts" + +export const prerender = false + +export const GET: APIRoute = async ({ params, request }) => { + const requestId = crypto.randomUUID() + + try { + const { source, destination } = params + + logger.info({ + message: "Processing CCIP lane detail request (by-chain-id)", + requestId, + url: request.url, + source, + destination, + }) + + // Validate path parameters + if (!source) { + throw new CCIPError(400, "source chain ID is required in path") + } + if (!destination) { + throw new CCIPError(400, "destination chain ID is required in path") + } + + const url = new URL(request.url) + const queryParams = url.searchParams + + // Validate environment + const environment = validateEnvironment(queryParams.get("environment") || undefined) + logger.debug({ + message: "Environment validated", + requestId, + environment, + }) + + // Validate internalIdFormat parameter (controls output format for internal IDs) + const internalIdFormat = validateInternalIdFormat(queryParams.get("internalIdFormat") || undefined) + logger.debug({ + message: "Internal ID format validated", + requestId, + internalIdFormat, + }) + + // Initialize chain identifier service for formatting + const chainIdService = new ChainIdentifierService(environment, internalIdFormat) + + const laneDataService = new LaneDataService() + + // Load reference data to resolve chain IDs to directory keys + const { chainsReferenceData } = loadReferenceData({ + environment, + version: Version.V1_2_0, + }) + + // Resolve chain IDs to directory keys + const sourceDirectoryKey = laneDataService.resolveToInternalId( + source, + "chainId", + chainsReferenceData as Record + ) + const destDirectoryKey = laneDataService.resolveToInternalId( + destination, + "chainId", + chainsReferenceData as Record + ) + + if (!sourceDirectoryKey || !destDirectoryKey) { + throw new CCIPError(404, `Lane from chain '${source}' to chain '${destination}' not found`) + } + + const result = await laneDataService.getLaneDetails(environment, sourceDirectoryKey, destDirectoryKey, "internalId") + + if (!result.data) { + throw new CCIPError(404, `Lane from chain '${source}' to chain '${destination}' not found`) + } + + logger.info({ + message: "Lane detail data retrieved successfully", + requestId, + source, + destination, + }) + + // Format the internalId fields in the response data based on internalIdFormat + const formattedSourceInternalId = chainIdService.format(sourceDirectoryKey, internalIdFormat) + const formattedDestInternalId = chainIdService.format(destDirectoryKey, internalIdFormat) + + const formattedData = { + ...result.data, + sourceChain: { + ...result.data.sourceChain, + internalId: formattedSourceInternalId, + }, + destinationChain: { + ...result.data.destinationChain, + internalId: formattedDestInternalId, + }, + } + + // Create lane detail metadata (keep chain IDs as that's what user passed) + const metadata: LaneDetailMetadata = { + environment, + timestamp: new Date().toISOString(), + requestId, + sourceChain: source, + destinationChain: destination, + } + + const response: LaneDetailApiResponse = { + metadata, + data: formattedData, + } + + logger.info({ + message: "Sending successful response", + requestId, + metadata, + }) + + return new Response(JSON.stringify(response), { + headers: jsonHeaders, + }) + } catch (error) { + logger.error({ + message: "Error processing lane detail request", + requestId, + error: error instanceof Error ? error.message : "Unknown error", + stack: error instanceof Error ? error.stack : undefined, + }) + + // Handle CCIPError specifically, preserving its status code + if (error instanceof CCIPError) { + return createErrorResponse( + error.statusCode === 400 + ? APIErrorType.VALIDATION_ERROR + : error.statusCode === 404 + ? APIErrorType.NOT_FOUND + : APIErrorType.SERVER_ERROR, + error.message, + error.statusCode, + requestId + ) + } + + // Handle other errors + return handleApiError(error, requestId) + } +} diff --git a/src/pages/api/ccip/v1/lanes/by-chain-id/[source]/[destination]/supported-tokens.ts b/src/pages/api/ccip/v1/lanes/by-chain-id/[source]/[destination]/supported-tokens.ts new file mode 100644 index 00000000000..d9fdc602b53 --- /dev/null +++ b/src/pages/api/ccip/v1/lanes/by-chain-id/[source]/[destination]/supported-tokens.ts @@ -0,0 +1,156 @@ +import type { APIRoute } from "astro" +import { + validateEnvironment, + validateInternalIdFormat, + handleApiError, + APIErrorType, + createErrorResponse, + CCIPError, +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" +import { logger } from "@lib/logging/index.js" + +import type { SupportedTokensApiResponse, SupportedTokensMetadata } from "~/lib/ccip/types/index.ts" +import { LaneDataService } from "~/lib/ccip/services/lane-data.ts" +import { ChainIdentifierService } from "~/lib/ccip/services/chain-identifier.ts" +import { loadReferenceData, Version } from "@config/data/ccip/index.ts" +import type { ChainConfig } from "@config/data/ccip/types.ts" + +export const prerender = false + +export const GET: APIRoute = async ({ params, request }) => { + const requestId = crypto.randomUUID() + + try { + const { source, destination } = params + + logger.info({ + message: "Processing CCIP supported tokens request (by-chain-id)", + requestId, + url: request.url, + source, + destination, + }) + + // Validate path parameters + if (!source) { + throw new CCIPError(400, "source chain ID is required in path") + } + if (!destination) { + throw new CCIPError(400, "destination chain ID is required in path") + } + + const url = new URL(request.url) + const queryParams = url.searchParams + + // Validate environment + const environment = validateEnvironment(queryParams.get("environment") || undefined) + logger.debug({ + message: "Environment validated", + requestId, + environment, + }) + + // Validate internalIdFormat parameter (controls output format for internal IDs) + const internalIdFormat = validateInternalIdFormat(queryParams.get("internalIdFormat") || undefined) + logger.debug({ + message: "Internal ID format validated", + requestId, + internalIdFormat, + }) + + // Initialize chain identifier service for formatting (reserved for future use) + const _chainIdService = new ChainIdentifierService(environment, internalIdFormat) + + const laneDataService = new LaneDataService() + + // Load reference data to resolve chain IDs to directory keys + const { chainsReferenceData } = loadReferenceData({ + environment, + version: Version.V1_2_0, + }) + + // Resolve chain IDs to directory keys + const sourceDirectoryKey = laneDataService.resolveToInternalId( + source, + "chainId", + chainsReferenceData as Record + ) + const destDirectoryKey = laneDataService.resolveToInternalId( + destination, + "chainId", + chainsReferenceData as Record + ) + + if (!sourceDirectoryKey || !destDirectoryKey) { + throw new CCIPError(404, `Lane from chain '${source}' to chain '${destination}' not found`) + } + + const result = await laneDataService.getSupportedTokensWithRateLimits( + environment, + sourceDirectoryKey, + destDirectoryKey, + "internalId" + ) + + if (!result.data) { + throw new CCIPError(404, `Lane from chain '${source}' to chain '${destination}' not found`) + } + + logger.info({ + message: "Supported tokens data retrieved successfully", + requestId, + source, + destination, + tokenCount: result.tokenCount, + }) + + // Create metadata (keep chain IDs in metadata as that's what user passed) + const metadata: SupportedTokensMetadata = { + environment, + timestamp: new Date().toISOString(), + requestId, + sourceChain: source, + destinationChain: destination, + tokenCount: result.tokenCount, + } + + const response: SupportedTokensApiResponse = { + metadata, + data: result.data, + } + + logger.info({ + message: "Sending successful response", + requestId, + metadata, + }) + + return new Response(JSON.stringify(response), { + headers: jsonHeaders, + }) + } catch (error) { + logger.error({ + message: "Error processing supported tokens request", + requestId, + error: error instanceof Error ? error.message : "Unknown error", + stack: error instanceof Error ? error.stack : undefined, + }) + + if (error instanceof CCIPError) { + return createErrorResponse( + error.statusCode === 400 + ? APIErrorType.VALIDATION_ERROR + : error.statusCode === 404 + ? APIErrorType.NOT_FOUND + : APIErrorType.SERVER_ERROR, + error.message, + error.statusCode, + requestId + ) + } + + // Handle other errors + return handleApiError(error, requestId) + } +} diff --git a/src/pages/api/ccip/v1/lanes/by-internal-id/[source]/[destination]/index.ts b/src/pages/api/ccip/v1/lanes/by-internal-id/[source]/[destination]/index.ts new file mode 100644 index 00000000000..66a1bf0e276 --- /dev/null +++ b/src/pages/api/ccip/v1/lanes/by-internal-id/[source]/[destination]/index.ts @@ -0,0 +1,158 @@ +import type { APIRoute } from "astro" +import { + validateEnvironment, + validateInternalIdFormat, + handleApiError, + APIErrorType, + createErrorResponse, + CCIPError, +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" +import { logger } from "@lib/logging/index.js" + +import type { LaneDetailApiResponse, LaneDetailMetadata } from "~/lib/ccip/types/index.ts" +import { LaneDataService } from "~/lib/ccip/services/lane-data.ts" +import { ChainIdentifierService } from "~/lib/ccip/services/chain-identifier.ts" + +export const prerender = false + +export const GET: APIRoute = async ({ params, request }) => { + const requestId = crypto.randomUUID() + + try { + const { source, destination } = params + + logger.info({ + message: "Processing CCIP lane detail request (by-internal-id)", + requestId, + url: request.url, + source, + destination, + }) + + // Validate path parameters + if (!source) { + throw new CCIPError(400, "source internal ID is required in path") + } + if (!destination) { + throw new CCIPError(400, "destination internal ID is required in path") + } + + const url = new URL(request.url) + const queryParams = url.searchParams + + // Validate environment + const environment = validateEnvironment(queryParams.get("environment") || undefined) + logger.debug({ + message: "Environment validated", + requestId, + environment, + }) + + // Validate internalIdFormat parameter (controls output format) + const internalIdFormat = validateInternalIdFormat(queryParams.get("internalIdFormat") || undefined) + logger.debug({ + message: "Internal ID format validated", + requestId, + internalIdFormat, + }) + + // Initialize chain identifier service for formatting + const chainIdService = new ChainIdentifierService(environment, internalIdFormat) + + // Resolve source and destination to directory keys for data lookup + const sourceResolved = chainIdService.resolve(source) + const destResolved = chainIdService.resolve(destination) + + if (!sourceResolved) { + throw new CCIPError(400, `Invalid source chain identifier: '${source}'`) + } + if (!destResolved) { + throw new CCIPError(400, `Invalid destination chain identifier: '${destination}'`) + } + + const laneDataService = new LaneDataService() + const result = await laneDataService.getLaneDetails( + environment, + sourceResolved.directoryKey, + destResolved.directoryKey, + "internalId" + ) + + if (!result.data) { + throw new CCIPError(404, `Lane from '${source}' to '${destination}' not found`) + } + + logger.info({ + message: "Lane detail data retrieved successfully", + requestId, + source, + destination, + }) + + // Format chain identifiers based on internalIdFormat + const formattedSource = chainIdService.format(sourceResolved.directoryKey, internalIdFormat) + const formattedDest = chainIdService.format(destResolved.directoryKey, internalIdFormat) + + // Format the internalId fields in the response data + const formattedData = { + ...result.data, + sourceChain: { + ...result.data.sourceChain, + internalId: formattedSource, + }, + destinationChain: { + ...result.data.destinationChain, + internalId: formattedDest, + }, + } + + // Create lane detail metadata with formatted chain identifiers + const metadata: LaneDetailMetadata = { + environment, + timestamp: new Date().toISOString(), + requestId, + sourceChain: formattedSource, + destinationChain: formattedDest, + } + + const response: LaneDetailApiResponse = { + metadata, + data: formattedData, + } + + logger.info({ + message: "Sending successful response", + requestId, + metadata, + }) + + return new Response(JSON.stringify(response), { + headers: jsonHeaders, + }) + } catch (error) { + logger.error({ + message: "Error processing lane detail request", + requestId, + error: error instanceof Error ? error.message : "Unknown error", + stack: error instanceof Error ? error.stack : undefined, + }) + + // Handle CCIPError specifically, preserving its status code + if (error instanceof CCIPError) { + return createErrorResponse( + error.statusCode === 400 + ? APIErrorType.VALIDATION_ERROR + : error.statusCode === 404 + ? APIErrorType.NOT_FOUND + : APIErrorType.SERVER_ERROR, + error.message, + error.statusCode, + requestId + ) + } + + // Handle other errors + return handleApiError(error, requestId) + } +} diff --git a/src/pages/api/ccip/v1/lanes/by-internal-id/[source]/[destination]/supported-tokens.ts b/src/pages/api/ccip/v1/lanes/by-internal-id/[source]/[destination]/supported-tokens.ts new file mode 100644 index 00000000000..e052858a291 --- /dev/null +++ b/src/pages/api/ccip/v1/lanes/by-internal-id/[source]/[destination]/supported-tokens.ts @@ -0,0 +1,146 @@ +import type { APIRoute } from "astro" +import { + validateEnvironment, + validateInternalIdFormat, + handleApiError, + APIErrorType, + createErrorResponse, + CCIPError, +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" +import { logger } from "@lib/logging/index.js" + +import type { SupportedTokensApiResponse, SupportedTokensMetadata } from "~/lib/ccip/types/index.ts" +import { LaneDataService } from "~/lib/ccip/services/lane-data.ts" +import { ChainIdentifierService } from "~/lib/ccip/services/chain-identifier.ts" + +export const prerender = false + +export const GET: APIRoute = async ({ params, request }) => { + const requestId = crypto.randomUUID() + + try { + const { source, destination } = params + + logger.info({ + message: "Processing CCIP supported tokens request (by-internal-id)", + requestId, + url: request.url, + source, + destination, + }) + + // Validate path parameters + if (!source) { + throw new CCIPError(400, "source internal ID is required in path") + } + if (!destination) { + throw new CCIPError(400, "destination internal ID is required in path") + } + + const url = new URL(request.url) + const queryParams = url.searchParams + + // Validate environment + const environment = validateEnvironment(queryParams.get("environment") || undefined) + logger.debug({ + message: "Environment validated", + requestId, + environment, + }) + + // Validate internalIdFormat parameter (controls output format) + const internalIdFormat = validateInternalIdFormat(queryParams.get("internalIdFormat") || undefined) + logger.debug({ + message: "Internal ID format validated", + requestId, + internalIdFormat, + }) + + // Initialize chain identifier service for formatting + const chainIdService = new ChainIdentifierService(environment, internalIdFormat) + + // Resolve source and destination to directory keys for data lookup + const sourceResolved = chainIdService.resolve(source) + const destResolved = chainIdService.resolve(destination) + + if (!sourceResolved) { + throw new CCIPError(400, `Invalid source chain identifier: '${source}'`) + } + if (!destResolved) { + throw new CCIPError(400, `Invalid destination chain identifier: '${destination}'`) + } + + const laneDataService = new LaneDataService() + const result = await laneDataService.getSupportedTokensWithRateLimits( + environment, + sourceResolved.directoryKey, + destResolved.directoryKey, + "internalId" + ) + + if (!result.data) { + throw new CCIPError(404, `Lane from '${source}' to '${destination}' not found`) + } + + logger.info({ + message: "Supported tokens data retrieved successfully", + requestId, + source, + destination, + tokenCount: result.tokenCount, + }) + + // Format chain identifiers based on internalIdFormat + const formattedSource = chainIdService.format(sourceResolved.directoryKey, internalIdFormat) + const formattedDest = chainIdService.format(destResolved.directoryKey, internalIdFormat) + + // Create metadata with formatted chain identifiers + const metadata: SupportedTokensMetadata = { + environment, + timestamp: new Date().toISOString(), + requestId, + sourceChain: formattedSource, + destinationChain: formattedDest, + tokenCount: result.tokenCount, + } + + const response: SupportedTokensApiResponse = { + metadata, + data: result.data, + } + + logger.info({ + message: "Sending successful response", + requestId, + metadata, + }) + + return new Response(JSON.stringify(response), { + headers: jsonHeaders, + }) + } catch (error) { + logger.error({ + message: "Error processing supported tokens request", + requestId, + error: error instanceof Error ? error.message : "Unknown error", + stack: error instanceof Error ? error.stack : undefined, + }) + + if (error instanceof CCIPError) { + return createErrorResponse( + error.statusCode === 400 + ? APIErrorType.VALIDATION_ERROR + : error.statusCode === 404 + ? APIErrorType.NOT_FOUND + : APIErrorType.SERVER_ERROR, + error.message, + error.statusCode, + requestId + ) + } + + // Handle other errors + return handleApiError(error, requestId) + } +} diff --git a/src/pages/api/ccip/v1/lanes/by-selector/[source]/[destination]/index.ts b/src/pages/api/ccip/v1/lanes/by-selector/[source]/[destination]/index.ts new file mode 100644 index 00000000000..600ed75605b --- /dev/null +++ b/src/pages/api/ccip/v1/lanes/by-selector/[source]/[destination]/index.ts @@ -0,0 +1,166 @@ +import type { APIRoute } from "astro" +import { + validateEnvironment, + validateInternalIdFormat, + handleApiError, + APIErrorType, + createErrorResponse, + CCIPError, +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" +import { logger } from "@lib/logging/index.js" + +import type { LaneDetailApiResponse, LaneDetailMetadata } from "~/lib/ccip/types/index.ts" +import { LaneDataService } from "~/lib/ccip/services/lane-data.ts" +import { ChainIdentifierService } from "~/lib/ccip/services/chain-identifier.ts" +import { loadReferenceData, Version } from "@config/data/ccip/index.ts" +import type { ChainConfig } from "@config/data/ccip/types.ts" + +export const prerender = false + +export const GET: APIRoute = async ({ params, request }) => { + const requestId = crypto.randomUUID() + + try { + const { source, destination } = params + + logger.info({ + message: "Processing CCIP lane detail request (by-selector)", + requestId, + url: request.url, + source, + destination, + }) + + // Validate path parameters + if (!source) { + throw new CCIPError(400, "source selector is required in path") + } + if (!destination) { + throw new CCIPError(400, "destination selector is required in path") + } + + const url = new URL(request.url) + const queryParams = url.searchParams + + // Validate environment + const environment = validateEnvironment(queryParams.get("environment") || undefined) + logger.debug({ + message: "Environment validated", + requestId, + environment, + }) + + // Validate internalIdFormat parameter (controls output format for internal IDs) + const internalIdFormat = validateInternalIdFormat(queryParams.get("internalIdFormat") || undefined) + logger.debug({ + message: "Internal ID format validated", + requestId, + internalIdFormat, + }) + + // Initialize chain identifier service for formatting + const chainIdService = new ChainIdentifierService(environment, internalIdFormat) + + const laneDataService = new LaneDataService() + + // Load reference data to resolve selectors to directory keys + const { chainsReferenceData } = loadReferenceData({ + environment, + version: Version.V1_2_0, + }) + + // Resolve selectors to directory keys + const sourceDirectoryKey = laneDataService.resolveToInternalId( + source, + "selector", + chainsReferenceData as Record + ) + const destDirectoryKey = laneDataService.resolveToInternalId( + destination, + "selector", + chainsReferenceData as Record + ) + + if (!sourceDirectoryKey || !destDirectoryKey) { + throw new CCIPError(404, `Lane from selector '${source}' to selector '${destination}' not found`) + } + + const result = await laneDataService.getLaneDetails(environment, sourceDirectoryKey, destDirectoryKey, "internalId") + + if (!result.data) { + throw new CCIPError(404, `Lane from selector '${source}' to selector '${destination}' not found`) + } + + logger.info({ + message: "Lane detail data retrieved successfully", + requestId, + source, + destination, + }) + + // Format the internalId fields in the response data based on internalIdFormat + const formattedSourceInternalId = chainIdService.format(sourceDirectoryKey, internalIdFormat) + const formattedDestInternalId = chainIdService.format(destDirectoryKey, internalIdFormat) + + const formattedData = { + ...result.data, + sourceChain: { + ...result.data.sourceChain, + internalId: formattedSourceInternalId, + }, + destinationChain: { + ...result.data.destinationChain, + internalId: formattedDestInternalId, + }, + } + + // Create lane detail metadata (keep selectors as that's what user passed) + const metadata: LaneDetailMetadata = { + environment, + timestamp: new Date().toISOString(), + requestId, + sourceChain: source, + destinationChain: destination, + } + + const response: LaneDetailApiResponse = { + metadata, + data: formattedData, + } + + logger.info({ + message: "Sending successful response", + requestId, + metadata, + }) + + return new Response(JSON.stringify(response), { + headers: jsonHeaders, + }) + } catch (error) { + logger.error({ + message: "Error processing lane detail request", + requestId, + error: error instanceof Error ? error.message : "Unknown error", + stack: error instanceof Error ? error.stack : undefined, + }) + + // Handle CCIPError specifically, preserving its status code + if (error instanceof CCIPError) { + return createErrorResponse( + error.statusCode === 400 + ? APIErrorType.VALIDATION_ERROR + : error.statusCode === 404 + ? APIErrorType.NOT_FOUND + : APIErrorType.SERVER_ERROR, + error.message, + error.statusCode, + requestId + ) + } + + // Handle other errors + return handleApiError(error, requestId) + } +} diff --git a/src/pages/api/ccip/v1/lanes/by-selector/[source]/[destination]/supported-tokens.ts b/src/pages/api/ccip/v1/lanes/by-selector/[source]/[destination]/supported-tokens.ts new file mode 100644 index 00000000000..ea2a954615e --- /dev/null +++ b/src/pages/api/ccip/v1/lanes/by-selector/[source]/[destination]/supported-tokens.ts @@ -0,0 +1,156 @@ +import type { APIRoute } from "astro" +import { + validateEnvironment, + validateInternalIdFormat, + handleApiError, + APIErrorType, + createErrorResponse, + CCIPError, +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" +import { logger } from "@lib/logging/index.js" + +import type { SupportedTokensApiResponse, SupportedTokensMetadata } from "~/lib/ccip/types/index.ts" +import { LaneDataService } from "~/lib/ccip/services/lane-data.ts" +import { ChainIdentifierService } from "~/lib/ccip/services/chain-identifier.ts" +import { loadReferenceData, Version } from "@config/data/ccip/index.ts" +import type { ChainConfig } from "@config/data/ccip/types.ts" + +export const prerender = false + +export const GET: APIRoute = async ({ params, request }) => { + const requestId = crypto.randomUUID() + + try { + const { source, destination } = params + + logger.info({ + message: "Processing CCIP supported tokens request (by-selector)", + requestId, + url: request.url, + source, + destination, + }) + + // Validate path parameters + if (!source) { + throw new CCIPError(400, "source selector is required in path") + } + if (!destination) { + throw new CCIPError(400, "destination selector is required in path") + } + + const url = new URL(request.url) + const queryParams = url.searchParams + + // Validate environment + const environment = validateEnvironment(queryParams.get("environment") || undefined) + logger.debug({ + message: "Environment validated", + requestId, + environment, + }) + + // Validate internalIdFormat parameter (controls output format for internal IDs) + const internalIdFormat = validateInternalIdFormat(queryParams.get("internalIdFormat") || undefined) + logger.debug({ + message: "Internal ID format validated", + requestId, + internalIdFormat, + }) + + // Initialize chain identifier service for formatting (reserved for future use) + const _chainIdService = new ChainIdentifierService(environment, internalIdFormat) + + const laneDataService = new LaneDataService() + + // Load reference data to resolve selectors to directory keys + const { chainsReferenceData } = loadReferenceData({ + environment, + version: Version.V1_2_0, + }) + + // Resolve selectors to directory keys + const sourceDirectoryKey = laneDataService.resolveToInternalId( + source, + "selector", + chainsReferenceData as Record + ) + const destDirectoryKey = laneDataService.resolveToInternalId( + destination, + "selector", + chainsReferenceData as Record + ) + + if (!sourceDirectoryKey || !destDirectoryKey) { + throw new CCIPError(404, `Lane from selector '${source}' to selector '${destination}' not found`) + } + + const result = await laneDataService.getSupportedTokensWithRateLimits( + environment, + sourceDirectoryKey, + destDirectoryKey, + "internalId" + ) + + if (!result.data) { + throw new CCIPError(404, `Lane from selector '${source}' to selector '${destination}' not found`) + } + + logger.info({ + message: "Supported tokens data retrieved successfully", + requestId, + source, + destination, + tokenCount: result.tokenCount, + }) + + // Create metadata (keep selectors in metadata as that's what user passed) + const metadata: SupportedTokensMetadata = { + environment, + timestamp: new Date().toISOString(), + requestId, + sourceChain: source, + destinationChain: destination, + tokenCount: result.tokenCount, + } + + const response: SupportedTokensApiResponse = { + metadata, + data: result.data, + } + + logger.info({ + message: "Sending successful response", + requestId, + metadata, + }) + + return new Response(JSON.stringify(response), { + headers: jsonHeaders, + }) + } catch (error) { + logger.error({ + message: "Error processing supported tokens request", + requestId, + error: error instanceof Error ? error.message : "Unknown error", + stack: error instanceof Error ? error.stack : undefined, + }) + + if (error instanceof CCIPError) { + return createErrorResponse( + error.statusCode === 400 + ? APIErrorType.VALIDATION_ERROR + : error.statusCode === 404 + ? APIErrorType.NOT_FOUND + : APIErrorType.SERVER_ERROR, + error.message, + error.statusCode, + requestId + ) + } + + // Handle other errors + return handleApiError(error, requestId) + } +} diff --git a/src/pages/api/ccip/v1/rate-limits.ts b/src/pages/api/ccip/v1/rate-limits.ts new file mode 100644 index 00000000000..1e9f2473097 --- /dev/null +++ b/src/pages/api/ccip/v1/rate-limits.ts @@ -0,0 +1,109 @@ +import type { APIRoute } from "astro" +import { + validateEnvironment, + validateRateLimitsFilters, + createRateLimitsMetadata, + handleApiError, + APIErrorType, + createErrorResponse, + CCIPError, +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" +import { logger } from "@lib/logging/index.js" + +import type { RateLimitsApiResponse } from "~/lib/ccip/types/index.ts" +import { RateLimitsDataService } from "~/lib/ccip/services/rate-limits-data.ts" + +export const prerender = false + +export const GET: APIRoute = async ({ request }) => { + const requestId = crypto.randomUUID() + + try { + logger.info({ + message: "Processing CCIP rate-limits request", + requestId, + url: request.url, + }) + + const url = new URL(request.url) + const params = url.searchParams + + // Validate environment + const environment = validateEnvironment(params.get("environment") || undefined) + logger.debug({ + message: "Environment validated", + requestId, + environment, + }) + + // Validate and parse rate limits filters + const filters = validateRateLimitsFilters({ + sourceInternalId: params.get("source_internal_id") || undefined, + destinationInternalId: params.get("destination_internal_id") || undefined, + tokens: params.get("tokens") || undefined, + direction: params.get("direction") || undefined, + rateType: params.get("rate_type") || undefined, + }) + + logger.debug({ + message: "Filter parameters validated", + requestId, + filters, + }) + + const rateLimitsService = new RateLimitsDataService() + const { data, metadata: serviceMetadata } = await rateLimitsService.getFilteredRateLimits(environment, filters) + + logger.info({ + message: "Rate limits data retrieved successfully", + requestId, + tokenCount: serviceMetadata.tokenCount, + sourceChain: filters.sourceInternalId, + destinationChain: filters.destinationInternalId, + }) + + // Create rate-limits-specific metadata + const metadata = createRateLimitsMetadata( + environment, + filters.sourceInternalId, + filters.destinationInternalId, + serviceMetadata.tokenCount + ) + + const response: RateLimitsApiResponse = { + metadata, + data, + } + + logger.info({ + message: "Sending successful response", + requestId, + metadata, + }) + + return new Response(JSON.stringify(response), { + headers: jsonHeaders, + }) + } catch (error) { + logger.error({ + message: "Error processing rate-limits request", + requestId, + error: error instanceof Error ? error.message : "Unknown error", + stack: error instanceof Error ? error.stack : undefined, + }) + + // Handle CCIPError specifically, preserving its status code + if (error instanceof CCIPError) { + return createErrorResponse( + error.statusCode === 400 ? APIErrorType.VALIDATION_ERROR : APIErrorType.SERVER_ERROR, + error.message, + error.statusCode, + requestId + ) + } + + // Handle other errors + return handleApiError(error, requestId) + } +} diff --git a/src/pages/api/ccip/v1/tokens.ts b/src/pages/api/ccip/v1/tokens.ts index c11a39d77e5..8e374a9719f 100644 --- a/src/pages/api/ccip/v1/tokens.ts +++ b/src/pages/api/ccip/v1/tokens.ts @@ -2,19 +2,20 @@ import { APIRoute } from "astro" import { validateEnvironment, validateOutputKey, + validateInternalIdFormat, createTokenMetadata, handleApiError, - successHeaders, - commonHeaders, APIErrorType, createErrorResponse, CCIPError, loadChainConfiguration, -} from "../utils.ts" +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" import { logger } from "@lib/logging/index.js" -import type { TokenFilterType, TokenApiResponse } from "../types/index.ts" -import { TokenDataService } from "../../services/token-data.ts" +import type { TokenFilterType, TokenApiResponse, TokenChainData } from "~/lib/ccip/types/index.ts" +import { TokenDataService } from "~/lib/ccip/services/token-data.ts" +import { ChainIdentifierService } from "~/lib/ccip/services/chain-identifier.ts" export const prerender = false @@ -52,13 +53,21 @@ export const GET: APIRoute = async ({ request }) => { }) // Validate output key - we'll still use this for formatting display options - const outputKey = validateOutputKey(params.get("outputKey") || undefined) + const outputKey = validateOutputKey(params.get("output_key") || undefined) logger.debug({ message: "Output key validated", requestId, outputKey, }) + // Validate internalIdFormat parameter (only applies when output_key=internalId) + const internalIdFormat = validateInternalIdFormat(params.get("internalIdFormat") || undefined) + logger.debug({ + message: "Internal ID format validated", + requestId, + internalIdFormat, + }) + const config = await loadChainConfiguration(environment) logger.debug({ message: "Chain configuration loaded", @@ -82,6 +91,30 @@ export const GET: APIRoute = async ({ request }) => { filters, }) + // Apply internalIdFormat to transform chain keys when output_key=internalId + let formattedTokens = tokens + if (outputKey === "internalId") { + const chainIdService = new ChainIdentifierService(environment, internalIdFormat) + formattedTokens = {} + + for (const [tokenSymbol, chainData] of Object.entries(tokens)) { + const formattedChainData: Record = {} + + for (const [chainKey, tokenChainData] of Object.entries(chainData)) { + // Resolve and format the chain key + const resolved = chainIdService.resolve(chainKey) + if (resolved) { + const formattedKey = chainIdService.format(resolved.directoryKey, internalIdFormat) + formattedChainData[formattedKey] = tokenChainData + } else { + formattedChainData[chainKey] = tokenChainData + } + } + + formattedTokens[tokenSymbol] = formattedChainData + } + } + // Create token-specific metadata using the utility function const metadata = createTokenMetadata(environment) metadata.ignoredTokenCount = serviceMetadata.ignoredTokenCount @@ -89,7 +122,7 @@ export const GET: APIRoute = async ({ request }) => { const response: TokenApiResponse = { metadata, - data: tokens, + data: formattedTokens, ignored: errors, } @@ -100,7 +133,7 @@ export const GET: APIRoute = async ({ request }) => { }) return new Response(JSON.stringify(response), { - headers: { ...commonHeaders, ...successHeaders }, + headers: jsonHeaders, }) } catch (error) { logger.error({ @@ -116,16 +149,11 @@ export const GET: APIRoute = async ({ request }) => { error.statusCode === 400 ? APIErrorType.VALIDATION_ERROR : APIErrorType.SERVER_ERROR, error.message, error.statusCode, - {} + requestId ) } // Handle other errors - if (error instanceof Error) { - return createErrorResponse(APIErrorType.SERVER_ERROR, "Failed to process token request", 500, { - message: error.message, - }) - } - return handleApiError(error) + return handleApiError(error, requestId) } } diff --git a/src/pages/api/ccip/v1/tokens/[tokenCanonicalSymbol].ts b/src/pages/api/ccip/v1/tokens/[tokenCanonicalSymbol].ts new file mode 100644 index 00000000000..a5732c12095 --- /dev/null +++ b/src/pages/api/ccip/v1/tokens/[tokenCanonicalSymbol].ts @@ -0,0 +1,155 @@ +import type { APIRoute } from "astro" +import { + validateEnvironment, + validateOutputKey, + validateInternalIdFormat, + handleApiError, + APIErrorType, + createErrorResponse, + CCIPError, +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" +import { logger } from "@lib/logging/index.js" + +import type { TokenDetailApiResponse, TokenDetailMetadata, TokenDetailDataResponse } from "~/lib/ccip/types/index.ts" +import { TokenDataService } from "~/lib/ccip/services/token-data.ts" +import { ChainIdentifierService } from "~/lib/ccip/services/chain-identifier.ts" +import { resolveTokenSymbol } from "~/lib/ccip/graphql/utils/reference-data-resolver.ts" + +export const prerender = false + +export const GET: APIRoute = async ({ params, request }) => { + const requestId = crypto.randomUUID() + + try { + const tokenCanonicalSymbol = params.tokenCanonicalSymbol + ? decodeURIComponent(params.tokenCanonicalSymbol) + : undefined + + logger.info({ + message: "Processing CCIP token detail request", + requestId, + url: request.url, + tokenCanonicalSymbol, + }) + + // Validate token symbol is provided + if (!tokenCanonicalSymbol) { + throw new CCIPError(400, "tokenCanonicalSymbol parameter is required") + } + + const url = new URL(request.url) + const queryParams = url.searchParams + + // Validate environment + const environment = validateEnvironment(queryParams.get("environment") || undefined) + + // Resolve to canonical symbol (case-insensitive, trimmed) + const canonicalSymbol = resolveTokenSymbol(environment, tokenCanonicalSymbol) + if (!canonicalSymbol) { + throw new CCIPError(404, `Token '${tokenCanonicalSymbol}' not found`) + } + logger.debug({ + message: "Environment validated", + requestId, + environment, + }) + + // Validate output key for chain representation + const outputKey = validateOutputKey(queryParams.get("outputKey") || undefined) + logger.debug({ + message: "Output key validated", + requestId, + outputKey, + }) + + // Validate internalIdFormat parameter (only applies when outputKey=internalId) + const internalIdFormat = validateInternalIdFormat(queryParams.get("internalIdFormat") || undefined) + logger.debug({ + message: "Internal ID format validated", + requestId, + internalIdFormat, + }) + + const tokenDataService = new TokenDataService() + const result = await tokenDataService.getTokenWithFinality(environment, canonicalSymbol, outputKey) + + if (!result) { + throw new CCIPError(404, `Token '${canonicalSymbol}' not found`) + } + + // Apply internalIdFormat to transform chain keys when output_key=internalId + let formattedData = result.data + if (outputKey === "internalId") { + const chainIdService = new ChainIdentifierService(environment, internalIdFormat) + const formatted: TokenDetailDataResponse = {} + + for (const [chainKey, chainData] of Object.entries(result.data)) { + const resolved = chainIdService.resolve(chainKey) + if (resolved) { + const formattedKey = chainIdService.format(resolved.directoryKey, internalIdFormat) + formatted[formattedKey] = chainData + } else { + formatted[chainKey] = chainData + } + } + + formattedData = formatted + } + + logger.info({ + message: "Token detail data retrieved successfully", + requestId, + tokenCanonicalSymbol, + chainCount: result.metadata.chainCount, + }) + + // Create token detail metadata + const metadata: TokenDetailMetadata = { + environment, + timestamp: new Date().toISOString(), + requestId, + tokenSymbol: canonicalSymbol, + chainCount: result.metadata.chainCount, + } + + const response: TokenDetailApiResponse = { + metadata, + data: formattedData, + } + + logger.info({ + message: "Sending successful response", + requestId, + metadata, + }) + + return new Response(JSON.stringify(response), { + headers: jsonHeaders, + }) + } catch (error) { + logger.error({ + message: "Error processing token detail request", + requestId, + error: error instanceof Error ? error.message : "Unknown error", + stack: error instanceof Error ? error.stack : undefined, + }) + + // Handle CCIPError specifically, preserving its status code + if (error instanceof CCIPError) { + return createErrorResponse( + error.statusCode === 400 + ? APIErrorType.VALIDATION_ERROR + : error.statusCode === 404 + ? APIErrorType.NOT_FOUND + : APIErrorType.SERVER_ERROR, + error.message, + error.statusCode, + requestId + ) + } + + // Handle other errors + return handleApiError(error, requestId) + } +} diff --git a/src/pages/api/ccip/v1/tokens/[tokenCanonicalSymbol]/chains/[chain].ts b/src/pages/api/ccip/v1/tokens/[tokenCanonicalSymbol]/chains/[chain].ts new file mode 100644 index 00000000000..2bef22ba89d --- /dev/null +++ b/src/pages/api/ccip/v1/tokens/[tokenCanonicalSymbol]/chains/[chain].ts @@ -0,0 +1,164 @@ +import type { APIRoute } from "astro" +import { + validateEnvironment, + validateOutputKey, + validateInternalIdFormat, + handleApiError, + APIErrorType, + createErrorResponse, + CCIPError, +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" +import { logger } from "@lib/logging/index.js" + +import type { TokenDirectoryApiResponse, TokenDirectoryMetadata, NamingConvention } from "~/lib/ccip/types/index.ts" +import { TokenDirectoryService } from "~/lib/ccip/services/token-directory.ts" +import { ChainIdentifierService } from "~/lib/ccip/services/chain-identifier.ts" +import { resolveTokenSymbol } from "~/lib/ccip/graphql/utils/reference-data-resolver.ts" + +export const prerender = false + +export const GET: APIRoute = async ({ params, request }) => { + const requestId = crypto.randomUUID() + + try { + const tokenCanonicalSymbol = params.tokenCanonicalSymbol + ? decodeURIComponent(params.tokenCanonicalSymbol) + : undefined + const { chain } = params + + logger.info({ + message: "Processing CCIP token directory request", + requestId, + url: request.url, + tokenCanonicalSymbol, + chain, + }) + + // Validate token symbol is provided + if (!tokenCanonicalSymbol) { + throw new CCIPError(400, "tokenCanonicalSymbol parameter is required") + } + + // Validate chain parameter is provided + if (!chain) { + throw new CCIPError(400, "chain parameter is required") + } + + const url = new URL(request.url) + const queryParams = url.searchParams + + // Validate environment + const environment = validateEnvironment(queryParams.get("environment") || undefined) + logger.debug({ + message: "Environment validated", + requestId, + environment, + }) + + // Resolve to canonical symbol (case-insensitive, trimmed) + const canonicalSymbol = resolveTokenSymbol(environment, tokenCanonicalSymbol) + if (!canonicalSymbol) { + throw new CCIPError(404, `Token '${tokenCanonicalSymbol}' not found`) + } + + // Validate output key for chain representation + const outputKey = validateOutputKey(queryParams.get("outputKey") || undefined) + logger.debug({ + message: "Output key validated", + requestId, + outputKey, + }) + + // Validate internalIdFormat parameter (only applies when outputKey=internalId) + const internalIdFormat = validateInternalIdFormat(queryParams.get("internalIdFormat") || undefined) + logger.debug({ + message: "Internal ID format validated", + requestId, + internalIdFormat, + }) + + // Initialize services + const tokenDirectoryService = new TokenDirectoryService(requestId) + const chainIdService = new ChainIdentifierService(environment, internalIdFormat as NamingConvention) + + // Resolve chain identifier to get the formatted sourceChain for metadata + const resolvedChain = chainIdService.resolve(chain) + if (!resolvedChain) { + throw new CCIPError(404, `Chain '${chain}' not found`) + } + + // Get token directory data + const result = await tokenDirectoryService.getTokenDirectory( + environment, + canonicalSymbol, + chain, + outputKey, + internalIdFormat as NamingConvention + ) + + if (!result.data) { + throw new CCIPError(404, `Token '${canonicalSymbol}' not found on chain '${chain}'`) + } + + // Format sourceChain in metadata based on internalIdFormat + const formattedSourceChain = chainIdService.format(resolvedChain.directoryKey, internalIdFormat as NamingConvention) + + logger.info({ + message: "Token directory data retrieved successfully", + requestId, + canonicalSymbol, + chain, + outboundLaneCount: Object.keys(result.data.outboundLanes).length, + inboundLaneCount: Object.keys(result.data.inboundLanes).length, + }) + + // Create token directory metadata + const metadata: TokenDirectoryMetadata = { + environment, + timestamp: new Date().toISOString(), + requestId, + symbol: canonicalSymbol, + sourceChain: formattedSourceChain, + } + + const response: TokenDirectoryApiResponse = { + metadata, + data: result.data, + } + + logger.info({ + message: "Sending successful response", + requestId, + metadata, + }) + + return new Response(JSON.stringify(response), { + headers: jsonHeaders, + }) + } catch (error) { + logger.error({ + message: "Error processing token directory request", + requestId, + error: error instanceof Error ? error.message : "Unknown error", + stack: error instanceof Error ? error.stack : undefined, + }) + + // Handle CCIPError specifically, preserving its status code + if (error instanceof CCIPError) { + return createErrorResponse( + error.statusCode === 400 + ? APIErrorType.VALIDATION_ERROR + : error.statusCode === 404 + ? APIErrorType.NOT_FOUND + : APIErrorType.SERVER_ERROR, + error.message, + error.statusCode, + requestId + ) + } + + // Handle other errors + return handleApiError(error, requestId) + } +} diff --git a/src/pages/api/ccip/v1/tokens/[tokenCanonicalSymbol]/finality.ts b/src/pages/api/ccip/v1/tokens/[tokenCanonicalSymbol]/finality.ts new file mode 100644 index 00000000000..ac99350357c --- /dev/null +++ b/src/pages/api/ccip/v1/tokens/[tokenCanonicalSymbol]/finality.ts @@ -0,0 +1,139 @@ +import type { APIRoute } from "astro" +import { + validateEnvironment, + validateOutputKey, + handleApiError, + APIErrorType, + createErrorResponse, + CCIPError, +} from "~/lib/ccip/utils.ts" +import { jsonHeaders } from "@lib/api/cacheHeaders.ts" +import { logger } from "@lib/logging/index.js" + +import type { CustomFinalityConfig, TokenDetailMetadata } from "~/lib/ccip/types/index.ts" +import { TokenDataService } from "~/lib/ccip/services/token-data.ts" + +export const prerender = false + +interface TokenFinalityApiResponse { + metadata: TokenDetailMetadata + data: Record +} + +export const GET: APIRoute = async ({ params, request }) => { + const requestId = crypto.randomUUID() + + try { + const { tokenCanonicalSymbol } = params + + logger.info({ + message: "Processing CCIP token finality request", + requestId, + url: request.url, + tokenCanonicalSymbol, + }) + + // Validate token symbol is provided + if (!tokenCanonicalSymbol) { + throw new CCIPError(400, "tokenCanonicalSymbol parameter is required") + } + + const url = new URL(request.url) + const queryParams = url.searchParams + + // Validate environment + const environment = validateEnvironment(queryParams.get("environment") || undefined) + logger.debug({ + message: "Environment validated", + requestId, + environment, + }) + + // Validate output key for chain representation + const outputKey = validateOutputKey(queryParams.get("output_key") || undefined) + logger.debug({ + message: "Output key validated", + requestId, + outputKey, + }) + + const tokenDataService = new TokenDataService() + const result = await tokenDataService.getTokenWithFinality(environment, tokenCanonicalSymbol, outputKey) + + if (!result) { + throw new CCIPError(404, `Token '${tokenCanonicalSymbol}' not found`) + } + + logger.info({ + message: "Token finality data retrieved successfully", + requestId, + tokenCanonicalSymbol, + chainCount: result.metadata.chainCount, + }) + + // Extract finality data from the full token detail response + const finalityData: Record = {} + for (const [chainKey, chainData] of Object.entries(result.data)) { + finalityData[chainKey] = chainData.customFinality ?? null + } + + // Create token finality metadata + const metadata: TokenDetailMetadata = { + environment, + timestamp: new Date().toISOString(), + requestId, + tokenSymbol: tokenCanonicalSymbol, + chainCount: result.metadata.chainCount, + } + + const response: TokenFinalityApiResponse = { + metadata, + data: finalityData, + } + + logger.info({ + message: "Sending successful response", + requestId, + metadata, + }) + + return new Response(JSON.stringify(response), { + headers: jsonHeaders, + }) + } catch (error) { + logger.error({ + message: "Error processing token finality request", + requestId, + error: error instanceof Error ? error.message : "Unknown error", + stack: error instanceof Error ? error.stack : undefined, + }) + + // Handle CCIPError specifically, preserving its status code + if (error instanceof CCIPError) { + return createErrorResponse( + error.statusCode === 400 + ? APIErrorType.VALIDATION_ERROR + : error.statusCode === 404 + ? APIErrorType.NOT_FOUND + : APIErrorType.SERVER_ERROR, + error.message, + error.statusCode, + requestId + ) + } + + // Handle other errors + if (error instanceof Error) { + return createErrorResponse( + APIErrorType.SERVER_ERROR, + "Failed to process token finality request", + 500, + requestId, + { + message: error.message, + } + ) + } + return handleApiError(error, requestId) + } +} diff --git a/src/pages/api/page-markdown.ts b/src/pages/api/page-markdown.ts new file mode 100644 index 00000000000..d48e412ca57 --- /dev/null +++ b/src/pages/api/page-markdown.ts @@ -0,0 +1,139 @@ +/** + * API endpoint to generate markdown for a single page + * GET /api/page-markdown?path=/ccip/getting-started + */ + +import type { APIRoute } from "astro" +import fs from "fs/promises" +import path from "path" +import { transformPageToMarkdown } from "@lib/markdown/transformMarkdown.js" +import { extractFrontmatter, toCanonicalUrl, toContentRelative, getIsoStringOrUndefined } from "@lib/markdown/utils.js" +import { textPlainHeaders } from "@lib/api/cacheHeaders.js" + +const SITE_BASE = "https://docs.chain.link" + +// In-memory cache for transformed markdown +// TTL: 5 minutes (matches CDN cache duration) +const markdownCache = new Map() +const CACHE_TTL = 300_000 // 5 minutes in milliseconds + +export const prerender = false + +export const GET: APIRoute = async ({ request }) => { + const startTime = Date.now() + + try { + const url = new URL(request.url) + const requestedPath = url.searchParams.get("path") + const targetLanguage = url.searchParams.get("lang") || undefined + + if (!requestedPath) { + return new Response(JSON.stringify({ error: "Missing 'path' parameter" }), { + status: 400, + headers: { "Content-Type": "application/json" }, + }) + } + + // Check in-memory cache first (cache key includes language for multi-lang pages) + const cacheKey = targetLanguage ? `${requestedPath}:${targetLanguage}` : requestedPath + const cached = markdownCache.get(cacheKey) + if (cached && Date.now() - cached.timestamp < CACHE_TTL) { + const processingTime = Date.now() - startTime + return new Response(cached.markdown, { + status: 200, + headers: { + ...textPlainHeaders, + "X-Cache": "HIT", + "X-Processing-Time": `${processingTime}ms`, + }, + }) + } + + // Convert URL path to file path + // e.g., "/ccip/getting-started" -> "src/content/ccip/getting-started.mdx" + const cleanPath = requestedPath.startsWith("/") ? requestedPath.slice(1) : requestedPath + const possiblePaths = [ + path.resolve(`src/content/${cleanPath}.mdx`), + path.resolve(`src/content/${cleanPath}/index.mdx`), + path.resolve(`src/content/${cleanPath}.md`), + path.resolve(`src/content/${cleanPath}/index.md`), + ] + + let mdxAbsPath: string | null = null + for (const p of possiblePaths) { + try { + await fs.access(p) + mdxAbsPath = p + break + } catch { + // File doesn't exist, try next + } + } + + if (!mdxAbsPath) { + return new Response(JSON.stringify({ error: `Page not found: ${requestedPath}` }), { + status: 404, + headers: { "Content-Type": "application/json" }, + }) + } + + // Read the MDX file + const raw = await fs.readFile(mdxAbsPath, "utf-8") + const { body, fmTitle, fmLastModified } = extractFrontmatter(raw) + + // Extract section from path (first segment) + const section = cleanPath.split("/")[0] + + // Transform to markdown + const transformed = await transformPageToMarkdown(body, mdxAbsPath, { + siteBase: SITE_BASE, + targetLanguage, + }) + + // Generate metadata + const relFromContent = toContentRelative(mdxAbsPath) + const sourceUrl = toCanonicalUrl(section, relFromContent, SITE_BASE) + const title = fmTitle || path.basename(mdxAbsPath, path.extname(mdxAbsPath)) + const lastModified = getIsoStringOrUndefined(fmLastModified) + + // Format output with frontmatter + const headerLines = [ + `# ${title}`, + `Source: ${sourceUrl}`, + ...(lastModified ? [`Last Updated: ${lastModified}`] : []), + "", + "", + ] + + const finalMarkdown = [...headerLines, transformed.trim()].join("\n") + + // Store in cache (cache key includes language for multi-lang pages) + markdownCache.set(cacheKey, { + markdown: finalMarkdown, + timestamp: Date.now(), + }) + + const processingTime = Date.now() - startTime + + return new Response(finalMarkdown, { + status: 200, + headers: { + ...textPlainHeaders, + "X-Cache": "MISS", + "X-Processing-Time": `${processingTime}ms`, + }, + }) + } catch (error) { + console.error("Error generating markdown:", error) + return new Response( + JSON.stringify({ + error: "Internal server error", + message: error instanceof Error ? error.message : "Unknown error", + }), + { + status: 500, + headers: { "Content-Type": "application/json" }, + } + ) + } +} diff --git a/src/pages/api/services/lane-data.ts b/src/pages/api/services/lane-data.ts deleted file mode 100644 index 211bb888393..00000000000 --- a/src/pages/api/services/lane-data.ts +++ /dev/null @@ -1,392 +0,0 @@ -import { - Environment, - LaneDetails, - LaneFilterType, - LaneConfigError, - LaneServiceResponse, - ChainInfo, - ChainInfoInternal, - OutputKeyType, - ChainType, - ChainFamily, -} from "../ccip/types/index.ts" -import { loadReferenceData, Version } from "@config/data/ccip/index.ts" -import type { LaneConfig, ChainConfig } from "@config/data/ccip/types.ts" -import { generateChainKey, normalizeVersion } from "@api/ccip/utils.ts" -import { logger } from "@lib/logging/index.js" -import { - getChainId, - getTitle, - getChainTypeAndFamily, - directoryToSupportedChain, -} from "../../../features/utils/index.ts" - -export const prerender = false - -/** - * Service class for handling CCIP lane data operations - * Provides functionality to validate and filter lane configurations - */ -export class LaneDataService { - private errors: LaneConfigError[] = [] - private readonly requestId: string - private skippedLanesCount = 0 - - /** - * Creates a new instance of LaneDataService - */ - constructor() { - this.requestId = crypto.randomUUID() - - logger.debug({ - message: "LaneDataService initialized", - requestId: this.requestId, - }) - } - - /** - * Retrieves and filters lane data based on environment and filters - * - * @param environment - Network environment (mainnet/testnet) - * @param filters - Filter parameters for lanes - * @param outputKey - Format to use for displaying lane keys - * @returns Filtered lane data with metadata - */ - async getFilteredLanes( - environment: Environment, - filters: LaneFilterType, - outputKey: OutputKeyType - ): Promise { - logger.debug({ - message: "Processing lane data", - requestId: this.requestId, - environment, - filters, - outputKey, - }) - - try { - // Load reference data - const { lanesReferenceData, chainsReferenceData } = loadReferenceData({ - environment, - version: Version.V1_2_0, - }) - - const result: Record = {} - this.errors = [] - this.skippedLanesCount = 0 - - // Process all lanes - for (const [sourceChainKey, destinations] of Object.entries(lanesReferenceData)) { - for (const [destChainKey, laneConfig] of Object.entries(destinations)) { - try { - // Get chain information - const sourceChain = this.resolveChainInfo(sourceChainKey, chainsReferenceData) - const destChain = this.resolveChainInfo(destChainKey, chainsReferenceData) - - if (!sourceChain || !destChain) { - this.addError(sourceChainKey, destChainKey, "Failed to resolve chain information", [ - "sourceChain", - "destinationChain", - ]) - continue - } - - // Apply filters - if (!this.passesFilters(sourceChain, destChain, filters)) { - this.skippedLanesCount++ - continue - } - - // Generate lane key - const laneKey = this.generateLaneKey(sourceChain, destChain, outputKey) - - // Build lane details - const laneDetails = this.buildLaneDetails(sourceChain, destChain, laneConfig) - - // Check for version mismatch - if (laneDetails.onRamp.version !== laneDetails.offRamp.version) { - this.addError( - sourceChainKey, - destChainKey, - `Version mismatch: onRamp v${laneDetails.onRamp.version} != offRamp v${laneDetails.offRamp.version}`, - ["version"] - ) - continue - } - - // Apply version filter if provided - if (filters.version) { - // Both onRamp and offRamp must match the specified version - if (laneDetails.onRamp.version !== filters.version || laneDetails.offRamp.version !== filters.version) { - this.skippedLanesCount++ - continue - } - } - - result[laneKey] = laneDetails - - logger.debug({ - message: "Lane processed successfully", - requestId: this.requestId, - laneKey, - sourceChain: sourceChainKey, - destinationChain: destChainKey, - }) - } catch (error) { - this.addError( - sourceChainKey, - destChainKey, - `Lane processing failed: ${error instanceof Error ? error.message : "Unknown error"}`, - ["laneConfig"] - ) - } - } - } - - const validLaneCount = Object.keys(result).length - const ignoredLaneCount = this.errors.length - - logger.info({ - message: "Lane data processing completed", - requestId: this.requestId, - validLaneCount, - ignoredLaneCount, - skippedLanesCount: this.skippedLanesCount, - }) - - return { - data: result, - errors: this.errors, - metadata: { - validLaneCount, - ignoredLaneCount, - }, - } - } catch (error) { - logger.error({ - message: "Failed to process lane data", - requestId: this.requestId, - error: error instanceof Error ? error.message : "Unknown error", - }) - - throw error - } - } - - /** - * Resolves chain information from chain key - */ - private resolveChainInfo(chainKey: string, chainsReferenceData: Record): ChainInfoInternal | null { - try { - const chainConfig = chainsReferenceData[chainKey] - - if (!chainConfig) { - return null - } - - // Try to get supported chain for additional info, but don't fail if not found - let chainId: string | number = chainKey // fallback to chainKey - let displayName: string = chainKey // fallback to chainKey - let chainType: ChainType = "evm" // default to evm - let chainFamily: ChainFamily = "evm" // default to evm - - try { - const supportedChain = directoryToSupportedChain(chainKey) - const resolvedChainId = getChainId(supportedChain) - const resolvedDisplayName = getTitle(supportedChain) - const { chainType: resolvedChainType, chainFamily: resolvedChainFamily } = getChainTypeAndFamily(supportedChain) - - if (resolvedChainId) chainId = resolvedChainId - if (resolvedDisplayName) displayName = resolvedDisplayName - chainType = resolvedChainType - chainFamily = resolvedChainFamily - } catch { - // If directoryToSupportedChain fails, continue with fallback values - // This allows processing of chains not yet in the mapping - } - - // Get selector from chain configuration - const configData = chainConfig as ChainConfig - const selector = configData.chainSelector - - if (!selector) { - return null - } - - return { - chainId, - displayName, - selector, - internalId: chainKey, - chainType, - chainFamily, - } - } catch (error) { - logger.warn({ - message: "Failed to resolve chain info", - requestId: this.requestId, - chainKey, - error: error instanceof Error ? error.message : "Unknown error", - }) - return null - } - } - - /** - * Checks if a lane passes the given filters - */ - private passesFilters( - sourceChain: ChainInfoInternal, - destChain: ChainInfoInternal, - filters: LaneFilterType - ): boolean { - // Check source chain filters - if (filters.sourceChainId && !this.matchesChainFilter(sourceChain, filters.sourceChainId, "chainId")) { - return false - } - if (filters.sourceSelector && !this.matchesChainFilter(sourceChain, filters.sourceSelector, "selector")) { - return false - } - if (filters.sourceInternalId && !this.matchesChainFilter(sourceChain, filters.sourceInternalId, "internalId")) { - return false - } - - // Check destination chain filters - if (filters.destinationChainId && !this.matchesChainFilter(destChain, filters.destinationChainId, "chainId")) { - return false - } - if (filters.destinationSelector && !this.matchesChainFilter(destChain, filters.destinationSelector, "selector")) { - return false - } - if ( - filters.destinationInternalId && - !this.matchesChainFilter(destChain, filters.destinationInternalId, "internalId") - ) { - return false - } - - return true - } - - /** - * Checks if a chain matches a specific filter value - */ - private matchesChainFilter( - chain: ChainInfoInternal, - filterValue: string, - filterType: "chainId" | "selector" | "internalId" - ): boolean { - const filterValues = filterValue.split(",").map((v) => v.trim()) - const chainValue = chain[filterType].toString() - - // For chainId, also check generated chain key format - if (filterType === "chainId") { - const generatedKey = generateChainKey(chain.chainId, chain.chainType, "chainId") - return filterValues.includes(chainValue) || filterValues.includes(generatedKey) - } - - return filterValues.includes(chainValue) - } - - /** - * Generates a lane key based on source and destination chains - */ - private generateLaneKey( - sourceChain: ChainInfoInternal, - destChain: ChainInfoInternal, - outputKey: OutputKeyType - ): string { - const sourceKey = - outputKey === "chainId" - ? generateChainKey(sourceChain.chainId, sourceChain.chainType, outputKey) - : sourceChain[outputKey].toString() - - const destKey = - outputKey === "chainId" - ? generateChainKey(destChain.chainId, destChain.chainType, outputKey) - : destChain[outputKey].toString() - - return `${sourceKey}_to_${destKey}` - } - - /** - * Builds lane details from chain info and lane config - */ - private buildLaneDetails( - sourceChain: ChainInfoInternal, - destChain: ChainInfoInternal, - laneConfig: LaneConfig - ): LaneDetails { - // Convert internal chain info to public interface (remove chainType and chainFamily) - const publicSourceChain: ChainInfo = { - chainId: sourceChain.chainId, - displayName: sourceChain.displayName, - selector: sourceChain.selector, - internalId: sourceChain.internalId, - } - - const publicDestChain: ChainInfo = { - chainId: destChain.chainId, - displayName: destChain.displayName, - selector: destChain.selector, - internalId: destChain.internalId, - } - - return { - sourceChain: publicSourceChain, - destinationChain: publicDestChain, - onRamp: { - address: laneConfig.onRamp.address, - version: normalizeVersion(laneConfig.onRamp.version), - enforceOutOfOrder: laneConfig.onRamp.enforceOutOfOrder, - }, - offRamp: { - address: laneConfig.offRamp.address, - version: normalizeVersion(laneConfig.offRamp.version), - }, - supportedTokens: this.extractSupportedTokens(laneConfig), - } - } - - /** - * Extracts supported token keys from lane configuration - */ - private extractSupportedTokens(laneConfig: LaneConfig): string[] { - if (!laneConfig.supportedTokens) { - return [] - } - - // Extract token keys from supportedTokens object - // lanes.json structure: "supportedTokens": { "LINK": {...}, "CCIP-BnM": {...} } - return Object.keys(laneConfig.supportedTokens) - } - - /** - * Adds an error to the error collection - */ - private addError(sourceChain: string, destinationChain: string, reason: string, missingFields: string[]): void { - this.errors.push({ - sourceChain, - destinationChain, - reason, - missingFields, - }) - - logger.warn({ - message: "Lane validation error", - requestId: this.requestId, - sourceChain, - destinationChain, - reason, - missingFields, - }) - } - - /** - * Gets the request ID for this service instance - */ - getRequestId(): string { - return this.requestId - } -} diff --git a/src/pages/ccip/directory/mainnet/verifiers/index.astro b/src/pages/ccip/directory/mainnet/verifiers/index.astro new file mode 100644 index 00000000000..07aad33d482 --- /dev/null +++ b/src/pages/ccip/directory/mainnet/verifiers/index.astro @@ -0,0 +1,8 @@ +--- +import Verifiers from "~/components/CCIP/Verifiers/Verifiers.astro" +import { Environment } from "~/config/data/ccip" + +export const prerender = true +--- + + diff --git a/src/pages/ccip/directory/testnet/verifiers/index.astro b/src/pages/ccip/directory/testnet/verifiers/index.astro new file mode 100644 index 00000000000..a6101109fd7 --- /dev/null +++ b/src/pages/ccip/directory/testnet/verifiers/index.astro @@ -0,0 +1,8 @@ +--- +import Verifiers from "~/components/CCIP/Verifiers/Verifiers.astro" +import { Environment } from "~/config/data/ccip" + +export const prerender = true +--- + + diff --git a/src/pages/certification.astro b/src/pages/certification.astro index 2753c60246a..81d22dc18ea 100644 --- a/src/pages/certification.astro +++ b/src/pages/certification.astro @@ -72,21 +72,18 @@ const formattedContentTitle = `Courses | Chainlink Certifications` width="Auto" height="Auto" alt="" - srcset="/images/certification/image-200-p-500.png 500w, /images/certification/image-200.png 606w" sizes="(max-width: 606px) 100vw, 606px" class="plat-absolute plat-absolute--1" /> @@ -189,7 +186,6 @@ const formattedContentTitle = `Courses | Chainlink Certifications` src="/images/certification/Imagedevhubvideo.png" loading="lazy" sizes="(max-width: 560px) 100vw, 560px" - srcset="/images/certification/Imagedevhubvideo-p-500.png 500w, /images/certification/Imagedevhubvideo.png 560w" alt="" class="cover-image" /> @@ -216,7 +212,6 @@ const formattedContentTitle = `Courses | Chainlink Certifications` src="/images/certification/Imagedevhubresources.png" loading="lazy" sizes="(max-width: 560px) 100vw, 560px" - srcset="/images/certification/Imagedevhubresources-p-500.png 500w, /images/certification/Imagedevhubresources.png 560w" alt="" class="cover-image" /> diff --git a/src/pages/changelog/index.astro b/src/pages/changelog/index.astro deleted file mode 100644 index bd5a13d790d..00000000000 --- a/src/pages/changelog/index.astro +++ /dev/null @@ -1,103 +0,0 @@ ---- -import BaseLayout from "~/layouts/BaseLayout.astro" -import * as CONFIG from "../../config" -import { Typography } from "@chainlink/blocks" - -import { getSecret } from "astro:env/server" -import { searchClient, SearchClient } from "@algolia/client-search" -import { ChangelogItem } from "~/components/ChangelogSnippet/types" -import ChangelogCard from "~/components/ChangelogSnippet/ChangelogCard.astro" -const formattedContentTitle = `${CONFIG.PAGE.titleFallback} | ${CONFIG.SITE.title}` - -const appId = getSecret("ALGOLIA_APP_ID") -const apiKey = getSecret("PUBLIC_ALGOLIA_SEARCH_PUBLIC_API_KEY") - -let client: SearchClient -let logs: ChangelogItem[] | undefined = undefined - -// Initialize client if appId and apiKey are available to avoid needing to update -// the github actions with the new keys (satisfies linkcheck-internal) -if (appId && apiKey) { - client = searchClient(appId, apiKey) - - const req = await client.search({ - requests: [ - { - indexName: "Changelog", - restrictSearchableAttributes: ["topic"], - }, - ], - }) - - const firstResult = req.results[0] - const results = "hits" in firstResult ? (firstResult.hits as ChangelogItem[]) : [] - console.log(results[1]) - // logs are returned sorted by created_at DESC - logs = results -} ---- - - -
-
- Changelog - Never miss an update -
- -
- {logs?.map((log) => )} -
-
-
- - diff --git a/src/pages/cre/[...id].astro b/src/pages/cre/[...id].astro index 7c2b40919ba..9f7ef425b52 100644 --- a/src/pages/cre/[...id].astro +++ b/src/pages/cre/[...id].astro @@ -107,24 +107,28 @@ if (isCanonical) { --- + {/* noindex for redirect pages */} + {isCanonical && } + { - isCanonical ? ( + isCanonical && (