From b42d17ff9d1b38cddc374d40ec89d9fe42bba4ae Mon Sep 17 00:00:00 2001 From: nicholaspai <9457025+nicholaspai@users.noreply.github.com> Date: Tue, 14 Jan 2025 07:23:34 -0700 Subject: [PATCH 1/2] feat(API): Split gas component cron jobs up into different files (#1372) --- api/_types/utility.types.ts | 9 ++ api/cron-cache-gas-costs.ts | 152 ++++++++++++++++++++++++++++++++ api/cron-cache-gas-prices.ts | 144 +++++++------------------------ api/cron-cache-l1-data-fee.ts | 158 ++++++++++++++++++++++++++++++++++ vercel.json | 14 +++ 5 files changed, 363 insertions(+), 114 deletions(-) create mode 100644 api/cron-cache-gas-costs.ts create mode 100644 api/cron-cache-l1-data-fee.ts diff --git a/api/_types/utility.types.ts b/api/_types/utility.types.ts index 629d75320..68fcaf589 100644 --- a/api/_types/utility.types.ts +++ b/api/_types/utility.types.ts @@ -21,3 +21,12 @@ export type TokenInfo = { name: string; addresses: Record; }; + +export type DepositRoute = { + originChainId: number; + originToken: string; + destinationChainId: number; + destinationToken: string; + originTokenSymbol: string; + destinationTokenSymbol: string; +}; diff --git a/api/cron-cache-gas-costs.ts b/api/cron-cache-gas-costs.ts new file mode 100644 index 000000000..a2e6a6da8 --- /dev/null +++ b/api/cron-cache-gas-costs.ts @@ -0,0 +1,152 @@ +import { VercelResponse } from "@vercel/node"; +import { DepositRoute, TypedVercelRequest } from "./_types"; +import { + HUB_POOL_CHAIN_ID, + getCachedNativeGasCost, + getLogger, + handleErrorCondition, + resolveVercelEndpoint, +} from "./_utils"; +import { UnauthorizedError } from "./_errors"; + +import mainnetChains from "../src/data/chains_1.json"; +import { utils, constants } from "@across-protocol/sdk"; +import { DEFAULT_SIMULATED_RECIPIENT_ADDRESS } from "./_constants"; +import axios from "axios"; +import { ethers } from "ethers"; + +// Set lower than TTL in getCachedNativeGasCost. This should rarely change so we should just make sure +// we keep this cache warm. +const updateIntervalsSecPerChain = { + default: 30, +}; + +const maxDurationSec = 60; + +const getDepositArgsForChainId = (chainId: number, tokenAddress: string) => { + return { + amount: ethers.BigNumber.from(100), + inputToken: constants.ZERO_ADDRESS, + outputToken: tokenAddress, + recipientAddress: DEFAULT_SIMULATED_RECIPIENT_ADDRESS, + originChainId: 0, // Shouldn't matter for simulation + destinationChainId: Number(chainId), + }; +}; + +const handler = async ( + request: TypedVercelRequest>, + response: VercelResponse +) => { + const logger = getLogger(); + logger.debug({ + at: "CronCacheGasCosts", + message: "Starting cron job...", + }); + try { + const authHeader = request.headers?.["authorization"]; + if ( + !process.env.CRON_SECRET || + authHeader !== `Bearer ${process.env.CRON_SECRET}` + ) { + throw new UnauthorizedError(); + } + + // Skip cron job on testnet + if (HUB_POOL_CHAIN_ID !== 1) { + logger.info({ + at: "CronCacheGasCosts", + message: "Skipping cron job on testnet", + }); + return; + } + + const availableRoutes = ( + await axios(`${resolveVercelEndpoint()}/api/available-routes`) + ).data as Array; + + // This marks the timestamp when the function started + const functionStart = Date.now(); + + const updateCounts: Record> = {}; + + /** + * @notice Updates the native gas cost cache every `updateNativeGasCostIntervalsSecPerChain` seconds + * up to `maxDurationSec` seconds. + * @param chainId Chain to estimate gas cost for + * @param outputTokenAddress This output token will be used to construct a fill transaction to simulate + * gas costs for. + */ + const updateNativeGasCostPromise = async ( + chainId: number, + outputTokenAddress: string + ): Promise => { + updateCounts[chainId] ??= {}; + updateCounts[chainId][outputTokenAddress] ??= 0; + const secondsPerUpdate = updateIntervalsSecPerChain.default; + const depositArgs = getDepositArgsForChainId(chainId, outputTokenAddress); + const cache = getCachedNativeGasCost(depositArgs); + + while (true) { + const diff = Date.now() - functionStart; + // Stop after `maxDurationSec` seconds + if (diff >= maxDurationSec * 1000) { + break; + } + try { + await cache.set(); + updateCounts[chainId][outputTokenAddress]++; + } catch (err) { + logger.warn({ + at: "CronCacheGasCosts#updateNativeGasCostPromise", + message: `Failed to set native gas cost cache for chain ${chainId}`, + depositArgs, + error: err, + }); + } + await utils.delay(secondsPerUpdate); + } + }; + + const getOutputTokensToChain = (chainId: number) => { + const destinationTokens = new Set(); + availableRoutes + .filter(({ destinationChainId }) => destinationChainId === chainId) + .forEach(({ destinationToken }) => { + if (!destinationTokens.has(destinationToken)) { + destinationTokens.add(destinationToken); + } + }); + return Array.from(destinationTokens); + }; + + const cacheUpdatePromise = Promise.all( + mainnetChains.map(async (chain) => { + await Promise.all( + getOutputTokensToChain(chain.chainId).map((outputToken) => + updateNativeGasCostPromise(chain.chainId, outputToken) + ) + ); + }) + ); + // There are many routes and therefore many promises to wait to resolve so we force the + // function to stop after `maxDurationSec` seconds. + await Promise.race([cacheUpdatePromise, utils.delay(maxDurationSec)]); + + logger.debug({ + at: "CronCacheGasCosts", + message: "Finished", + updateCounts, + }); + response.status(200).json({ updateCounts }); + } catch (error: unknown) { + return handleErrorCondition( + "cron-cache-gas-costs", + response, + logger, + error + ); + } +}; + +export default handler; diff --git a/api/cron-cache-gas-prices.ts b/api/cron-cache-gas-prices.ts index 6e5f5cb92..f7e94b081 100644 --- a/api/cron-cache-gas-prices.ts +++ b/api/cron-cache-gas-prices.ts @@ -1,9 +1,7 @@ import { VercelResponse } from "@vercel/node"; -import { TypedVercelRequest } from "./_types"; +import { DepositRoute, TypedVercelRequest } from "./_types"; import { HUB_POOL_CHAIN_ID, - getCachedNativeGasCost, - getCachedOpStackL1DataFee, getLogger, handleErrorCondition, latestGasPriceCache, @@ -17,32 +15,11 @@ import { CHAIN_IDs, DEFAULT_SIMULATED_RECIPIENT_ADDRESS } from "./_constants"; import axios from "axios"; import { ethers } from "ethers"; -type Route = { - originChainId: number; - originToken: string; - destinationChainId: number; - destinationToken: string; - originTokenSymbol: string; - destinationTokenSymbol: string; -}; - // Set lower than TTL in latestGasPriceCache const updateIntervalsSecPerChain = { default: 5, }; -// Set lower than TTL in getCachedOpStackL1DataFee -// Set lower than the L1 block time so we can try to get as up to date L1 data fees based on L1 base fees as possible. -const updateL1DataFeeIntervalsSecPerChain = { - default: 10, -}; - -// Set lower than TTL in getCachedNativeGasCost. This should rarely change so we should just make sure -// we keep this cache warm. -const updateNativeGasCostIntervalsSecPerChain = { - default: 30, -}; - const maxDurationSec = 60; const getDepositArgsForChainId = (chainId: number, tokenAddress: string) => { @@ -85,11 +62,13 @@ const handler = async ( const availableRoutes = ( await axios(`${resolveVercelEndpoint()}/api/available-routes`) - ).data as Array; + ).data as Array; // This marks the timestamp when the function started const functionStart = Date.now(); + const updateCounts: Record = {}; + /** * @notice Updates the gas price cache every `updateIntervalsSecPerChain` seconds up to `maxDurationSec` seconds. * @param chainId Chain to estimate gas price for @@ -100,39 +79,12 @@ const handler = async ( chainId: number, outputTokenAddress?: string ): Promise => { + updateCounts[chainId] ??= 0; const secondsPerUpdateForChain = updateIntervalsSecPerChain.default; - const cache = latestGasPriceCache( - chainId, - outputTokenAddress - ? getDepositArgsForChainId(chainId, outputTokenAddress) - : undefined - ); - - while (true) { - const diff = Date.now() - functionStart; - // Stop after `maxDurationSec` seconds - if (diff >= maxDurationSec * 1000) { - break; - } - await cache.set(); - await utils.delay(secondsPerUpdateForChain); - } - }; - - /** - * @notice Updates the L1 data fee gas cost cache every `updateL1DataFeeIntervalsSecPerChain` seconds - * up to `maxDurationSec` seconds. - * @param chainId Chain to estimate l1 data fee for - * @param outputTokenAddress This output token will be used to construct a fill transaction to simulate - * gas costs for. - */ - const updateL1DataFeePromise = async ( - chainId: number, - outputTokenAddress: string - ): Promise => { - const secondsPerUpdate = updateL1DataFeeIntervalsSecPerChain.default; - const depositArgs = getDepositArgsForChainId(chainId, outputTokenAddress); - const gasCostCache = getCachedNativeGasCost(depositArgs); + const depositArgs = outputTokenAddress + ? getDepositArgsForChainId(chainId, outputTokenAddress) + : undefined; + const cache = latestGasPriceCache(chainId, depositArgs); while (true) { const diff = Date.now() - functionStart; @@ -140,44 +92,30 @@ const handler = async ( if (diff >= maxDurationSec * 1000) { break; } - const gasCost = await gasCostCache.get(); - if (utils.chainIsOPStack(chainId)) { - const cache = getCachedOpStackL1DataFee(depositArgs, gasCost); + try { await cache.set(); + updateCounts[chainId]++; + } catch (err) { + logger.warn({ + at: "CronCacheGasPrices#updateGasPricePromise", + message: `Failed to set gas price cache for chain ${chainId}`, + depositArgs, + error: err, + }); } - await utils.delay(secondsPerUpdate); + await utils.delay(secondsPerUpdateForChain); } }; - /** - * @notice Updates the native gas cost cache every `updateNativeGasCostIntervalsSecPerChain` seconds - * up to `maxDurationSec` seconds. - * @param chainId Chain to estimate gas cost for - * @param outputTokenAddress This output token will be used to construct a fill transaction to simulate - * gas costs for. - */ - const updateNativeGasCostPromise = async ( - chainId: number, - outputTokenAddress: string - ): Promise => { - const secondsPerUpdate = updateNativeGasCostIntervalsSecPerChain.default; - const depositArgs = getDepositArgsForChainId(chainId, outputTokenAddress); - const cache = getCachedNativeGasCost(depositArgs); - - while (true) { - const diff = Date.now() - functionStart; - // Stop after `maxDurationSec` seconds - if (diff >= maxDurationSec * 1000) { - break; - } - await cache.set(); - await utils.delay(secondsPerUpdate); - } + const lineaDestinationRoutes = () => { + const routes = new Set(); + availableRoutes + .filter( + ({ destinationChainId }) => destinationChainId === CHAIN_IDs.LINEA + ) + .forEach(({ destinationToken }) => routes.add(destinationToken)); + return Array.from(routes); }; - - const lineaDestinationRoutes = availableRoutes.filter( - ({ destinationChainId }) => destinationChainId === CHAIN_IDs.LINEA - ); // The minimum interval for Vercel Serverless Functions cron jobs is 1 minute. // But we want to update gas data more frequently than that. // To circumvent this, we run the function in a loop and update gas prices every @@ -191,40 +129,18 @@ const handler = async ( .map((chain) => updateGasPricePromise(chain.chainId)) ), Promise.all( - lineaDestinationRoutes.map(({ destinationToken }) => + lineaDestinationRoutes().map((destinationToken) => updateGasPricePromise(CHAIN_IDs.LINEA, destinationToken) ) ), - Promise.all( - mainnetChains.map(async (chain) => { - const routesToChain = availableRoutes.filter( - ({ destinationChainId }) => destinationChainId === chain.chainId - ); - const outputTokensForChain = routesToChain.map( - ({ destinationToken }) => destinationToken - ); - await Promise.all([ - Promise.all( - outputTokensForChain.map((outputToken) => - updateNativeGasCostPromise(chain.chainId, outputToken) - ) - ), - Promise.all( - outputTokensForChain.map((outputToken) => - updateL1DataFeePromise(chain.chainId, outputToken) - ) - ), - ]); - }) - ), ]); logger.debug({ at: "CronCacheGasPrices", message: "Finished", + updateCounts, }); - response.status(200); - response.send("OK"); + response.status(200).json({ updateCounts }); } catch (error: unknown) { return handleErrorCondition( "cron-cache-gas-prices", diff --git a/api/cron-cache-l1-data-fee.ts b/api/cron-cache-l1-data-fee.ts new file mode 100644 index 000000000..483088469 --- /dev/null +++ b/api/cron-cache-l1-data-fee.ts @@ -0,0 +1,158 @@ +import { VercelResponse } from "@vercel/node"; +import { DepositRoute, TypedVercelRequest } from "./_types"; +import { + HUB_POOL_CHAIN_ID, + getCachedNativeGasCost, + getCachedOpStackL1DataFee, + getLogger, + handleErrorCondition, + resolveVercelEndpoint, +} from "./_utils"; +import { UnauthorizedError } from "./_errors"; + +import mainnetChains from "../src/data/chains_1.json"; +import { utils, constants } from "@across-protocol/sdk"; +import { DEFAULT_SIMULATED_RECIPIENT_ADDRESS } from "./_constants"; +import axios from "axios"; +import { ethers } from "ethers"; + +// Set lower than TTL in getCachedOpStackL1DataFee +// Set lower than the L1 block time so we can try to get as up to date L1 data fees based on L1 base fees as possible. +const updateIntervalsSecPerChain = { + default: 10, +}; + +const maxDurationSec = 60; + +const getDepositArgsForChainId = (chainId: number, tokenAddress: string) => { + return { + amount: ethers.BigNumber.from(100), + inputToken: constants.ZERO_ADDRESS, + outputToken: tokenAddress, + recipientAddress: DEFAULT_SIMULATED_RECIPIENT_ADDRESS, + originChainId: 0, // Shouldn't matter for simulation + destinationChainId: Number(chainId), + }; +}; + +const handler = async ( + request: TypedVercelRequest>, + response: VercelResponse +) => { + const logger = getLogger(); + logger.debug({ + at: "CronCacheL1DataFee", + message: "Starting cron job...", + }); + try { + const authHeader = request.headers?.["authorization"]; + if ( + !process.env.CRON_SECRET || + authHeader !== `Bearer ${process.env.CRON_SECRET}` + ) { + throw new UnauthorizedError(); + } + + // Skip cron job on testnet + if (HUB_POOL_CHAIN_ID !== 1) { + logger.info({ + at: "CronCacheL1DataFee", + message: "Skipping cron job on testnet", + }); + return; + } + + const availableRoutes = ( + await axios(`${resolveVercelEndpoint()}/api/available-routes`) + ).data as Array; + + // This marks the timestamp when the function started + const functionStart = Date.now(); + + const updateCounts: Record> = {}; + + /** + * @notice Updates the L1 data fee gas cost cache every `updateL1DataFeeIntervalsSecPerChain` seconds + * up to `maxDurationSec` seconds. + * @param chainId Chain to estimate l1 data fee for + * @param outputTokenAddress This output token will be used to construct a fill transaction to simulate + * gas costs for. + */ + const updateL1DataFeePromise = async ( + chainId: number, + outputTokenAddress: string + ): Promise => { + updateCounts[chainId] ??= {}; + updateCounts[chainId][outputTokenAddress] ??= 0; + const secondsPerUpdate = updateIntervalsSecPerChain.default; + const depositArgs = getDepositArgsForChainId(chainId, outputTokenAddress); + const gasCostCache = getCachedNativeGasCost(depositArgs); + + while (true) { + const diff = Date.now() - functionStart; + // Stop after `maxDurationSec` seconds + if (diff >= maxDurationSec * 1000) { + break; + } + const gasCost = await gasCostCache.get(); + const cache = getCachedOpStackL1DataFee(depositArgs, gasCost); + try { + await cache.set(); + updateCounts[chainId][outputTokenAddress]++; + } catch (err) { + logger.warn({ + at: "CronCacheL1DataFee#updateL1DataFeePromise", + message: `Failed to set l1 data fee cache for chain ${chainId}`, + depositArgs, + gasCost, + error: err, + }); + } + await utils.delay(secondsPerUpdate); + } + }; + + const getOutputTokensToChain = (chainId: number) => { + const destinationTokens = new Set(); + availableRoutes + .filter(({ destinationChainId }) => destinationChainId === chainId) + .forEach(({ destinationToken }) => { + if (!destinationTokens.has(destinationToken)) { + destinationTokens.add(destinationToken); + } + }); + return Array.from(destinationTokens); + }; + + const cacheUpdatePromise = Promise.all( + mainnetChains + .filter((chain) => utils.chainIsOPStack(chain.chainId)) + .map(async (chain) => { + await Promise.all( + getOutputTokensToChain(chain.chainId).map((outputToken) => + updateL1DataFeePromise(chain.chainId, outputToken) + ) + ); + }) + ); + // There are many routes and therefore many promises to wait to resolve so we force the + // function to stop after `maxDurationSec` seconds. + await Promise.race([cacheUpdatePromise, utils.delay(maxDurationSec)]); + + logger.debug({ + at: "CronCacheL1DataFee", + message: "Finished", + updateCounts, + }); + response.status(200).json({ updateCounts }); + } catch (error: unknown) { + return handleErrorCondition( + "cron-cache-l1-data-fee", + response, + logger, + error + ); + } +}; + +export default handler; diff --git a/vercel.json b/vercel.json index fa7fa812a..c777ee361 100644 --- a/vercel.json +++ b/vercel.json @@ -9,6 +9,14 @@ "path": "/api/cron-cache-gas-prices", "schedule": "* * * * *" }, + { + "path": "/api/cron-cache-gas-costs", + "schedule": "* * * * *" + }, + { + "path": "/api/cron-cache-l1-data-fee", + "schedule": "* * * * *" + }, { "path": "/api/cron-ping-endpoints", "schedule": "* * * * *" @@ -18,6 +26,12 @@ "api/cron-cache-gas-prices.ts": { "maxDuration": 90 }, + "api/cron-cache-gas-costs.ts": { + "maxDuration": 90 + }, + "api/cron-cache-l1-data-fee.ts": { + "maxDuration": 90 + }, "api/cron-ping-endpoints.ts": { "maxDuration": 90 } From 58fa06c99bc321b1d272df9a1eabfaef722dcbb5 Mon Sep 17 00:00:00 2001 From: "James Morris, MS" <96435344+james-a-morris@users.noreply.github.com> Date: Tue, 14 Jan 2025 23:40:18 -0500 Subject: [PATCH 2/2] feat(soneium): integrate soneium (#1376) * feat(soneium): integrate soneium Signed-off-by: james-a-morris * improve: update soneium routes Signed-off-by: james-a-morris * chore: update assets & routes Signed-off-by: james-a-morris * improve: remove codename Signed-off-by: james-a-morris * improve: add ETH routes Signed-off-by: james-a-morris * fix: fix explorer url (#1377) --------- Signed-off-by: james-a-morris Co-authored-by: amateima <89395931+amateima@users.noreply.github.com> --- package.json | 6 +- scripts/chain-configs/index.ts | 1 + .../soneium/assets/grayscale-logo.svg | 8 + scripts/chain-configs/soneium/assets/logo.svg | 8 + scripts/chain-configs/soneium/index.ts | 23 + scripts/generate-routes.ts | 1 + src/assets/chain-logos/soneium-grayscale.svg | 8 + src/assets/chain-logos/soneium.svg | 8 + src/constants/chains/configs.ts | 23 + src/constants/chains/index.ts | 1 + src/data/chains_1.json | 55 + ...6fA914353c44b2E33eBE05f21846F1048bEda.json | 1180 +++++++++++++++-- src/utils/constants.ts | 1 + yarn.lock | 63 +- 14 files changed, 1257 insertions(+), 129 deletions(-) create mode 100644 scripts/chain-configs/soneium/assets/grayscale-logo.svg create mode 100644 scripts/chain-configs/soneium/assets/logo.svg create mode 100644 scripts/chain-configs/soneium/index.ts create mode 100644 src/assets/chain-logos/soneium-grayscale.svg create mode 100644 src/assets/chain-logos/soneium.svg diff --git a/package.json b/package.json index c6103cccb..b7436f92a 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,10 @@ "private": true, "license": "AGPL-3.0-only", "dependencies": { - "@across-protocol/constants": "^3.1.24", - "@across-protocol/contracts": "^3.0.19", + "@across-protocol/constants": "^3.1.30", + "@across-protocol/contracts": "^3.0.25", "@across-protocol/contracts-v3.0.6": "npm:@across-protocol/contracts@3.0.6", - "@across-protocol/sdk": "^3.4.10", + "@across-protocol/sdk": "^3.4.12", "@amplitude/analytics-browser": "^2.3.5", "@balancer-labs/sdk": "1.1.6-beta.16", "@emotion/react": "^11.13.0", diff --git a/scripts/chain-configs/index.ts b/scripts/chain-configs/index.ts index 1d5129c26..abd858edb 100644 --- a/scripts/chain-configs/index.ts +++ b/scripts/chain-configs/index.ts @@ -19,6 +19,7 @@ export { default as POLYGON_AMOY } from "./polygon-amoy"; export { default as REDSTONE } from "./redstone"; export { default as SCROLL } from "./scroll"; export { default as SEPOLIA } from "./sepolia"; +export { default as SONEIUM } from "./soneium"; export { default as WORLD_CHAIN } from "./world-chain"; export { default as ZK_SYNC } from "./zk-sync"; export { default as ZORA } from "./zora"; diff --git a/scripts/chain-configs/soneium/assets/grayscale-logo.svg b/scripts/chain-configs/soneium/assets/grayscale-logo.svg new file mode 100644 index 000000000..83494173a --- /dev/null +++ b/scripts/chain-configs/soneium/assets/grayscale-logo.svg @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/scripts/chain-configs/soneium/assets/logo.svg b/scripts/chain-configs/soneium/assets/logo.svg new file mode 100644 index 000000000..cb375d579 --- /dev/null +++ b/scripts/chain-configs/soneium/assets/logo.svg @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/scripts/chain-configs/soneium/index.ts b/scripts/chain-configs/soneium/index.ts new file mode 100644 index 000000000..8e0b7eacc --- /dev/null +++ b/scripts/chain-configs/soneium/index.ts @@ -0,0 +1,23 @@ +import { CHAIN_IDs, PUBLIC_NETWORKS } from "@across-protocol/constants"; +import { utils as sdkUtils } from "@across-protocol/sdk"; +import { ChainConfig } from "../types"; + +const { getDeployedAddress, getDeployedBlockNumber } = sdkUtils; + +const chainId = CHAIN_IDs.SONEIUM; +const chainInfoBase = PUBLIC_NETWORKS[chainId]; + +export default { + ...chainInfoBase, + logoPath: "./assets/logo.svg", + grayscaleLogoPath: "./assets/grayscale-logo.svg", + spokePool: { + address: getDeployedAddress("SpokePool", chainId), + blockNumber: getDeployedBlockNumber("SpokePool", chainId), + }, + chainId, + publicRpcUrl: "https://rpc.soneium.org", + blockTimeSeconds: 2, + tokens: ["WETH", "ETH", "USDC.e"], + enableCCTP: false, +} as ChainConfig; diff --git a/scripts/generate-routes.ts b/scripts/generate-routes.ts index 60d2980b4..3a5db6b17 100644 --- a/scripts/generate-routes.ts +++ b/scripts/generate-routes.ts @@ -46,6 +46,7 @@ const enabledMainnetChainConfigs = [ chainConfigs.WORLD_CHAIN, chainConfigs.ALEPH_ZERO, chainConfigs.INK, + chainConfigs.SONEIUM, ]; const enabledSepoliaChainConfigs = [ diff --git a/src/assets/chain-logos/soneium-grayscale.svg b/src/assets/chain-logos/soneium-grayscale.svg new file mode 100644 index 000000000..83494173a --- /dev/null +++ b/src/assets/chain-logos/soneium-grayscale.svg @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/src/assets/chain-logos/soneium.svg b/src/assets/chain-logos/soneium.svg new file mode 100644 index 000000000..cb375d579 --- /dev/null +++ b/src/assets/chain-logos/soneium.svg @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/src/constants/chains/configs.ts b/src/constants/chains/configs.ts index 72ac85862..d4c6e1c65 100644 --- a/src/constants/chains/configs.ts +++ b/src/constants/chains/configs.ts @@ -105,6 +105,11 @@ import sepoliaGrayscaleLogo from "assets/chain-logos/sepolia-grayscale.svg"; import { ReactComponent as sepoliaLogoSvg } from "assets/chain-logos/sepolia.svg"; import { ReactComponent as sepoliaGrayscaleLogoSvg } from "assets/chain-logos/sepolia-grayscale.svg"; +import soneiumLogo from "assets/chain-logos/soneium.svg"; +import soneiumGrayscaleLogo from "assets/chain-logos/soneium-grayscale.svg"; +import { ReactComponent as soneiumLogoSvg } from "assets/chain-logos/soneium.svg"; +import { ReactComponent as soneiumGrayscaleLogoSvg } from "assets/chain-logos/soneium-grayscale.svg"; + import worldChainLogo from "assets/chain-logos/world-chain.svg"; import worldChainGrayscaleLogo from "assets/chain-logos/world-chain-grayscale.svg"; import { ReactComponent as worldChainLogoSvg } from "assets/chain-logos/world-chain.svg"; @@ -473,6 +478,23 @@ export const sepolia = { pollingInterval: 15000, }; +export const soneium = { + name: "soneium", + fullName: "soneium", + chainId: 1868, + logoURI: soneiumLogo, + grayscaleLogoURI: soneiumGrayscaleLogo, + logoSvg: soneiumLogoSvg, + grayscaleLogoSvg: soneiumGrayscaleLogoSvg, + rpcUrl: "https://rpc.soneium.org", + explorerUrl: "https://soneium.blockscout.com", + constructExplorerLink: (txHash: string) => + `${soneium.explorerUrl}/tx/${txHash}`, + nativeCurrencySymbol: "ETH", + customRpcUrl: process.env.REACT_APP_CHAIN_1868_PROVIDER_URL, + pollingInterval: 2000, +}; + export const worldChain = { name: "World Chain", fullName: "World Chain", @@ -545,6 +567,7 @@ export const chainConfigs = [ redstone, scroll, sepolia, + soneium, worldChain, zkSync, zora, diff --git a/src/constants/chains/index.ts b/src/constants/chains/index.ts index 799aa091f..4b7d85252 100644 --- a/src/constants/chains/index.ts +++ b/src/constants/chains/index.ts @@ -26,6 +26,7 @@ const orderedEnabledChainIds = [ CHAIN_IDs.WORLD_CHAIN, CHAIN_IDs.ALEPH_ZERO, CHAIN_IDs.INK, + CHAIN_IDs.SONEIUM, // testnet CHAIN_IDs.SEPOLIA, CHAIN_IDs.BASE_SEPOLIA, diff --git a/src/data/chains_1.json b/src/data/chains_1.json index 41706a291..86090a827 100644 --- a/src/data/chains_1.json +++ b/src/data/chains_1.json @@ -1564,5 +1564,60 @@ "logoUrl": "https://raw.githubusercontent.com/across-protocol/frontend/master/src/assets/token-logos/eth.svg" } ] + }, + { + "chainId": 1868, + "name": "Soneium", + "publicRpcUrl": "https://rpc.soneium.org", + "explorerUrl": "https://soneium.blockscout.com", + "logoUrl": "https://raw.githubusercontent.com/across-protocol/frontend/master/scripts/chain-configs/soneium/assets/logo.svg", + "spokePool": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "spokePoolBlock": 1709997, + "inputTokens": [ + { + "address": "0x4200000000000000000000000000000000000006", + "symbol": "WETH", + "name": "Wrapped Ether", + "decimals": 18, + "logoUrl": "https://raw.githubusercontent.com/across-protocol/frontend/master/src/assets/token-logos/weth.svg" + }, + { + "address": "0x4200000000000000000000000000000000000006", + "symbol": "ETH", + "name": "Ether", + "decimals": 18, + "logoUrl": "https://raw.githubusercontent.com/across-protocol/frontend/master/src/assets/token-logos/eth.svg" + }, + { + "address": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "symbol": "USDC.e", + "name": "USD Coin (bridged)", + "decimals": 6, + "logoUrl": "https://raw.githubusercontent.com/across-protocol/frontend/master/src/assets/token-logos/usdc.svg" + } + ], + "outputTokens": [ + { + "address": "0x4200000000000000000000000000000000000006", + "symbol": "WETH", + "name": "Wrapped Ether", + "decimals": 18, + "logoUrl": "https://raw.githubusercontent.com/across-protocol/frontend/master/src/assets/token-logos/weth.svg" + }, + { + "address": "0x4200000000000000000000000000000000000006", + "symbol": "ETH", + "name": "Ether", + "decimals": 18, + "logoUrl": "https://raw.githubusercontent.com/across-protocol/frontend/master/src/assets/token-logos/eth.svg" + }, + { + "address": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "symbol": "USDC.e", + "name": "USD Coin (bridged)", + "decimals": 6, + "logoUrl": "https://raw.githubusercontent.com/across-protocol/frontend/master/src/assets/token-logos/usdc.svg" + } + ] } ] diff --git a/src/data/routes_1_0xc186fA914353c44b2E33eBE05f21846F1048bEda.json b/src/data/routes_1_0xc186fA914353c44b2E33eBE05f21846F1048bEda.json index 7b5cff05c..7f7ce0ce7 100644 --- a/src/data/routes_1_0xc186fA914353c44b2E33eBE05f21846F1048bEda.json +++ b/src/data/routes_1_0xc186fA914353c44b2E33eBE05f21846F1048bEda.json @@ -989,6 +989,39 @@ "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 1, + "toChain": 1868, + "fromTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1, + "toChain": 1868, + "fromTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1, + "toChain": 1868, + "fromTokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 10, "toChain": 1, @@ -1935,6 +1968,39 @@ "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 10, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 10, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 10, + "toChain": 1868, + "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 137, "toChain": 1, @@ -2705,6 +2771,28 @@ "isNative": false, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 137, + "toChain": 1868, + "fromTokenAddress": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x9295ee1d8C5b022Be115A2AD3c30C72E34e7F096", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 137, + "toChain": 1868, + "fromTokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x9295ee1d8C5b022Be115A2AD3c30C72E34e7F096", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 42161, "toChain": 1, @@ -3640,6 +3728,39 @@ "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 42161, + "toChain": 1868, + "fromTokenAddress": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0xe35e9842fceaCA96570B734083f4a58e8F7C5f2A", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 42161, + "toChain": 1868, + "fromTokenAddress": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0xe35e9842fceaCA96570B734083f4a58e8F7C5f2A", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 42161, + "toChain": 1868, + "fromTokenAddress": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0xe35e9842fceaCA96570B734083f4a58e8F7C5f2A", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, { "fromChain": 324, "toChain": 1, @@ -4410,6 +4531,39 @@ "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 324, + "toChain": 1868, + "fromTokenAddress": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0xE0B015E54d54fc84a6cB9B666099c46adE9335FF", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 324, + "toChain": 1868, + "fromTokenAddress": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0xE0B015E54d54fc84a6cB9B666099c46adE9335FF", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 324, + "toChain": 1868, + "fromTokenAddress": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0xE0B015E54d54fc84a6cB9B666099c46adE9335FF", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 8453, "toChain": 1, @@ -5070,6 +5224,39 @@ "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 8453, + "toChain": 1868, + "fromTokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 8453, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 8453, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, { "fromChain": 59144, "toChain": 1, @@ -5840,6 +6027,39 @@ "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 59144, + "toChain": 1868, + "fromTokenAddress": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x7E63A5f1a8F0B4d0934B2f2327DAED3F6bb2ee75", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 59144, + "toChain": 1868, + "fromTokenAddress": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x7E63A5f1a8F0B4d0934B2f2327DAED3F6bb2ee75", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 59144, + "toChain": 1868, + "fromTokenAddress": "0x176211869cA2b568f2A7D4EE941E073a821EE1ff", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x7E63A5f1a8F0B4d0934B2f2327DAED3F6bb2ee75", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 34443, "toChain": 1, @@ -6533,6 +6753,39 @@ "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 34443, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 34443, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 34443, + "toChain": 1868, + "fromTokenAddress": "0xd988097fb8612cc24eeC14542bC03424c656005f", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 81457, "toChain": 1, @@ -7050,6 +7303,28 @@ "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 81457, + "toChain": 1868, + "fromTokenAddress": "0x4300000000000000000000000000000000000004", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x2D509190Ed0172ba588407D4c2df918F955Cc6E1", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 81457, + "toChain": 1868, + "fromTokenAddress": "0x4300000000000000000000000000000000000004", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x2D509190Ed0172ba588407D4c2df918F955Cc6E1", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, { "fromChain": 1135, "toChain": 1, @@ -7601,22 +7876,44 @@ "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, { - "fromChain": 534352, - "toChain": 1, - "fromTokenAddress": "0x5300000000000000000000000000000000000004", - "toTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromChain": 1135, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8", "fromTokenSymbol": "WETH", "toTokenSymbol": "WETH", "isNative": false, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, { - "fromChain": 534352, - "toChain": 1, - "fromTokenAddress": "0x5300000000000000000000000000000000000004", - "toTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromChain": 1135, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 534352, + "toChain": 1, + "fromTokenAddress": "0x5300000000000000000000000000000000000004", + "toTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 534352, + "toChain": 1, + "fromTokenAddress": "0x5300000000000000000000000000000000000004", + "toTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", "fromTokenSymbol": "ETH", "toTokenSymbol": "ETH", "isNative": true, @@ -8359,6 +8656,39 @@ "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 534352, + "toChain": 1868, + "fromTokenAddress": "0x5300000000000000000000000000000000000004", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 534352, + "toChain": 1868, + "fromTokenAddress": "0x5300000000000000000000000000000000000004", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 534352, + "toChain": 1868, + "fromTokenAddress": "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 690, "toChain": 1, @@ -8689,6 +9019,28 @@ "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 690, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x13fDac9F9b4777705db45291bbFF3c972c6d1d97", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 690, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x13fDac9F9b4777705db45291bbFF3c972c6d1d97", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, { "fromChain": 7777777, "toChain": 1, @@ -9173,6 +9525,39 @@ "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 7777777, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x13fDac9F9b4777705db45291bbFF3c972c6d1d97", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 7777777, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x13fDac9F9b4777705db45291bbFF3c972c6d1d97", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 7777777, + "toChain": 1868, + "fromTokenAddress": "0xCccCCccc7021b32EBb4e8C08314bD62F7c653EC4", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x13fDac9F9b4777705db45291bbFF3c972c6d1d97", + "fromTokenSymbol": "USDzC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 480, "toChain": 1, @@ -9833,6 +10218,39 @@ "isNative": false, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 480, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 480, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 480, + "toChain": 1868, + "fromTokenAddress": "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 41455, "toChain": 1, @@ -10097,6 +10515,17 @@ "isNative": false, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, + { + "fromChain": 41455, + "toChain": 1868, + "fromTokenAddress": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x13fDac9F9b4777705db45291bbFF3c972c6d1d97", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, { "fromChain": 57073, "toChain": 1, @@ -10426,90 +10855,629 @@ "toTokenSymbol": "ETH", "isNative": true, "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" - } - ], - "swapRoutes": [ + }, { - "fromChain": 10, - "toChain": 1, - "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", - "toTokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", - "fromTokenSymbol": "USDC", - "toTokenSymbol": "USDC", + "fromChain": 57073, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0xeF684C38F94F48775959ECf2012D7E864ffb9dd4", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", "isNative": false, - "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "swapTokenSymbol": "USDC.e", - "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, { - "fromChain": 10, - "toChain": 137, - "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", - "toTokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", - "fromTokenSymbol": "USDC", - "toTokenSymbol": "USDC", - "isNative": false, - "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "swapTokenSymbol": "USDC.e", - "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + "fromChain": 57073, + "toChain": 1868, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0xeF684C38F94F48775959ECf2012D7E864ffb9dd4", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, { - "fromChain": 10, - "toChain": 137, - "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", - "toTokenAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", - "fromTokenSymbol": "USDC", - "toTokenSymbol": "USDC.e", + "fromChain": 1868, + "toChain": 1, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", "isNative": false, - "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "swapTokenSymbol": "USDC.e", - "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, { - "fromChain": 10, - "toChain": 42161, - "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", - "toTokenAddress": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", - "fromTokenSymbol": "USDC", + "fromChain": 1868, + "toChain": 1, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 1, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", "toTokenSymbol": "USDC", "isNative": false, - "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "swapTokenSymbol": "USDC.e", - "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }, { - "fromChain": 10, - "toChain": 42161, - "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", - "toTokenAddress": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", - "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", - "fromTokenSymbol": "USDC", - "toTokenSymbol": "USDC.e", + "fromChain": 1868, + "toChain": 10, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", "isNative": false, - "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - "swapTokenSymbol": "USDC.e", - "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, { - "fromChain": 10, - "toChain": 324, - "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", - "toTokenAddress": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", - "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", - "fromTokenSymbol": "USDC", - "toTokenSymbol": "USDC.e", - "isNative": false, - "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "fromChain": 1868, + "toChain": 10, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 10, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 10, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 137, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 137, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 137, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 137, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 42161, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 42161, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 42161, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 42161, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 324, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 324, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 324, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 8453, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 8453, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 8453, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 8453, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDbC", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 59144, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 59144, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 59144, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0x176211869cA2b568f2A7D4EE941E073a821EE1ff", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 34443, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 34443, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 34443, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0xd988097fb8612cc24eeC14542bC03424c656005f", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 81457, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4300000000000000000000000000000000000004", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 81457, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4300000000000000000000000000000000000004", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 1135, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 1135, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 534352, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x5300000000000000000000000000000000000004", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 534352, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x5300000000000000000000000000000000000004", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 534352, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 690, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 690, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 7777777, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 7777777, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 7777777, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0xCccCCccc7021b32EBb4e8C08314bD62F7c653EC4", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDzC", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 480, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 480, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 480, + "fromTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "toTokenAddress": "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "USDC.e", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 1868, + "toChain": 41455, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 41455, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 57073, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "WETH", + "toTokenSymbol": "WETH", + "isNative": false, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "fromChain": 1868, + "toChain": 57073, + "fromTokenAddress": "0x4200000000000000000000000000000000000006", + "toTokenAddress": "0x4200000000000000000000000000000000000006", + "fromSpokeAddress": "0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96", + "fromTokenSymbol": "ETH", + "toTokenSymbol": "ETH", + "isNative": true, + "l1TokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + } + ], + "swapRoutes": [ + { + "fromChain": 10, + "toChain": 1, + "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "toTokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "swapTokenSymbol": "USDC.e", + "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 10, + "toChain": 137, + "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "toTokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "swapTokenSymbol": "USDC.e", + "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 10, + "toChain": 137, + "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "toTokenAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "swapTokenSymbol": "USDC.e", + "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 10, + "toChain": 42161, + "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "toTokenAddress": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "swapTokenSymbol": "USDC.e", + "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 10, + "toChain": 42161, + "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "toTokenAddress": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "swapTokenSymbol": "USDC.e", + "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 10, + "toChain": 324, + "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "toTokenAddress": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", "swapTokenSymbol": "USDC.e", "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }, @@ -10611,6 +11579,20 @@ "swapTokenSymbol": "USDC.e", "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }, + { + "fromChain": 10, + "toChain": 1868, + "fromTokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x6f26Bf09B1C792e3228e5467807a900A503c0281", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "swapTokenAddress": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "swapTokenSymbol": "USDC.e", + "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 137, "toChain": 1, @@ -10793,6 +11775,20 @@ "swapTokenSymbol": "USDC.e", "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }, + { + "fromChain": 137, + "toChain": 1868, + "fromTokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x9295ee1d8C5b022Be115A2AD3c30C72E34e7F096", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "swapTokenAddress": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + "swapTokenSymbol": "USDC.e", + "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 42161, "toChain": 1, @@ -10975,6 +11971,20 @@ "swapTokenSymbol": "USDC.e", "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }, + { + "fromChain": 42161, + "toChain": 1868, + "fromTokenAddress": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0xe35e9842fceaCA96570B734083f4a58e8F7C5f2A", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "swapTokenAddress": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "swapTokenSymbol": "USDC.e", + "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, { "fromChain": 8453, "toChain": 1, @@ -11156,6 +12166,20 @@ "swapTokenAddress": "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", "swapTokenSymbol": "USDbC", "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "fromChain": 8453, + "toChain": 1868, + "fromTokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + "toTokenAddress": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "fromSpokeAddress": "0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64", + "fromTokenSymbol": "USDC", + "toTokenSymbol": "USDC.e", + "isNative": false, + "l1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "swapTokenAddress": "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", + "swapTokenSymbol": "USDbC", + "swapTokenL1TokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" } ], "pools": [], diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 46b82c189..ae82d34da 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -125,6 +125,7 @@ export const rewardPrograms: Record = { ChainId.INK, ChainId.WORLD_CHAIN, ChainId.LISK, + ChainId.SONEIUM, ], }, "arb-rebates": { diff --git a/yarn.lock b/yarn.lock index 699f87e8b..b45c687ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16,15 +16,10 @@ "@uma/common" "^2.17.0" hardhat "^2.9.3" -"@across-protocol/constants@^3.1.24": - version "3.1.25" - resolved "https://registry.yarnpkg.com/@across-protocol/constants/-/constants-3.1.25.tgz#60d6d9814582ff91faf2b6d9f51d6dccb447b4ce" - integrity sha512-GpZoYn7hETYL2BPMM2GqXAer6+l/xuhder+pvpb00HJcb/sqCjF7vaaeKxjKJ3jKtyeulYmdu0NDkeNm5KbNWA== - -"@across-protocol/constants@^3.1.27": - version "3.1.28" - resolved "https://registry.yarnpkg.com/@across-protocol/constants/-/constants-3.1.28.tgz#0540f5a44b085b0951a853898afe174ea113db3a" - integrity sha512-rnI1pQgkJ6+hPIQNomsi8eQreVfWKfFn9i9Z39U0fAnoXodZklW0eqj5N0cXlEfahp5j2u1RCs7s6fQ9megCdw== +"@across-protocol/constants@^3.1.30": + version "3.1.30" + resolved "https://registry.yarnpkg.com/@across-protocol/constants/-/constants-3.1.30.tgz#b5bb82b5efcf3f63658332eece240ecdb645c0bc" + integrity sha512-1lEhQmYiqcMKg05fnPfSeCk9QTRaHdVykD+Wcr5tcsyPYgOMtXOXvxxvtSOe9FK+ckpRypp4ab2WUN2iitnzpw== "@across-protocol/constants@^3.1.9": version "3.1.13" @@ -60,40 +55,12 @@ "@openzeppelin/contracts" "4.1.0" "@uma/core" "^2.18.0" -"@across-protocol/contracts@^3.0.19": - version "3.0.19" - resolved "https://registry.yarnpkg.com/@across-protocol/contracts/-/contracts-3.0.19.tgz#3756504bb3f5f625f9ca403045a79050e675602f" - integrity sha512-9GjKKF8SHGKP9FGhawHzLZ8sfBVFUICd+Bn1pn3SFuh0p+ndQIayG+QEYRKGFUXVPV6+XXLve750PQ1Hu7dIEg== - dependencies: - "@across-protocol/constants" "^3.1.24" - "@coral-xyz/anchor" "^0.30.1" - "@defi-wonderland/smock" "^2.3.4" - "@eth-optimism/contracts" "^0.5.40" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@openzeppelin/contracts" "4.9.6" - "@openzeppelin/contracts-upgradeable" "4.9.6" - "@scroll-tech/contracts" "^0.1.0" - "@solana-developers/helpers" "^2.4.0" - "@solana/spl-token" "^0.4.6" - "@solana/web3.js" "^1.31.0" - "@types/yargs" "^17.0.33" - "@uma/common" "^2.37.3" - "@uma/contracts-node" "^0.4.17" - "@uma/core" "^2.61.0" - axios "^1.7.4" - bs58 "^6.0.0" - prettier-plugin-rust "^0.1.9" - yargs "^17.7.2" - zksync-web3 "^0.14.3" - -"@across-protocol/contracts@^3.0.20": - version "3.0.20" - resolved "https://registry.yarnpkg.com/@across-protocol/contracts/-/contracts-3.0.20.tgz#5a70782093d21a96b2e955b7ed725bea7af6e804" - integrity sha512-ufyO+MrbY7+0TDm/1cDl9iAeR4P8jt0AM1F9wiCBHVIYtj1wMD4eNm7G5Am3u8p1ruMjRhi6dJEVQcRF2O+LUg== +"@across-protocol/contracts@^3.0.25": + version "3.0.25" + resolved "https://registry.yarnpkg.com/@across-protocol/contracts/-/contracts-3.0.25.tgz#733771bb3d40e111bd14b8be9b4526595ccba0a7" + integrity sha512-OwBxylXAzujUJCGbENyBki0yUryJJAb4v7i69nri+psyJr8MA8LhiiOIVhw+jIUeukBeY8uKF+AI7fzlewwFvA== dependencies: - "@across-protocol/constants" "^3.1.27" + "@across-protocol/constants" "^3.1.30" "@coral-xyz/anchor" "^0.30.1" "@defi-wonderland/smock" "^2.3.4" "@eth-optimism/contracts" "^0.5.40" @@ -116,14 +83,14 @@ yargs "^17.7.2" zksync-web3 "^0.14.3" -"@across-protocol/sdk@^3.4.10": - version "3.4.10" - resolved "https://registry.yarnpkg.com/@across-protocol/sdk/-/sdk-3.4.10.tgz#b74c551f1625afccc10f5b792f1f61395771cf40" - integrity sha512-kM+RyTNVXzS4dl5zwJZh6es5FTouN1nECd0cckE7Z/FzEFdMmQmCn4I1Ojgt4gmE5AuUBZef4/11ZvT8uRmutQ== +"@across-protocol/sdk@^3.4.12": + version "3.4.12" + resolved "https://registry.yarnpkg.com/@across-protocol/sdk/-/sdk-3.4.12.tgz#2944f41d51a2cd889a4d1882435149a32e5441c8" + integrity sha512-Bc4hpvl0CysisOLk+WQLbSUwhRhJ/NPyHwocA/Qo5ERne+zmN8P8dsmVQLgsIxay3Nu+VLVcNLoSKWewiom46w== dependencies: "@across-protocol/across-token" "^1.0.0" - "@across-protocol/constants" "^3.1.27" - "@across-protocol/contracts" "^3.0.20" + "@across-protocol/constants" "^3.1.30" + "@across-protocol/contracts" "^3.0.25" "@eth-optimism/sdk" "^3.3.1" "@ethersproject/bignumber" "^5.7.0" "@pinata/sdk" "^2.1.0"