From af696cbb25c49c9375050264aac0dfb74693a0e9 Mon Sep 17 00:00:00 2001 From: Ihor Farion Date: Fri, 20 Mar 2026 19:24:53 -0700 Subject: [PATCH 1/4] refactor: migrate to canonical schema pipeline --- .github/workflows/ci.yml | 36 + .github/workflows/publish.yml | 5 +- .prettierrc | 1 - AGENTS.md | 113 +- MIGRATION_PROGRESS.md | 27 + README.md | 67 +- data/constants.v1.json | 2444 +++++++++++++++++++++++++ package.json | 29 +- schema/constants.v1.schema.json | 187 ++ scripts/generate-legacy.mjs | 144 ++ scripts/sync-canonical-json.mjs | 11 + scripts/validate-canonical.mjs | 93 + scripts/verify-legacy-equivalence.mjs | 32 + src/canonical.ts | 27 + src/generated/canonical-types.ts | 52 + src/generated/constants.v1.json | 2444 +++++++++++++++++++++++++ src/networks.ts | 844 +++++---- src/tokens.ts | 628 ++++--- tsconfig.json | 2 + yarn.lock | 99 +- 20 files changed, 6510 insertions(+), 775 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 MIGRATION_PROGRESS.md create mode 100644 data/constants.v1.json create mode 100644 schema/constants.v1.schema.json create mode 100644 scripts/generate-legacy.mjs create mode 100644 scripts/sync-canonical-json.mjs create mode 100644 scripts/validate-canonical.mjs create mode 100644 scripts/verify-legacy-equivalence.mjs create mode 100644 src/canonical.ts create mode 100644 src/generated/canonical-types.ts create mode 100644 src/generated/constants.v1.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..e9711e5 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,36 @@ +name: CI + +on: + pull_request: + push: + branches: [master] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v3 + with: + node-version: "22.18.0" + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Lint + run: yarn lint + + - name: Build + run: yarn build + + - name: Verify legacy equivalence + run: yarn verify:legacy-equivalence + + - name: Verify generated files are up to date + run: | + if ! git diff --exit-code src/; then + echo "::error::Generated files are out of date. Run 'yarn build' and commit the result." + git diff src/ + exit 1 + fi diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3b8ba9d..2e54e16 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -41,6 +41,9 @@ jobs: - name: Build run: yarn build + - name: Verify legacy equivalence + run: yarn verify:legacy-equivalence + - name: Update npm run: npm install -g npm@latest @@ -74,4 +77,4 @@ jobs: - name: Publish tagged version if: steps.release.outputs.tag != '' - run: npm publish --tag ${{ steps.release.outputs.tag }} \ No newline at end of file + run: npm publish --tag ${{ steps.release.outputs.tag }} diff --git a/.prettierrc b/.prettierrc index 50582c1..eccc559 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,7 +1,6 @@ { "printWidth": 120, "bracketSpacing": true, - "explicitTypes": "preserve", "tabWidth": 2, "overrides": [ { diff --git a/AGENTS.md b/AGENTS.md index ebe55cc..6252b13 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,74 +5,117 @@ This repository contains `@across-protocol/constants` — a shared library expor ## How to use docs in this repo 1. This file (`AGENTS.md`) for navigation and conventions. -2. `src/index.ts` re-exports everything from `networks.ts` and `tokens.ts`. +2. `data/constants.v1.json` is the canonical source of truth. +3. `schema/constants.v1.schema.json` defines the canonical JSON contract. +4. `src/index.ts` re-exports the backward-compatible legacy TypeScript surface. +5. `src/canonical.ts` exposes the canonical TypeScript wrapper. ## Documentation maintenance -Update this `AGENTS.md` when new source files are added or the build/publish process changes. +Update this `AGENTS.md` when the source-of-truth files, generation flow, or publish process changes. ## Quick index -- Entry point: `src/index.ts` -- Network/chain definitions: `src/networks.ts` -- Token mappings and metadata: `src/tokens.ts` -- Build output: `dist/` (cjs, esm, types) +- Canonical source data: `data/constants.v1.json` +- Canonical schema: `schema/constants.v1.schema.json` +- Legacy package entry point: `src/index.ts` +- Canonical TS wrapper: `src/canonical.ts` +- Generated canonical TS types: `src/generated/canonical-types.ts` +- Generated canonical JSON copy for TS import: `src/generated/constants.v1.json` +- Generated legacy networks: `src/networks.ts` +- Generated legacy tokens: `src/tokens.ts` +- Validation script: `scripts/validate-canonical.mjs` +- Legacy generator: `scripts/generate-legacy.mjs` +- Upstream equivalence check: `scripts/verify-legacy-equivalence.mjs` +- Build output: `dist/` +- CI workflow: `.github/workflows/ci.yml` - Publish workflow: `.github/workflows/publish.yml` ## Source files -| File | Purpose | Key exports | -| ----------------- | ------------------ | ---------------------------------------------------------------------------------------------- | -| `src/index.ts` | Barrel re-export | Re-exports `networks` and `tokens` | -| `src/networks.ts` | Chain ID constants | Testnet and mainnet chain IDs, chain metadata (~620 lines) | -| `src/tokens.ts` | Token definitions | `TOKEN_SYMBOLS_MAP` with name, symbol, decimals, per-chain addresses, coingeckoId (~730 lines) | +| File | Purpose | Key exports / outputs | +| --------------------------------------- | -------------------------------------------- | --------------------------------------------------------- | +| `data/constants.v1.json` | Canonical source of truth | Chains, networks, tokens, token equivalence mappings | +| `schema/constants.v1.schema.json` | Canonical JSON Schema | Structural contract for canonical data | +| `src/index.ts` | Barrel re-export | Re-exports legacy `networks` and `tokens` | +| `src/canonical.ts` | Canonical TypeScript wrapper | `CANONICAL_CONSTANTS_V1` and canonical TS type exports | +| `src/generated/canonical-types.ts` | Generated canonical TS types | Schema-derived canonical interfaces and unions | +| `src/generated/constants.v1.json` | Generated canonical JSON copy | Runtime JSON imported by `src/canonical.ts` | +| `src/networks.ts` | Generated legacy chain/network definitions | Legacy chain IDs, enum, network maps | +| `src/tokens.ts` | Generated legacy token definitions | Legacy token metadata map and token equivalence remapping | +| `scripts/validate-canonical.mjs` | Canonical validation | AJV schema validation plus semantic invariants | +| `scripts/sync-canonical-json.mjs` | Canonical JSON sync | Copies canonical JSON into `src/generated/` | +| `scripts/generate-legacy.mjs` | Canonical -> legacy TS generator | Regenerates `src/networks.ts` and `src/tokens.ts` | +| `scripts/verify-legacy-equivalence.mjs` | Local vs upstream legacy compatibility check | Verifies built root exports match pinned upstream package | ## Directory tree ```text -constants/ +json-constants/ +├── data/ +│ └── constants.v1.json +├── schema/ +│ └── constants.v1.schema.json ├── src/ -│ ├── index.ts # Barrel export -│ ├── networks.ts # Chain/network definitions -│ └── tokens.ts # Token metadata and addresses -├── dist/ # Build output (generated) -│ ├── cjs/ # CommonJS build -│ ├── esm/ # ES Modules build -│ └── types/ # TypeScript declarations -├── package.json # @across-protocol/constants, Yarn -├── tsconfig.json # TypeScript config (strict, ES5 target) -├── .eslintrc.cjs # ESLint config -├── .prettierrc # Prettier (120 printWidth) -└── .github/workflows/publish.yml # NPM publish on GitHub release +│ ├── canonical.ts +│ ├── generated/ +│ │ ├── canonical-types.ts +│ │ └── constants.v1.json +│ ├── index.ts +│ ├── networks.ts +│ └── tokens.ts +├── scripts/ +│ ├── generate-legacy.mjs +│ ├── sync-canonical-json.mjs +│ ├── validate-canonical.mjs +│ └── verify-legacy-equivalence.mjs +├── dist/ +│ ├── cjs/ +│ ├── esm/ +│ └── types/ +├── package.json +├── tsconfig.json +├── .eslintrc.cjs +├── .prettierrc +└── .github/workflows/ + ├── ci.yml + └── publish.yml ``` ## Build and test ```bash -# Build (CJS + ESM + types) +# Build generated sources and package outputs yarn build # Lint yarn lint -# Auto-fix -yarn lint-fix +# Compare built legacy exports to the pinned upstream package +yarn verify:legacy-equivalence ``` -There are no tests — this is a pure data library. +There are no application tests. The important verification gate is `verify:legacy-equivalence`, which ensures the generated legacy API matches the published upstream legacy package. -## Adding new tokens or networks +## Updating constants -1. **New network**: Add chain ID constant to `src/networks.ts`. -2. **New token**: Add entry to `TOKEN_SYMBOLS_MAP` in `src/tokens.ts` with name, symbol, decimals, per-chain addresses, and coingeckoId. -3. Run `yarn lint-fix` and `yarn build` to verify. +1. Edit `data/constants.v1.json`. +2. Keep the file aligned with `schema/constants.v1.schema.json`. +3. Run `yarn build`. +4. Run `yarn verify:legacy-equivalence`. + +Do not edit `src/generated/canonical-types.ts`, `src/generated/constants.v1.json`, `src/networks.ts`, or `src/tokens.ts` by hand. ## Publish process - Published to npm via GitHub Actions on GitHub release. -- Workflow validates semver, builds, and publishes with OIDC trusted publishing. -- Pre-release versions supported for beta/canary tags. +- `yarn build` validates canonical data, regenerates canonical and legacy TypeScript sources, and builds package outputs. +- Canonical JSON and schema are published as package artifacts. +- The root package API remains the legacy TypeScript surface for backward compatibility. +- The `./canonical` export exposes the canonical TypeScript wrapper. ## Consumers -This package is consumed by: relayer, indexer, frontend, and toolkit. +- Existing TypeScript consumers should continue using the root package exports. +- TypeScript consumers that want the language-agnostic shape can use `@across-protocol/constants/canonical`. +- Non-TypeScript consumers should consume `data/constants.v1.json` against `schema/constants.v1.schema.json`. diff --git a/MIGRATION_PROGRESS.md b/MIGRATION_PROGRESS.md new file mode 100644 index 0000000..d4f48b5 --- /dev/null +++ b/MIGRATION_PROGRESS.md @@ -0,0 +1,27 @@ +# Migration Progress + +## Goal + +Move the repo to a canonical JSON + JSON Schema model while preserving the existing root TypeScript API. + +## Checklist + +- [x] Reset the repo to `1854a7f` to restart the migration cleanly +- [x] Add canonical source data in `data/constants.v1.json` +- [x] Add canonical schema in `schema/constants.v1.schema.json` +- [x] Add `ajv` validation for canonical data +- [x] Generate TypeScript canonical types from schema +- [x] Replace handwritten source-of-truth constants with a canonical wrapper plus a handwritten legacy adapter +- [x] Remove legacy `json/*.json` artifacts and related package wiring +- [x] Add a pinned equivalence check against the published upstream legacy package +- [x] Wire validation and equivalence checks into scripts and CI +- [x] Update `README.md` +- [x] Update `AGENTS.md` +- [x] Run build, lint, and verification successfully + +## Notes + +- The root package entrypoint must remain backward-compatible for existing TypeScript consumers. +- The canonical source of truth should be `data/constants.v1.json`. +- The canonical schema should be `schema/constants.v1.schema.json`. +- Legacy equivalence currently passes against `@across-protocol/constants@3.1.102`. diff --git a/README.md b/README.md index 46fcf53..900f9b0 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,14 @@ Shared library exporting network, token, and address definitions used across the Across Protocol ecosystem. +This package now has two public surfaces: + +- The root package, `@across-protocol/constants`, which preserves the existing TypeScript legacy API. +- A canonical language-agnostic contract consisting of: + - `data/constants.v1.json` + - `schema/constants.v1.schema.json` + - `@across-protocol/constants/canonical` + ## Installation ```bash @@ -16,44 +24,65 @@ yarn add @across-protocol/constants ## Usage -```typescript -import { TOKEN_SYMBOLS_MAP } from "@across-protocol/constants"; +Legacy TypeScript surface: + +```ts +import { TOKEN_SYMBOLS_MAP } from "@across-protocol/constants" + +const usdc = TOKEN_SYMBOLS_MAP.USDC +console.log(usdc.decimals) +console.log(usdc.addresses[1]) +``` + +Canonical TypeScript surface: + +```ts +import { CANONICAL_CONSTANTS_V1 } from "@across-protocol/constants/canonical" -// Access token metadata -const usdc = TOKEN_SYMBOLS_MAP.USDC; -console.log(usdc.decimals); // 6 -console.log(usdc.addresses[1]); // Ethereum mainnet address +const mainnet = CANONICAL_CONSTANTS_V1.networks.find((network) => network.chainId === 1) +console.log(mainnet?.name) ``` -## What's Exported +## Package Layout + +| Surface | Description | +| -------------------------------------- | -------------------------------------------------- | +| `@across-protocol/constants` | Backward-compatible legacy TypeScript exports | +| `@across-protocol/constants/canonical` | Canonical TypeScript wrapper around canonical JSON | +| `data/constants.v1.json` | Canonical source of truth | +| `schema/constants.v1.schema.json` | Canonical JSON Schema | -| Module | Description | -|--------|-------------| -| `networks` | Chain ID constants for testnets and mainnets, chain metadata | -| `tokens` | `TOKEN_SYMBOLS_MAP` — token name, symbol, decimals, per-chain addresses, coingeckoId | +The canonical JSON is the source of truth. The legacy root TypeScript exports are generated from it during `yarn build`. ## Development ```bash -# Build (CJS + ESM + TypeScript declarations) +# Build generated sources and package outputs yarn build # Lint yarn lint -# Auto-fix lint issues -yarn lint-fix +# Check canonical data against the published upstream legacy package +yarn verify:legacy-equivalence ``` -## Adding Tokens or Networks +## Updating Constants + +1. Edit `data/constants.v1.json`. +2. Keep it aligned with `schema/constants.v1.schema.json`. +3. Run `yarn build`. +4. Run `yarn verify:legacy-equivalence`. + +## Validation And Generation -1. **New network**: Add chain ID constant to `src/networks.ts`. -2. **New token**: Add entry to `TOKEN_SYMBOLS_MAP` in `src/tokens.ts`. -3. Run `yarn lint-fix && yarn build` to verify. +- Canonical JSON is validated with `ajv`. +- Canonical TypeScript types are generated from JSON Schema with `json-schema-to-typescript`. +- Legacy TypeScript exports are generated from canonical JSON by `scripts/generate-legacy.mjs`. ## Publishing -Published to npm automatically via GitHub Actions on [GitHub release](https://github.com/across-protocol/constants/releases). Supports pre-release versions for beta/canary tags. +Published to npm automatically via GitHub Actions on [GitHub release](https://github.com/across-protocol/json-constants/releases). Pre-release versions are supported for beta/canary tags. ## License diff --git a/data/constants.v1.json b/data/constants.v1.json new file mode 100644 index 0000000..003d9f2 --- /dev/null +++ b/data/constants.v1.json @@ -0,0 +1,2444 @@ +{ + "schemaVersion": 1, + "chains": [ + { + "key": "ALEPH_ZERO", + "chainId": 41455, + "groups": ["mainnet"] + }, + { + "key": "ARBITRUM", + "chainId": 42161, + "groups": ["mainnet"] + }, + { + "key": "BASE", + "chainId": 8453, + "groups": ["mainnet"] + }, + { + "key": "BLAST", + "chainId": 81457, + "groups": ["mainnet"] + }, + { + "key": "BOB", + "chainId": 60808, + "groups": ["mainnet"] + }, + { + "key": "BSC", + "chainId": 56, + "groups": ["mainnet"] + }, + { + "key": "BOBA", + "chainId": 288, + "groups": ["mainnet"] + }, + { + "key": "HYPEREVM", + "chainId": 999, + "groups": ["mainnet"] + }, + { + "key": "HYPERCORE", + "chainId": 1337, + "groups": ["mainnet"] + }, + { + "key": "INK", + "chainId": 57073, + "groups": ["mainnet"] + }, + { + "key": "LENS", + "chainId": 232, + "groups": ["mainnet"] + }, + { + "key": "LIGHTER", + "chainId": 2337, + "groups": ["mainnet"] + }, + { + "key": "LINEA", + "chainId": 59144, + "groups": ["mainnet"] + }, + { + "key": "LISK", + "chainId": 1135, + "groups": ["mainnet"] + }, + { + "key": "MAINNET", + "chainId": 1, + "groups": ["mainnet"] + }, + { + "key": "MEGAETH", + "chainId": 4326, + "groups": ["mainnet"] + }, + { + "key": "MODE", + "chainId": 34443, + "groups": ["mainnet"] + }, + { + "key": "MONAD", + "chainId": 143, + "groups": ["mainnet"] + }, + { + "key": "OPTIMISM", + "chainId": 10, + "groups": ["mainnet"] + }, + { + "key": "PLASMA", + "chainId": 9745, + "groups": ["mainnet"] + }, + { + "key": "POLYGON", + "chainId": 137, + "groups": ["mainnet"] + }, + { + "key": "REDSTONE", + "chainId": 690, + "groups": ["mainnet"] + }, + { + "key": "SCROLL", + "chainId": 534352, + "groups": ["mainnet"] + }, + { + "key": "SONEIUM", + "chainId": 1868, + "groups": ["mainnet"] + }, + { + "key": "SUPERSEED", + "chainId": 5330, + "groups": ["mainnet"] + }, + { + "key": "TEMPO", + "chainId": 4217, + "groups": ["mainnet"] + }, + { + "key": "UNICHAIN", + "chainId": 130, + "groups": ["mainnet"] + }, + { + "key": "WORLD_CHAIN", + "chainId": 480, + "groups": ["mainnet"] + }, + { + "key": "ZK_SYNC", + "chainId": 324, + "groups": ["mainnet"] + }, + { + "key": "ZORA", + "chainId": 7777777, + "groups": ["mainnet"] + }, + { + "key": "SOLANA", + "chainId": 34268394551451, + "groups": ["mainnet"] + }, + { + "key": "ARBITRUM_SEPOLIA", + "chainId": 421614, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "BASE_SEPOLIA", + "chainId": 84532, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "BLAST_SEPOLIA", + "chainId": 168587773, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "BOB_SEPOLIA", + "chainId": 808813, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "HYPEREVM_TESTNET", + "chainId": 998, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "INK_SEPOLIA", + "chainId": 763373, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "TATARA", + "chainId": 129399, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "LENS_SEPOLIA", + "chainId": 37111, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "LISK_SEPOLIA", + "chainId": 4202, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "MODE_SEPOLIA", + "chainId": 919, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "MONAD_TESTNET", + "chainId": 10143, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "OPTIMISM_SEPOLIA", + "chainId": 11155420, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "PLASMA_TESTNET", + "chainId": 9746, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "POLYGON_AMOY", + "chainId": 80002, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "SCROLL_SEPOLIA", + "chainId": 534351, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "SEPOLIA", + "chainId": 11155111, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "UNICHAIN_SEPOLIA", + "chainId": 1301, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "ZK_SYNC_SEPOLIA", + "chainId": 300, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "SOLANA_DEVNET", + "chainId": 133268194659241, + "groups": ["testnet"] + } + ], + "networks": [ + { + "chainId": 41455, + "name": "Aleph Zero", + "family": "orbit", + "nativeToken": "AZERO", + "publicRpc": "https://rpc.alephzero.raas.gelato.cloud", + "blockExplorer": "https://evm-explorer.alephzero.org", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 42161, + "name": "Arbitrum One", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://arb1.arbitrum.io/rpc", + "blockExplorer": "https://arbiscan.io", + "cctpDomain": 3, + "oftEid": 30110, + "hypDomainId": 42161, + "groups": ["production"] + }, + { + "chainId": 8453, + "name": "Base", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.base.org", + "blockExplorer": "https://basescan.org", + "cctpDomain": 6, + "oftEid": 30184, + "hypDomainId": 8453, + "groups": ["production"] + }, + { + "chainId": 81457, + "name": "Blast", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.blast.io", + "blockExplorer": "https://blastscan.io", + "cctpDomain": null, + "oftEid": 30243, + "hypDomainId": 81457, + "groups": ["production"] + }, + { + "chainId": 56, + "name": "BNB Smart Chain", + "family": "none", + "nativeToken": "BNB", + "publicRpc": "https://bsc-dataseed1.binance.org", + "blockExplorer": "https://bscscan.com", + "cctpDomain": null, + "oftEid": 30102, + "hypDomainId": 56, + "groups": ["production"] + }, + { + "chainId": 288, + "name": "Boba", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.boba.network", + "blockExplorer": "https://blockexplorer.boba.network", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 999, + "name": "HyperEVM", + "family": "none", + "nativeToken": "HYPE", + "publicRpc": "https://rpc.hyperliquid.xyz/evm", + "blockExplorer": "https://hyperevmscan.io/", + "cctpDomain": 19, + "oftEid": 30367, + "hypDomainId": 999, + "groups": ["production"] + }, + { + "chainId": 1337, + "name": "HyperCore", + "family": "none", + "nativeToken": "HYPE", + "publicRpc": "https://api.hyperliquid.xyz", + "blockExplorer": "https://app.hyperliquid.xyz/explorer", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 57073, + "name": "Ink", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc-gel.inkonchain.com", + "blockExplorer": "https://explorer.inkonchain.com", + "cctpDomain": 21, + "oftEid": 30339, + "hypDomainId": 57073, + "groups": ["production"] + }, + { + "chainId": 232, + "name": "Lens", + "family": "zk_stack", + "nativeToken": "WGHO", + "publicRpc": "https://api.lens.matterhosted.dev", + "blockExplorer": "https://explorer.lens.xyz", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 2337, + "name": "Lighter", + "family": "none", + "nativeToken": "LIT", + "publicRpc": "https://mainnet.zklighter.elliot.ai", + "blockExplorer": "https://app.lighter.xyz/explorer", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 59144, + "name": "Linea", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://rpc.linea.build", + "blockExplorer": "https://lineascan.build", + "cctpDomain": 11, + "oftEid": null, + "hypDomainId": 59144, + "groups": ["production"] + }, + { + "chainId": 1135, + "name": "Lisk", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.api.lisk.com", + "blockExplorer": "https://blockscout.lisk.com", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 1, + "name": "Mainnet", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://eth.llamarpc.com", + "blockExplorer": "https://etherscan.io", + "cctpDomain": 0, + "oftEid": 30101, + "hypDomainId": 1, + "groups": ["production"] + }, + { + "chainId": 4326, + "name": "MegaETH", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.megaeth.com/rpc", + "blockExplorer": "https://megaeth.blockscout.com", + "cctpDomain": null, + "oftEid": 30398, + "hypDomainId": 4326, + "groups": ["production"] + }, + { + "chainId": 34443, + "name": "Mode", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.mode.network", + "blockExplorer": "https://explorer.mode.network", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 34443, + "groups": ["production"] + }, + { + "chainId": 143, + "name": "Monad", + "family": "none", + "nativeToken": "MON", + "publicRpc": "https://rpc-mainnet.monadinfra.com", + "blockExplorer": "https://monadvision.com", + "cctpDomain": 15, + "oftEid": 30390, + "hypDomainId": 143, + "groups": ["production"] + }, + { + "chainId": 10, + "name": "Optimism", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.optimism.io", + "blockExplorer": "https://optimistic.etherscan.io", + "cctpDomain": 2, + "oftEid": 30111, + "hypDomainId": 10, + "groups": ["production"] + }, + { + "chainId": 9745, + "name": "Plasma", + "family": "none", + "nativeToken": "XPL", + "publicRpc": "https://rpc.plasma.to", + "blockExplorer": "https://plasmascan.to", + "cctpDomain": null, + "oftEid": 30383, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 137, + "name": "Polygon", + "family": "none", + "nativeToken": "POL", + "publicRpc": "https://polygon-rpc.com", + "blockExplorer": "https://polygonscan.com", + "cctpDomain": 7, + "oftEid": 30109, + "hypDomainId": 137, + "groups": ["production"] + }, + { + "chainId": 690, + "name": "Redstone", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.redstonechain.com", + "blockExplorer": "https://explorer.redstone.xyz", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 690, + "groups": ["production"] + }, + { + "chainId": 534352, + "name": "Scroll", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://rpc.scroll.io", + "blockExplorer": "https://scrollscan.com", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 1868, + "name": "Soneium", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.soneium.org", + "blockExplorer": "https://soneium.blockscout.com", + "cctpDomain": null, + "oftEid": 30340, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 5330, + "name": "Superseed", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.superseed.xyz", + "blockExplorer": "", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 4217, + "name": "Tempo", + "family": "none", + "nativeToken": "pathUSD", + "publicRpc": "https://rpc.tempo.xyz", + "blockExplorer": "https://explore.mainnet.tempo.xyz", + "cctpDomain": null, + "oftEid": 30410, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 130, + "name": "Unichain", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.unichain.org/", + "blockExplorer": "https://uniscan.xyz", + "cctpDomain": 10, + "oftEid": 30320, + "hypDomainId": 130, + "groups": ["production"] + }, + { + "chainId": 480, + "name": "World Chain", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://worldchain-mainnet.g.alchemy.com/public", + "blockExplorer": "https://worldchain-mainnet-explorer.alchemy.com", + "cctpDomain": 14, + "oftEid": 30319, + "hypDomainId": 480, + "groups": ["production"] + }, + { + "chainId": 324, + "name": "zkSync", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.era.zksync.io", + "blockExplorer": "https://explorer.zksync.io", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 324, + "groups": ["production"] + }, + { + "chainId": 7777777, + "name": "Zora", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.zora.energy", + "blockExplorer": "https://zorascan.xyz", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 34268394551451, + "name": "Solana", + "family": "svm", + "nativeToken": "SOL", + "publicRpc": "https://api.mainnet-beta.solana.com", + "blockExplorer": "https://solscan.io", + "cctpDomain": 5, + "oftEid": 30168, + "hypDomainId": 1399811149, + "groups": ["production"] + }, + { + "chainId": 421614, + "name": "Arbitrum Sepolia", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://sepolia-rollup.arbitrum.io/rpc", + "blockExplorer": "https://sepolia.arbiscan.io", + "cctpDomain": 3, + "oftEid": 40231, + "hypDomainId": 421614, + "groups": ["test"] + }, + { + "chainId": 84532, + "name": "Base Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.base.org", + "blockExplorer": "https://sepolia.basescan.org", + "cctpDomain": 6, + "oftEid": 40245, + "hypDomainId": 84532, + "groups": ["test"] + }, + { + "chainId": 168587773, + "name": "Blast Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.blast.io", + "blockExplorer": "https://sepolia.blastscan.io", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 168587773, + "groups": ["test"] + }, + { + "chainId": 808813, + "name": "BOB Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://bob-sepolia.rpc.gobob.xyz", + "blockExplorer": "https://bob-sepolia.explorer.gobob.xyz", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["test"] + }, + { + "chainId": 998, + "name": "HyperEVM Testnet", + "family": "none", + "nativeToken": "HYPE", + "publicRpc": "https://rpc.hyperliquid-testnet.xyz/evm", + "blockExplorer": "https://testnet.purrsec.com/", + "cctpDomain": 19, + "oftEid": 40362, + "hypDomainId": 998, + "groups": ["test"] + }, + { + "chainId": 129399, + "name": "Tatara", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "", + "blockExplorer": "", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 37111, + "name": "Lens Sepolia", + "family": "zk_stack", + "nativeToken": "GRASS", + "publicRpc": "https://rpc.testnet.lens.dev", + "blockExplorer": "https://block-explorer.testnet.lens.dev", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["test"] + }, + { + "chainId": 4202, + "name": "Lisk Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.sepolia-api.lisk.com", + "blockExplorer": "https://sepolia-blockscout.lisk.com", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["test"] + }, + { + "chainId": 919, + "name": "Mode Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.mode.network", + "blockExplorer": "https://sepolia.explorer.mode.network", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 919, + "groups": ["test"] + }, + { + "chainId": 10143, + "name": "Monad Testnet", + "family": "none", + "nativeToken": "MON", + "publicRpc": "https://testnet-rpc.monad.xyz", + "blockExplorer": "https://testnet.monvision.io", + "cctpDomain": 15, + "oftEid": 40204, + "hypDomainId": 10143, + "groups": ["test"] + }, + { + "chainId": 11155420, + "name": "Optimism Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.optimism.io", + "blockExplorer": "https://sepolia-optimism.etherscan.io", + "cctpDomain": 2, + "oftEid": 40232, + "hypDomainId": 11155420, + "groups": ["test"] + }, + { + "chainId": 9746, + "name": "Plasma Testnet", + "family": "none", + "nativeToken": "XPL", + "publicRpc": "https://testnet-rpc.plasma.to/", + "blockExplorer": "https://testnet.plasmascan.to/", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["test"] + }, + { + "chainId": 80002, + "name": "Polygon Amoy", + "family": "none", + "nativeToken": "POL", + "publicRpc": "https://rpc-amoy.polygon.technology", + "blockExplorer": "https://amoy.polygonscan.com", + "cctpDomain": 7, + "oftEid": 40267, + "hypDomainId": 80002, + "groups": ["test"] + }, + { + "chainId": 534351, + "name": "Scroll Sepolia", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://sepolia-rpc.scroll.io", + "blockExplorer": "https://sepolia.scrollscan.com", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["test"] + }, + { + "chainId": 11155111, + "name": "Sepolia", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.drpc.org", + "blockExplorer": "https://sepolia.etherscan.io", + "cctpDomain": 0, + "oftEid": 40161, + "hypDomainId": 11155111, + "groups": ["test"] + }, + { + "chainId": 1301, + "name": "Unichain Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.unichain.org", + "blockExplorer": "https://sepolia.uniscan.xyz", + "cctpDomain": 10, + "oftEid": 40333, + "hypDomainId": 1301, + "groups": ["test"] + }, + { + "chainId": 300, + "name": "zkSync Sepolia", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.era.zksync.dev", + "blockExplorer": "https://sepolia-era.zksync.network", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 300, + "groups": ["test"] + }, + { + "chainId": 133268194659241, + "name": "Solana Devnet", + "family": "svm", + "nativeToken": "SOL", + "publicRpc": "https://api.devnet.solana.com", + "blockExplorer": "https://explorer.solana.com/?cluster=devnet", + "cctpDomain": 5, + "oftEid": 40168, + "hypDomainId": 1399811151, + "groups": ["test"] + } + ], + "tokens": [ + { + "name": "Across Protocol Token", + "symbol": "ACX", + "decimals": 18, + "coingeckoId": "across-protocol", + "addresses": [ + { + "chainId": 1, + "address": "0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F" + }, + { + "chainId": 10, + "address": "0xFf733b2A3557a7ed6697007ab5D11B79FdD1b76B" + }, + { + "chainId": 137, + "address": "0xF328b73B6c685831F238c30a23Fc19140CB4D8FC" + }, + { + "chainId": 288, + "address": "0x96821b258955587069F680729cD77369C0892B40" + }, + { + "chainId": 42161, + "address": "0x53691596d1BCe8CEa565b84d4915e69e03d9C99d" + }, + { + "chainId": 11155111, + "address": "0x49fCaC04AE71dbD074304Fb12071bD771e0E927A" + } + ] + }, + { + "name": "Arbitrum", + "symbol": "ARB", + "decimals": 18, + "coingeckoId": "arbitrum", + "addresses": [ + { + "chainId": 1, + "address": "0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1" + }, + { + "chainId": 42161, + "address": "0x912CE59144191C1204E64559FE8253a0e49E6548" + } + ] + }, + { + "name": "Aleph Zero", + "symbol": "AZERO", + "decimals": 18, + "coingeckoId": "aleph-zero", + "addresses": [ + { + "chainId": 1, + "address": "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe" + }, + { + "chainId": 41455, + "address": "0xb7Da55D7040ef9C887e20374D76A88F93A59119E" + } + ] + }, + { + "name": "Badger", + "symbol": "BADGER", + "decimals": 18, + "coingeckoId": "badger-dao", + "addresses": [ + { + "chainId": 1, + "address": "0x3472A5A71965499acd81997a54BBA8D852C6E53d" + }, + { + "chainId": 137, + "address": "0x1FcbE5937B0cc2adf69772D228fA4205aCF4D9b2" + }, + { + "chainId": 42161, + "address": "0xBfa641051Ba0a0Ad1b0AcF549a89536A0D76472E" + } + ] + }, + { + "name": "Balancer", + "symbol": "BAL", + "decimals": 18, + "coingeckoId": "balancer", + "addresses": [ + { + "chainId": 1, + "address": "0xba100000625a3754423978a60c9317c58a424e3D" + }, + { + "chainId": 10, + "address": "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921" + }, + { + "chainId": 137, + "address": "0x9a71012B13CA4d3D0Cdc72A177DF3ef03b0E76A3" + }, + { + "chainId": 8453, + "address": "0x4158734D47Fc9692176B5085E0F52ee0Da5d47F1" + }, + { + "chainId": 42161, + "address": "0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8" + }, + { + "chainId": 59144, + "address": "0x660edb0A46c3f69be9eFF5446318593b9469F9e2" + } + ] + }, + { + "name": "BNB", + "symbol": "BNB", + "decimals": 18, + "coingeckoId": "binancecoin", + "addresses": [ + { + "chainId": 1, + "address": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52" + }, + { + "chainId": 56, + "address": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c" + } + ] + }, + { + "name": "Boba", + "symbol": "BOBA", + "decimals": 18, + "coingeckoId": "boba-network", + "addresses": [ + { + "chainId": 1, + "address": "0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc" + }, + { + "chainId": 288, + "address": "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7" + } + ] + }, + { + "name": "PancakeSwap Token", + "symbol": "CAKE", + "decimals": 18, + "coingeckoId": "pancakeswap-token", + "addresses": [ + { + "chainId": 1, + "address": "0x152649eA73beAb28c5b49B26eb48f7EAD6d4c898" + }, + { + "chainId": 56, + "address": "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82" + } + ] + }, + { + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "coingeckoId": "dai", + "addresses": [ + { + "chainId": 1, + "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F" + }, + { + "chainId": 10, + "address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" + }, + { + "chainId": 137, + "address": "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063" + }, + { + "chainId": 288, + "address": "0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35" + }, + { + "chainId": 324, + "address": "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656" + }, + { + "chainId": 8453, + "address": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb" + }, + { + "chainId": 42161, + "address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" + }, + { + "chainId": 59144, + "address": "0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5" + } + ] + }, + { + "name": "Ether", + "symbol": "ETH", + "decimals": 18, + "coingeckoId": "ethereum", + "addresses": [ + { + "chainId": 1, + "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "chainId": 10, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 56, + "address": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8" + }, + { + "chainId": 130, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 137, + "address": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619" + }, + { + "chainId": 232, + "address": "0xE5ecd226b3032910CEaa43ba92EE8232f8237553" + }, + { + "chainId": 288, + "address": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000" + }, + { + "chainId": 300, + "address": "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD" + }, + { + "chainId": 324, + "address": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91" + }, + { + "chainId": 480, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 690, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 919, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1135, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1301, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1868, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 4202, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 4326, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 8453, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 9745, + "address": "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB" + }, + { + "chainId": 34443, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 37111, + "address": "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16" + }, + { + "chainId": 41455, + "address": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3" + }, + { + "chainId": 42161, + "address": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" + }, + { + "chainId": 57073, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 59144, + "address": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f" + }, + { + "chainId": 60808, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 80002, + "address": "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E" + }, + { + "chainId": 81457, + "address": "0x4300000000000000000000000000000000000004" + }, + { + "chainId": 84532, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 421614, + "address": "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73" + }, + { + "chainId": 534351, + "address": "0x5300000000000000000000000000000000000004" + }, + { + "chainId": 534352, + "address": "0x5300000000000000000000000000000000000004" + }, + { + "chainId": 763373, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 808813, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 7777777, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 11155111, + "address": "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14" + }, + { + "chainId": 11155420, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 168587773, + "address": "0x4200000000000000000000000000000000000023" + } + ] + }, + { + "name": "Renzo Restaked ETH", + "symbol": "ezETH", + "decimals": 18, + "coingeckoId": "renzo-restaked-eth", + "addresses": [ + { + "chainId": 1, + "address": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110" + }, + { + "chainId": 10, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 56, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 130, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 480, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 8453, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 34443, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 42161, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 59144, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 81457, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + } + ] + }, + { + "name": "Gho Token", + "symbol": "GHO", + "decimals": 18, + "coingeckoId": "gho", + "addresses": [ + { + "chainId": 1, + "address": "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f" + }, + { + "chainId": 232, + "address": "0x000000000000000000000000000000000000800A" + }, + { + "chainId": 84532, + "address": "0x7CFa3f3d1cded0Da930881c609D4Dbf0012c14Bb" + }, + { + "chainId": 421614, + "address": "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810" + }, + { + "chainId": 11155111, + "address": "0xc4bF5CbDaBE595361438F8c6a187bDc330539c60" + }, + { + "chainId": 11155420, + "address": "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810" + } + ] + }, + { + "name": "Grass", + "symbol": "GRASS", + "decimals": 18, + "coingeckoId": "gho", + "addresses": [ + { + "chainId": 37111, + "address": "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8" + }, + { + "chainId": 11155111, + "address": "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df" + } + ] + }, + { + "name": "Hyperliquid", + "symbol": "HYPE", + "decimals": 18, + "coingeckoId": "hyperliquid", + "addresses": [ + { + "chainId": 998, + "address": "0x5555555555555555555555555555555555555555" + }, + { + "chainId": 999, + "address": "0x5555555555555555555555555555555555555555" + } + ] + }, + { + "name": "Wrapped Hyperliquid", + "symbol": "WHYPE", + "decimals": 18, + "coingeckoId": "hyperliquid", + "addresses": [ + { + "chainId": 998, + "address": "0x5555555555555555555555555555555555555555" + }, + { + "chainId": 999, + "address": "0x5555555555555555555555555555555555555555" + } + ] + }, + { + "name": "Lisk", + "symbol": "LSK", + "decimals": 18, + "coingeckoId": "lisk", + "addresses": [ + { + "chainId": 1, + "address": "0x6033F7f88332B8db6ad452B7C6D5bB643990aE3f" + }, + { + "chainId": 1135, + "address": "0xac485391EB2d7D88253a7F1eF18C37f4242D1A24" + } + ] + }, + { + "name": "Matic", + "symbol": "MATIC", + "decimals": 18, + "coingeckoId": "polygon-ecosystem-token", + "addresses": [ + { + "chainId": 1, + "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" + }, + { + "chainId": 80002, + "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" + }, + { + "chainId": 11155111, + "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" + } + ] + }, + { + "name": "Monad", + "symbol": "MON", + "decimals": 18, + "coingeckoId": "monad", + "addresses": [ + { + "chainId": 143, + "address": "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A" + }, + { + "chainId": 10143, + "address": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701" + } + ] + }, + { + "name": "Optimism", + "symbol": "OP", + "decimals": 18, + "coingeckoId": "optimism", + "addresses": [ + { + "chainId": 10, + "address": "0x4200000000000000000000000000000000000042" + } + ] + }, + { + "name": "Polygon Ecosystem Token", + "symbol": "POL", + "decimals": 18, + "coingeckoId": "polygon-ecosystem-token", + "addresses": [ + { + "chainId": 1, + "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" + }, + { + "chainId": 80002, + "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" + }, + { + "chainId": 11155111, + "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" + } + ] + }, + { + "name": "PoolTogether", + "symbol": "POOL", + "decimals": 18, + "coingeckoId": "pooltogether", + "addresses": [ + { + "chainId": 1, + "address": "0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e" + }, + { + "chainId": 10, + "address": "0x395Ae52bB17aef68C2888d941736A71dC6d4e125" + }, + { + "chainId": 137, + "address": "0x25788a1a171ec66Da6502f9975a15B609fF54CF6" + }, + { + "chainId": 480, + "address": "0x7077C71B4AF70737a08287E279B717Dcf64fdC57" + }, + { + "chainId": 8453, + "address": "0xd652C5425aea2Afd5fb142e120FeCf79e18fafc3" + }, + { + "chainId": 42161, + "address": "0xCF934E2402A5e072928a39a956964eb8F2B5B79C" + }, + { + "chainId": 534352, + "address": "0xF9Af83FC41e0cc2af2fba93644D542Df6eA0F2b7" + } + ] + }, + { + "name": "pathUSD", + "symbol": "pathUSD", + "decimals": 6, + "coingeckoId": "pathusd", + "addresses": [ + { + "chainId": 4217, + "address": "0x20C0000000000000000000000000000000000000" + } + ] + }, + { + "name": "Synthetix", + "symbol": "SNX", + "decimals": 18, + "coingeckoId": "havven", + "addresses": [ + { + "chainId": 1, + "address": "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F" + }, + { + "chainId": 10, + "address": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4" + } + ] + }, + { + "name": "Solana", + "symbol": "SOL", + "decimals": 9, + "coingeckoId": "solana", + "addresses": [ + { + "chainId": 34268394551451, + "address": "So11111111111111111111111111111111111111112" + }, + { + "chainId": 133268194659241, + "address": "So11111111111111111111111111111111111111112" + } + ] + }, + { + "name": "UMA Voting Token", + "symbol": "UMA", + "decimals": 18, + "coingeckoId": "uma", + "addresses": [ + { + "chainId": 1, + "address": "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828" + }, + { + "chainId": 10, + "address": "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea" + }, + { + "chainId": 137, + "address": "0x3066818837c5e6eD6601bd5a91B0762877A6B731" + }, + { + "chainId": 288, + "address": "0x780f33Ad21314d9A1Ffb6867Fe53d48a76Ec0D16" + }, + { + "chainId": 42161, + "address": "0xd693Ec944A85eeca4247eC1c3b130DCa9B0C3b22" + } + ] + }, + { + "name": "USDB", + "symbol": "USDB", + "decimals": 18, + "coingeckoId": "usdb", + "addresses": [ + { + "chainId": 1, + "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F" + }, + { + "chainId": 81457, + "address": "0x4300000000000000000000000000000000000003" + } + ] + }, + { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "coingeckoId": "usd-coin", + "addresses": [ + { + "chainId": 1, + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "chainId": 10, + "address": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85" + }, + { + "chainId": 130, + "address": "0x078D782b760474a361dDA0AF3839290b0EF57AD6" + }, + { + "chainId": 137, + "address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" + }, + { + "chainId": 143, + "address": "0x754704Bc059F8C67012fEd69BC8A327a5aafb603" + }, + { + "chainId": 232, + "address": "0x88F08E304EC4f90D644Cec3Fb69b8aD414acf884" + }, + { + "chainId": 480, + "address": "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1" + }, + { + "chainId": 998, + "address": "0x2B3370eE501B4a559b57D449569354196457D8Ab" + }, + { + "chainId": 999, + "address": "0xb88339CB7199b77E23DB6E890353E22632Ba630f" + }, + { + "chainId": 1301, + "address": "0x31d0220469e10c4E71834a79b1f276d740d3768F" + }, + { + "chainId": 8453, + "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" + }, + { + "chainId": 10143, + "address": "0xf817257fed379853cDe0fa4F97AB987181B1E5Ea" + }, + { + "chainId": 42161, + "address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" + }, + { + "chainId": 57073, + "address": "0x2D270e6886d130D724215A266106e6832161EAEd" + }, + { + "chainId": 59144, + "address": "0x176211869cA2b568f2A7D4EE941E073a821EE1ff" + }, + { + "chainId": 80002, + "address": "0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582" + }, + { + "chainId": 84532, + "address": "0x036CbD53842c5426634e7929541eC2318f3dCF7e" + }, + { + "chainId": 421614, + "address": "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d" + }, + { + "chainId": 534352, + "address": "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4" + }, + { + "chainId": 11155111, + "address": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" + }, + { + "chainId": 11155420, + "address": "0x5fd84259d66Cd46123540766Be93DFE6D43130D7" + }, + { + "chainId": 34268394551451, + "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + }, + { + "chainId": 133268194659241, + "address": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU" + } + ] + }, + { + "name": "USD Coin (bridged)", + "symbol": "USDC.e", + "decimals": 6, + "coingeckoId": "usd-coin-ethereum-bridged", + "addresses": [ + { + "chainId": 1, + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "chainId": 10, + "address": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607" + }, + { + "chainId": 137, + "address": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" + }, + { + "chainId": 288, + "address": "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc" + }, + { + "chainId": 324, + "address": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" + }, + { + "chainId": 1135, + "address": "0xF242275d3a6527d877f2c927a82D9b057609cc71" + }, + { + "chainId": 1868, + "address": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369" + }, + { + "chainId": 4217, + "address": "0x20C000000000000000000000b9537d11c60E8b50" + }, + { + "chainId": 34443, + "address": "0xd988097fb8612cc24eeC14542bC03424c656005f" + }, + { + "chainId": 41455, + "address": "0x18d25B4e18165c97e1285212e5d1f80eDD6d3Aa7" + }, + { + "chainId": 42161, + "address": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8" + }, + { + "chainId": 11155420, + "address": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8" + } + ] + }, + { + "name": "USD Coin (bridged)", + "symbol": "USDbC", + "decimals": 6, + "coingeckoId": "bridged-usd-coin-base", + "addresses": [ + { + "chainId": 1, + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "chainId": 8453, + "address": "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA" + }, + { + "chainId": 84532, + "address": "0xE634Ec56B73779eCFfa78109a653FA0aE33D243f" + } + ] + }, + { + "name": "USD Coin (bridged)", + "symbol": "USDzC", + "decimals": 6, + "coingeckoId": "usd-coin-ethereum-bridged", + "addresses": [ + { + "chainId": 1, + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "chainId": 7777777, + "address": "0xCccCCccc7021b32EBb4e8C08314bD62F7c653EC4" + } + ] + }, + { + "name": "USD Coin", + "symbol": "USDC-BNB", + "decimals": 18, + "coingeckoId": "usd-coin", + "l1TokenDecimals": 6, + "addresses": [ + { + "chainId": 1, + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "chainId": 56, + "address": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d" + } + ] + }, + { + "name": "Hyperliquid USD", + "symbol": "USDH", + "decimals": 6, + "coingeckoId": "usdh-2", + "addresses": [ + { + "chainId": 998, + "address": "0x111111a1a0667d36bD57c0A9f569b98057111111" + }, + { + "chainId": 999, + "address": "0x111111a1a0667d36bD57c0A9f569b98057111111" + } + ] + }, + { + "name": "Hyperliquid USD", + "symbol": "USDH-SPOT", + "decimals": 8, + "coingeckoId": "usdh-2", + "addresses": [ + { + "chainId": 1337, + "address": "0x2000000000000000000000000000000000000168" + } + ] + }, + { + "name": "MegaUSD", + "symbol": "USDM", + "decimals": 18, + "coingeckoId": "megausd", + "addresses": [ + { + "chainId": 1, + "address": "0xEc2AF1C8B110a61fD9C3Fa6a554a031Ca9943926" + }, + { + "chainId": 4326, + "address": "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7" + } + ] + }, + { + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6, + "coingeckoId": "tether", + "addresses": [ + { + "chainId": 1, + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7" + }, + { + "chainId": 10, + "address": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58" + }, + { + "chainId": 130, + "address": "0x9151434b16b9763660705744891fA906F660EcC5" + }, + { + "chainId": 137, + "address": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F" + }, + { + "chainId": 143, + "address": "0xe7cd86e13AC4309349F30B3435a9d337750fC82D" + }, + { + "chainId": 288, + "address": "0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d" + }, + { + "chainId": 324, + "address": "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C" + }, + { + "chainId": 999, + "address": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" + }, + { + "chainId": 1135, + "address": "0x05D032ac25d322df992303dCa074EE7392C117b9" + }, + { + "chainId": 4326, + "address": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" + }, + { + "chainId": 8453, + "address": "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2" + }, + { + "chainId": 9745, + "address": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" + }, + { + "chainId": 9746, + "address": "0x12adA0e58293017eA3e5e6c1C0976F0f162A411b" + }, + { + "chainId": 10143, + "address": "0x88b8E2161DEDC77EF4ab7585569D2415a1C1055D" + }, + { + "chainId": 34443, + "address": "0xf0F161fDA2712DB8b566946122a5af183995e2eD" + }, + { + "chainId": 41455, + "address": "0xD648529D4803d3467bA8850577BEd4e4b8Ae583C" + }, + { + "chainId": 42161, + "address": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9" + }, + { + "chainId": 57073, + "address": "0x0200C29006150606B650577BBE7B6248F58470c1" + }, + { + "chainId": 59144, + "address": "0xA219439258ca9da29E9Cc4cE5596924745e12B93" + }, + { + "chainId": 534352, + "address": "0xf55BEC9cafDbE8730f096Aa55dad6D22d44099Df" + }, + { + "chainId": 11155111, + "address": "0x7169D38820dfd117C3FA1f22a697dBA58d90BA06" + } + ] + }, + { + "name": "Tether USD", + "symbol": "USDT-BNB", + "decimals": 18, + "coingeckoId": "tether", + "l1TokenDecimals": 6, + "addresses": [ + { + "chainId": 1, + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7" + }, + { + "chainId": 56, + "address": "0x55d398326f99059fF775485246999027B3197955" + } + ] + }, + { + "name": "Tether USD", + "symbol": "USDT-SPOT", + "decimals": 8, + "coingeckoId": "tether", + "l1TokenDecimals": 6, + "addresses": [ + { + "chainId": 1, + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7" + }, + { + "chainId": 1337, + "address": "0x200000000000000000000000000000000000010C" + } + ] + }, + { + "name": "Velora", + "symbol": "VLR", + "decimals": 18, + "coingeckoId": "velora", + "addresses": [ + { + "chainId": 1, + "address": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74" + }, + { + "chainId": 10, + "address": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74" + }, + { + "chainId": 8453, + "address": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74" + } + ] + }, + { + "name": "Plasma", + "symbol": "XPL", + "decimals": 18, + "coingeckoId": "plasma", + "addresses": [ + { + "chainId": 9745, + "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" + }, + { + "chainId": 9746, + "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" + } + ] + }, + { + "name": "Wrapped AZERO", + "symbol": "WAZERO", + "decimals": 18, + "coingeckoId": "aleph-zero", + "addresses": [ + { + "chainId": 1, + "address": "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe" + }, + { + "chainId": 41455, + "address": "0xb7Da55D7040ef9C887e20374D76A88F93A59119E" + } + ] + }, + { + "name": "Wrapped BNB", + "symbol": "WBNB", + "decimals": 18, + "coingeckoId": "wbnb", + "addresses": [ + { + "chainId": 1, + "address": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52" + }, + { + "chainId": 56, + "address": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c" + } + ] + }, + { + "name": "Wrapped Bitcoin", + "symbol": "WBTC", + "decimals": 8, + "coingeckoId": "wrapped-bitcoin", + "addresses": [ + { + "chainId": 1, + "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" + }, + { + "chainId": 10, + "address": "0x68f180fcCe6836688e9084f035309E29Bf0A2095" + }, + { + "chainId": 56, + "address": "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c" + }, + { + "chainId": 130, + "address": "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c" + }, + { + "chainId": 137, + "address": "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6" + }, + { + "chainId": 143, + "address": "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c" + }, + { + "chainId": 288, + "address": "0xdc0486f8bf31DF57a952bcd3c1d3e166e3d9eC8b" + }, + { + "chainId": 324, + "address": "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011" + }, + { + "chainId": 480, + "address": "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3" + }, + { + "chainId": 1135, + "address": "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3" + }, + { + "chainId": 10143, + "address": "0xcf5a6076cfa32686c0Df13aBaDa2b40dec133F1d" + }, + { + "chainId": 34443, + "address": "0xcDd475325D6F564d27247D1DddBb0DAc6fA0a5CF" + }, + { + "chainId": 42161, + "address": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f" + }, + { + "chainId": 59144, + "address": "0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4" + }, + { + "chainId": 81457, + "address": "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692" + }, + { + "chainId": 534352, + "address": "0x3C1BCa5a656e69edCD0D4E36BEbb3FcDAcA60Cf1" + }, + { + "chainId": 808813, + "address": "0xAdCE1AB74C8e64c155953A8BdE37cBB06Cf7086D" + }, + { + "chainId": 11155111, + "address": "0x9D15Db83680572C9a48826d51b733ea3B0957De3" + } + ] + }, + { + "name": "Wrapped Ether", + "symbol": "WETH", + "decimals": 18, + "coingeckoId": "weth", + "addresses": [ + { + "chainId": 1, + "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "chainId": 10, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 56, + "address": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8" + }, + { + "chainId": 130, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 137, + "address": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619" + }, + { + "chainId": 232, + "address": "0xE5ecd226b3032910CEaa43ba92EE8232f8237553" + }, + { + "chainId": 288, + "address": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000" + }, + { + "chainId": 300, + "address": "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD" + }, + { + "chainId": 324, + "address": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91" + }, + { + "chainId": 480, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 690, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 919, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1135, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1301, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1868, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 4202, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 4326, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 8453, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 9745, + "address": "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB" + }, + { + "chainId": 34443, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 37111, + "address": "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16" + }, + { + "chainId": 41455, + "address": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3" + }, + { + "chainId": 42161, + "address": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" + }, + { + "chainId": 57073, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 59144, + "address": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f" + }, + { + "chainId": 80002, + "address": "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E" + }, + { + "chainId": 81457, + "address": "0x4300000000000000000000000000000000000004" + }, + { + "chainId": 84532, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 421614, + "address": "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73" + }, + { + "chainId": 534351, + "address": "0x5300000000000000000000000000000000000004" + }, + { + "chainId": 534352, + "address": "0x5300000000000000000000000000000000000004" + }, + { + "chainId": 763373, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 808813, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 7777777, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 11155111, + "address": "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14" + }, + { + "chainId": 11155420, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 168587773, + "address": "0x4200000000000000000000000000000000000023" + } + ] + }, + { + "name": "Wrapped GHO Token", + "symbol": "WGHO", + "decimals": 18, + "coingeckoId": "gho", + "addresses": [ + { + "chainId": 1, + "address": "0x1ff1dC3cB9eeDbC6Eb2d99C03b30A05cA625fB5a" + }, + { + "chainId": 232, + "address": "0x6bDc36E20D267Ff0dd6097799f82e78907105e2F" + } + ] + }, + { + "name": "Wrapped Grass", + "symbol": "WGRASS", + "decimals": 18, + "coingeckoId": "gho", + "addresses": [ + { + "chainId": 37111, + "address": "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8" + }, + { + "chainId": 11155111, + "address": "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df" + } + ] + }, + { + "name": "Worldcoin", + "symbol": "WLD", + "decimals": 18, + "coingeckoId": "worldcoin-wld", + "addresses": [ + { + "chainId": 1, + "address": "0x163f8C2467924be0ae7B5347228CABF260318753" + }, + { + "chainId": 10, + "address": "0xdC6fF44d5d932Cbd77B52E5612Ba0529DC6226F1" + }, + { + "chainId": 480, + "address": "0x2cFc85d8E48F8EAB294be644d9E25C3030863003" + } + ] + }, + { + "name": "Matic", + "symbol": "WMATIC", + "decimals": 18, + "coingeckoId": "wmatic", + "addresses": [ + { + "chainId": 1, + "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" + }, + { + "chainId": 137, + "address": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270" + }, + { + "chainId": 80002, + "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" + }, + { + "chainId": 11155111, + "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" + } + ] + }, + { + "name": "Wrapped Monad", + "symbol": "WMON", + "decimals": 18, + "coingeckoId": "monad", + "addresses": [ + { + "chainId": 143, + "address": "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A" + }, + { + "chainId": 10143, + "address": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701" + } + ] + }, + { + "name": "Wrapped Polygon Ecosystem Token", + "symbol": "WPOL", + "decimals": 18, + "coingeckoId": "wmatic", + "addresses": [ + { + "chainId": 1, + "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" + }, + { + "chainId": 137, + "address": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270" + }, + { + "chainId": 80002, + "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" + }, + { + "chainId": 11155111, + "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" + } + ] + }, + { + "name": "Wrapped SOL", + "symbol": "WSOL", + "decimals": 9, + "coingeckoId": "wrapped-solana", + "addresses": [ + { + "chainId": 34268394551451, + "address": "So11111111111111111111111111111111111111112" + }, + { + "chainId": 133268194659241, + "address": "So11111111111111111111111111111111111111112" + } + ] + }, + { + "name": "Wrapped Plasma", + "symbol": "WXPL", + "decimals": 18, + "coingeckoId": "plasma", + "addresses": [ + { + "chainId": 9745, + "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" + }, + { + "chainId": 9746, + "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" + } + ] + }, + { + "name": "XYZ Token", + "symbol": "XYZ", + "decimals": 18, + "coingeckoId": "xyz", + "addresses": [ + { + "chainId": 84532, + "address": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9" + }, + { + "chainId": 11155111, + "address": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9" + }, + { + "chainId": 11155420, + "address": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9" + } + ] + } + ], + "tokenEquivalences": [ + { + "symbol": "pathUSD", + "targetSymbol": "USDC" + }, + { + "symbol": "USDH", + "targetSymbol": "USDC" + }, + { + "symbol": "USDC.e", + "targetSymbol": "USDC" + }, + { + "symbol": "USDbC", + "targetSymbol": "USDC" + }, + { + "symbol": "USDzC", + "targetSymbol": "USDC" + }, + { + "symbol": "USDB", + "targetSymbol": "DAI" + }, + { + "symbol": "USDC-BNB", + "targetSymbol": "USDC" + }, + { + "symbol": "USDT-BNB", + "targetSymbol": "USDT" + }, + { + "symbol": "USDT-SPOT", + "targetSymbol": "USDT" + }, + { + "symbol": "LGHO", + "targetSymbol": "WGHO" + }, + { + "symbol": "ETH", + "targetSymbol": "WETH" + }, + { + "symbol": "BNB", + "targetSymbol": "WBNB" + }, + { + "symbol": "HYPE", + "targetSymbol": "WHYPE" + }, + { + "symbol": "XPL", + "targetSymbol": "WXPL" + } + ] +} diff --git a/package.json b/package.json index 9f3e04a..04a64d0 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Export commonly re-used values for Across repositories", "repository": { "type": "git", - "url": "https://github.com/across-protocol/constants" + "url": "https://github.com/across-protocol/json-constants" }, "author": "hello@umaproject.org", "license": "AGPL-3.0-only", @@ -15,7 +15,9 @@ }, "type": "module", "files": [ - "/dist/**/*" + "/dist/**/*", + "/data/**/*", + "/schema/**/*" ], "scripts": { "lint": "yarn eslint && yarn prettier --list-different", @@ -23,15 +25,23 @@ "prettier": "prettier .", "eslint": "eslint .", "prepare": "yarn build", - "build": "yarn run clean && yarn run build:cjs && yarn run build:esm && yarn run build:types", + "build": "yarn run clean && yarn run validate:canonical && yarn run generate && yarn run build:cjs && yarn run build:esm && yarn run build:types && yarn run format:generated", + "validate:canonical": "node scripts/validate-canonical.mjs", + "generate": "yarn run generate:canonical-types && yarn run sync:canonical-json && yarn run generate:legacy", + "generate:canonical-types": "json2ts -i schema/constants.v1.schema.json -o src/generated/canonical-types.ts --unknownAny=false", + "sync:canonical-json": "node scripts/sync-canonical-json.mjs", + "generate:legacy": "node scripts/generate-legacy.mjs", "build:cjs": "tsc --project tsconfig.json --module commonjs --outDir ./dist/cjs --removeComments --verbatimModuleSyntax false && echo > ./dist/cjs/package.json '{\"type\":\"commonjs\"}'", "build:esm": "tsc --project tsconfig.json --module es2015 --outDir ./dist/esm && echo > ./dist/esm/package.json '{\"type\":\"module\",\"sideEffects\":false}'", "build:types": "tsc --project tsconfig.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap", - "clean": "rm -rf ./dist" + "verify:legacy-equivalence": "node scripts/verify-legacy-equivalence.mjs", + "format:generated": "prettier --write data/constants.v1.json src/generated/canonical-types.ts src/generated/constants.v1.json src/networks.ts src/tokens.ts", + "clean": "rm -rf ./dist ./src/generated ./src/networks.ts ./src/tokens.ts" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^6.7.3", "@typescript-eslint/parser": "^6.7.3", + "ajv": "^8.18.0", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", "eslint-config-standard": "^17.1.0", @@ -40,8 +50,10 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^6.1.1", + "json-schema-to-typescript": "^15.0.4", "prettier": "^3.0.3", - "typescript": "^5.2.2" + "typescript": "^5.2.2", + "upstream-legacy-constants": "npm:@across-protocol/constants@3.1.102" }, "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", @@ -53,6 +65,13 @@ "import": "./dist/esm/index.js", "types": "./dist/types/index.d.ts" }, + "./canonical": { + "require": "./dist/cjs/canonical.js", + "import": "./dist/esm/canonical.js", + "types": "./dist/types/canonical.d.ts" + }, + "./data/*": "./data/*", + "./schema/*": "./schema/*", "./dist/cjs/*": { "require": "./dist/cjs/*.js", "import": "./dist/esm/*.js" diff --git a/schema/constants.v1.schema.json b/schema/constants.v1.schema.json new file mode 100644 index 0000000..fadbf97 --- /dev/null +++ b/schema/constants.v1.schema.json @@ -0,0 +1,187 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/across-protocol/json-constants/schema/constants.v1.schema.json", + "title": "Across Canonical Constants Schema", + "type": "object", + "additionalProperties": false, + "required": ["schemaVersion", "chains", "networks", "tokens", "tokenEquivalences"], + "properties": { + "schemaVersion": { + "const": 1 + }, + "chains": { + "type": "array", + "items": { + "$ref": "#/$defs/chain" + } + }, + "networks": { + "type": "array", + "items": { + "$ref": "#/$defs/network" + } + }, + "tokens": { + "type": "array", + "items": { + "$ref": "#/$defs/token" + } + }, + "tokenEquivalences": { + "type": "array", + "items": { + "$ref": "#/$defs/tokenEquivalence" + } + } + }, + "$defs": { + "chainGroup": { + "type": "string", + "enum": ["mainnet", "testnet", "testnet_sepolia"] + }, + "networkGroup": { + "type": "string", + "enum": ["production", "test"] + }, + "chainFamily": { + "type": "string", + "enum": ["none", "op_stack", "orbit", "zk_stack", "svm"] + }, + "nullableInteger": { + "type": ["integer", "null"] + }, + "chain": { + "type": "object", + "additionalProperties": false, + "required": ["key", "chainId", "groups"], + "properties": { + "key": { + "type": "string", + "minLength": 1 + }, + "chainId": { + "type": "integer" + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/$defs/chainGroup" + } + } + } + }, + "network": { + "type": "object", + "additionalProperties": false, + "required": [ + "chainId", + "name", + "family", + "nativeToken", + "publicRpc", + "blockExplorer", + "cctpDomain", + "oftEid", + "hypDomainId", + "groups" + ], + "properties": { + "chainId": { + "type": "integer" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "family": { + "$ref": "#/$defs/chainFamily" + }, + "nativeToken": { + "type": "string", + "minLength": 1 + }, + "publicRpc": { + "type": "string" + }, + "blockExplorer": { + "type": "string" + }, + "cctpDomain": { + "$ref": "#/$defs/nullableInteger" + }, + "oftEid": { + "$ref": "#/$defs/nullableInteger" + }, + "hypDomainId": { + "$ref": "#/$defs/nullableInteger" + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/$defs/networkGroup" + } + } + } + }, + "tokenAddress": { + "type": "object", + "additionalProperties": false, + "required": ["chainId", "address"], + "properties": { + "chainId": { + "type": "integer" + }, + "address": { + "type": "string", + "minLength": 1 + } + } + }, + "token": { + "type": "object", + "additionalProperties": false, + "required": ["name", "symbol", "decimals", "coingeckoId", "addresses"], + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "symbol": { + "type": "string", + "minLength": 1 + }, + "decimals": { + "type": "integer" + }, + "coingeckoId": { + "type": "string", + "minLength": 1 + }, + "l1TokenDecimals": { + "type": "integer" + }, + "addresses": { + "type": "array", + "items": { + "$ref": "#/$defs/tokenAddress" + } + } + } + }, + "tokenEquivalence": { + "type": "object", + "additionalProperties": false, + "required": ["symbol", "targetSymbol"], + "properties": { + "symbol": { + "type": "string", + "minLength": 1 + }, + "targetSymbol": { + "type": "string", + "minLength": 1 + } + } + } + } +} diff --git a/scripts/generate-legacy.mjs b/scripts/generate-legacy.mjs new file mode 100644 index 0000000..40750a3 --- /dev/null +++ b/scripts/generate-legacy.mjs @@ -0,0 +1,144 @@ +/* eslint-disable node/no-unsupported-features/es-builtins, node/no-unsupported-features/node-builtins */ + +import { readFileSync, writeFileSync } from "node:fs"; + +const canonical = JSON.parse(readFileSync(new URL("../data/constants.v1.json", import.meta.url), "utf8")); + +const LEGACY_CHAIN_FAMILIES = ["NONE", "OP_STACK", "ORBIT", "ZK_STACK", "SVM"]; + +const legacyFamilyByCanonical = { + none: "NONE", + op_stack: "OP_STACK", + orbit: "ORBIT", + zk_stack: "ZK_STACK", + svm: "SVM", +}; + +const familyIndexByLegacy = Object.fromEntries(LEGACY_CHAIN_FAMILIES.map((name, index) => [name, index])); +const chainsById = new Map(canonical.chains.map((chain) => [chain.chainId, chain])); + +const buildChainGroup = (group) => + Object.fromEntries( + canonical.chains.filter((chain) => chain.groups.includes(group)).map((chain) => [chain.key, chain.chainId]), + ); + +const buildOftMap = (group) => + Object.fromEntries( + canonical.networks + .filter((network) => network.groups.includes(group) && network.oftEid !== null) + .map((network) => [chainsById.get(network.chainId).key, network.oftEid]), + ); + +const buildNetworks = (group) => + Object.fromEntries( + canonical.networks + .filter((network) => network.groups.includes(group)) + .map((network) => [ + network.chainId, + { + name: network.name, + family: familyIndexByLegacy[legacyFamilyByCanonical[network.family]], + nativeToken: network.nativeToken, + publicRPC: network.publicRpc, + blockExplorer: network.blockExplorer, + cctpDomain: network.cctpDomain ?? -1, + oftEid: network.oftEid ?? -1, + hypDomainId: network.hypDomainId ?? -1, + }, + ]), + ); + +const legacy = { + TESTNET_SEPOLIA_CHAIN_IDs: buildChainGroup("testnet_sepolia"), + TESTNET_CHAIN_IDs: buildChainGroup("testnet"), + MAINNET_CHAIN_IDs: buildChainGroup("mainnet"), + CHAIN_IDs: Object.fromEntries(canonical.chains.map((chain) => [chain.key, chain.chainId])), + PRODUCTION_OFT_EIDs: buildOftMap("production"), + TESTNET_OFT_EIDs: buildOftMap("test"), + HYPERLANE_DOMAIN_ID_OVERRIDES: Object.fromEntries( + canonical.networks + .filter((network) => network.hypDomainId !== null && network.hypDomainId !== network.chainId) + .map((network) => [chainsById.get(network.chainId).key, network.hypDomainId]), + ), + PRODUCTION_NETWORKS: buildNetworks("production"), + TEST_NETWORKS: buildNetworks("test"), + TOKEN_SYMBOLS_MAP: Object.fromEntries( + canonical.tokens.map((token) => { + const legacyToken = { + name: token.name, + symbol: token.symbol, + decimals: token.decimals, + addresses: Object.fromEntries(token.addresses.map((address) => [address.chainId, address.address])), + coingeckoId: token.coingeckoId, + }; + + if (token.l1TokenDecimals !== undefined) { + legacyToken.l1TokenDecimals = token.l1TokenDecimals; + } + + return [token.symbol, legacyToken]; + }), + ), + TOKEN_EQUIVALENCE_REMAPPING: Object.fromEntries( + canonical.tokenEquivalences.map((equivalence) => [equivalence.symbol, equivalence.targetSymbol]), + ), +}; + +const tsLiteral = (value) => JSON.stringify(value, null, 2); + +const networksModule = `// This file is generated by scripts/generate-legacy.mjs. Do not edit by hand. +export const TESTNET_SEPOLIA_CHAIN_IDs = ${tsLiteral(legacy.TESTNET_SEPOLIA_CHAIN_IDs)}; + +export const TESTNET_CHAIN_IDs = ${tsLiteral(legacy.TESTNET_CHAIN_IDs)} as const; + +export const MAINNET_CHAIN_IDs = ${tsLiteral(legacy.MAINNET_CHAIN_IDs)}; + +export const CHAIN_IDs = ${tsLiteral(legacy.CHAIN_IDs)}; + +export enum ChainFamily { +${LEGACY_CHAIN_FAMILIES.map((family) => ` ${family},`).join("\n")} +} + +export interface PublicNetwork { + name: string; + family: ChainFamily; + nativeToken: string; + publicRPC: string; + blockExplorer: string; + cctpDomain: number; + oftEid: number; + hypDomainId: number; +} + +export const PRODUCTION_OFT_EIDs = ${tsLiteral(legacy.PRODUCTION_OFT_EIDs)}; + +export const TESTNET_OFT_EIDs = ${tsLiteral(legacy.TESTNET_OFT_EIDs)}; + +export const HYPERLANE_DOMAIN_ID_OVERRIDES = ${tsLiteral(legacy.HYPERLANE_DOMAIN_ID_OVERRIDES)}; + +export const CCTP_NO_DOMAIN = -1; +export const OFT_NO_EID = -1; +export const HYPERLANE_NO_DOMAIN_ID = -1; + +export const PRODUCTION_NETWORKS: { [chainId: number]: PublicNetwork } = ${tsLiteral(legacy.PRODUCTION_NETWORKS)}; + +export const TEST_NETWORKS: { [chainId: number]: PublicNetwork } = ${tsLiteral(legacy.TEST_NETWORKS)}; + +export const PUBLIC_NETWORKS = { + ...PRODUCTION_NETWORKS, + ...TEST_NETWORKS, +}; +`; + +const tokensModule = `// This file is generated by scripts/generate-legacy.mjs. Do not edit by hand. +export const TOKEN_SYMBOLS_MAP = ${tsLiteral(legacy.TOKEN_SYMBOLS_MAP)}; + +export const TOKEN_EQUIVALENCE_REMAPPING: { [symbol: string]: string } = ${tsLiteral( + legacy.TOKEN_EQUIVALENCE_REMAPPING, +)}; +`; + +writeFileSync(new URL("../src/networks.ts", import.meta.url), networksModule); +writeFileSync(new URL("../src/tokens.ts", import.meta.url), tokensModule); + +console.log("Generated src/networks.ts and src/tokens.ts from canonical data."); diff --git a/scripts/sync-canonical-json.mjs b/scripts/sync-canonical-json.mjs new file mode 100644 index 0000000..9a110e1 --- /dev/null +++ b/scripts/sync-canonical-json.mjs @@ -0,0 +1,11 @@ +/* eslint-disable node/no-unsupported-features/node-builtins */ + +import { copyFileSync, mkdirSync } from "node:fs"; + +mkdirSync(new URL("../src/generated", import.meta.url), { recursive: true }); +copyFileSync( + new URL("../data/constants.v1.json", import.meta.url), + new URL("../src/generated/constants.v1.json", import.meta.url), +); + +console.log("Copied data/constants.v1.json to src/generated/constants.v1.json"); diff --git a/scripts/validate-canonical.mjs b/scripts/validate-canonical.mjs new file mode 100644 index 0000000..0b7b19e --- /dev/null +++ b/scripts/validate-canonical.mjs @@ -0,0 +1,93 @@ +/* eslint-disable node/no-unsupported-features/node-builtins */ + +import { readFileSync } from "node:fs"; + +import Ajv2020 from "ajv/dist/2020.js"; + +const schema = JSON.parse(readFileSync(new URL("../schema/constants.v1.schema.json", import.meta.url), "utf8")); +const data = JSON.parse(readFileSync(new URL("../data/constants.v1.json", import.meta.url), "utf8")); + +const ajv = new Ajv2020({ + allErrors: true, + strict: true, +}); + +const validate = ajv.compile(schema); + +if (!validate(data)) { + console.error("Canonical schema validation failed:"); + for (const error of validate.errors ?? []) { + console.error(`- ${error.instancePath || "/"} ${error.message ?? "is invalid"}`); + } + throw new Error("Canonical schema validation failed."); +} + +const fail = (message) => { + throw new Error(message); +}; + +const ensureUnique = (values, label) => { + const seen = new Set(); + + for (const value of values) { + if (seen.has(value)) { + fail(`Canonical validation failed: duplicate ${label} ${JSON.stringify(value)}`); + } + seen.add(value); + } +}; + +ensureUnique( + data.chains.map((chain) => chain.key), + "chain key", +); +ensureUnique( + data.chains.map((chain) => chain.chainId), + "chainId", +); + +const chainIds = new Set(data.chains.map((chain) => chain.chainId)); + +ensureUnique( + data.networks.map((network) => network.chainId), + "network chainId", +); + +for (const network of data.networks) { + if (!chainIds.has(network.chainId)) { + fail(`Canonical validation failed: network references unknown chainId ${network.chainId}`); + } +} + +ensureUnique( + data.tokens.map((token) => token.symbol), + "token symbol", +); + +const tokenSymbols = new Set(data.tokens.map((token) => token.symbol)); + +for (const token of data.tokens) { + const addressChainIds = token.addresses.map((address) => address.chainId); + ensureUnique(addressChainIds, `token ${token.symbol} address chainId`); + + for (const address of token.addresses) { + if (!chainIds.has(address.chainId)) { + fail(`Canonical validation failed: token ${token.symbol} references unknown chainId ${address.chainId}`); + } + } +} + +ensureUnique( + data.tokenEquivalences.map((equivalence) => equivalence.symbol), + "token equivalence symbol", +); + +for (const equivalence of data.tokenEquivalences) { + if (!tokenSymbols.has(equivalence.targetSymbol)) { + fail( + `Canonical validation failed: token equivalence ${equivalence.symbol} targets unknown symbol ${equivalence.targetSymbol}`, + ); + } +} + +console.log("Canonical data validation passed."); diff --git a/scripts/verify-legacy-equivalence.mjs b/scripts/verify-legacy-equivalence.mjs new file mode 100644 index 0000000..1cc9ee5 --- /dev/null +++ b/scripts/verify-legacy-equivalence.mjs @@ -0,0 +1,32 @@ +import { createRequire } from "node:module"; +import { isDeepStrictEqual } from "node:util"; + +const require = createRequire(import.meta.url); + +const local = require("../dist/cjs/index.js"); +const upstream = require("upstream-legacy-constants"); + +const localKeys = Object.keys(local).sort(); +const upstreamKeys = Object.keys(upstream).sort(); + +if (!isDeepStrictEqual(localKeys, upstreamKeys)) { + console.error("Legacy equivalence failed: export keys differ."); + console.error("Local exports:", localKeys); + console.error("Upstream exports:", upstreamKeys); + throw new Error("Legacy equivalence failed: export keys differ."); +} + +const mismatches = []; + +for (const key of localKeys) { + if (!isDeepStrictEqual(local[key], upstream[key])) { + mismatches.push(key); + } +} + +if (mismatches.length > 0) { + console.error("Legacy equivalence failed for exports:", mismatches.join(", ")); + throw new Error(`Legacy equivalence failed for exports: ${mismatches.join(", ")}`); +} + +console.log("Legacy equivalence passed against upstream-legacy-constants."); diff --git a/src/canonical.ts b/src/canonical.ts new file mode 100644 index 0000000..0c9ae7a --- /dev/null +++ b/src/canonical.ts @@ -0,0 +1,27 @@ +import canonicalConstantsV1 from "./generated/constants.v1.json"; + +import type { + AcrossCanonicalConstantsSchema as CanonicalConstantsV1, + Chain as CanonicalChain, + ChainFamily as CanonicalChainFamily, + ChainGroup as CanonicalChainGroup, + Network as CanonicalNetwork, + NetworkGroup as CanonicalNetworkGroup, + Token as CanonicalToken, + TokenAddress as CanonicalTokenAddress, + TokenEquivalence as CanonicalTokenEquivalence, +} from "./generated/canonical-types"; + +export type { + CanonicalChain, + CanonicalChainFamily, + CanonicalChainGroup, + CanonicalConstantsV1, + CanonicalNetwork, + CanonicalNetworkGroup, + CanonicalToken, + CanonicalTokenAddress, + CanonicalTokenEquivalence, +}; + +export const CANONICAL_CONSTANTS_V1 = canonicalConstantsV1 as CanonicalConstantsV1; diff --git a/src/generated/canonical-types.ts b/src/generated/canonical-types.ts new file mode 100644 index 0000000..e22d948 --- /dev/null +++ b/src/generated/canonical-types.ts @@ -0,0 +1,52 @@ +/* eslint-disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export type ChainGroup = "mainnet" | "testnet" | "testnet_sepolia"; +export type ChainFamily = "none" | "op_stack" | "orbit" | "zk_stack" | "svm"; +export type NullableInteger = number | null; +export type NetworkGroup = "production" | "test"; + +export interface AcrossCanonicalConstantsSchema { + schemaVersion: 1; + chains: Chain[]; + networks: Network[]; + tokens: Token[]; + tokenEquivalences: TokenEquivalence[]; +} +export interface Chain { + key: string; + chainId: number; + groups: ChainGroup[]; +} +export interface Network { + chainId: number; + name: string; + family: ChainFamily; + nativeToken: string; + publicRpc: string; + blockExplorer: string; + cctpDomain: NullableInteger; + oftEid: NullableInteger; + hypDomainId: NullableInteger; + groups: NetworkGroup[]; +} +export interface Token { + name: string; + symbol: string; + decimals: number; + coingeckoId: string; + l1TokenDecimals?: number; + addresses: TokenAddress[]; +} +export interface TokenAddress { + chainId: number; + address: string; +} +export interface TokenEquivalence { + symbol: string; + targetSymbol: string; +} diff --git a/src/generated/constants.v1.json b/src/generated/constants.v1.json new file mode 100644 index 0000000..003d9f2 --- /dev/null +++ b/src/generated/constants.v1.json @@ -0,0 +1,2444 @@ +{ + "schemaVersion": 1, + "chains": [ + { + "key": "ALEPH_ZERO", + "chainId": 41455, + "groups": ["mainnet"] + }, + { + "key": "ARBITRUM", + "chainId": 42161, + "groups": ["mainnet"] + }, + { + "key": "BASE", + "chainId": 8453, + "groups": ["mainnet"] + }, + { + "key": "BLAST", + "chainId": 81457, + "groups": ["mainnet"] + }, + { + "key": "BOB", + "chainId": 60808, + "groups": ["mainnet"] + }, + { + "key": "BSC", + "chainId": 56, + "groups": ["mainnet"] + }, + { + "key": "BOBA", + "chainId": 288, + "groups": ["mainnet"] + }, + { + "key": "HYPEREVM", + "chainId": 999, + "groups": ["mainnet"] + }, + { + "key": "HYPERCORE", + "chainId": 1337, + "groups": ["mainnet"] + }, + { + "key": "INK", + "chainId": 57073, + "groups": ["mainnet"] + }, + { + "key": "LENS", + "chainId": 232, + "groups": ["mainnet"] + }, + { + "key": "LIGHTER", + "chainId": 2337, + "groups": ["mainnet"] + }, + { + "key": "LINEA", + "chainId": 59144, + "groups": ["mainnet"] + }, + { + "key": "LISK", + "chainId": 1135, + "groups": ["mainnet"] + }, + { + "key": "MAINNET", + "chainId": 1, + "groups": ["mainnet"] + }, + { + "key": "MEGAETH", + "chainId": 4326, + "groups": ["mainnet"] + }, + { + "key": "MODE", + "chainId": 34443, + "groups": ["mainnet"] + }, + { + "key": "MONAD", + "chainId": 143, + "groups": ["mainnet"] + }, + { + "key": "OPTIMISM", + "chainId": 10, + "groups": ["mainnet"] + }, + { + "key": "PLASMA", + "chainId": 9745, + "groups": ["mainnet"] + }, + { + "key": "POLYGON", + "chainId": 137, + "groups": ["mainnet"] + }, + { + "key": "REDSTONE", + "chainId": 690, + "groups": ["mainnet"] + }, + { + "key": "SCROLL", + "chainId": 534352, + "groups": ["mainnet"] + }, + { + "key": "SONEIUM", + "chainId": 1868, + "groups": ["mainnet"] + }, + { + "key": "SUPERSEED", + "chainId": 5330, + "groups": ["mainnet"] + }, + { + "key": "TEMPO", + "chainId": 4217, + "groups": ["mainnet"] + }, + { + "key": "UNICHAIN", + "chainId": 130, + "groups": ["mainnet"] + }, + { + "key": "WORLD_CHAIN", + "chainId": 480, + "groups": ["mainnet"] + }, + { + "key": "ZK_SYNC", + "chainId": 324, + "groups": ["mainnet"] + }, + { + "key": "ZORA", + "chainId": 7777777, + "groups": ["mainnet"] + }, + { + "key": "SOLANA", + "chainId": 34268394551451, + "groups": ["mainnet"] + }, + { + "key": "ARBITRUM_SEPOLIA", + "chainId": 421614, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "BASE_SEPOLIA", + "chainId": 84532, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "BLAST_SEPOLIA", + "chainId": 168587773, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "BOB_SEPOLIA", + "chainId": 808813, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "HYPEREVM_TESTNET", + "chainId": 998, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "INK_SEPOLIA", + "chainId": 763373, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "TATARA", + "chainId": 129399, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "LENS_SEPOLIA", + "chainId": 37111, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "LISK_SEPOLIA", + "chainId": 4202, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "MODE_SEPOLIA", + "chainId": 919, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "MONAD_TESTNET", + "chainId": 10143, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "OPTIMISM_SEPOLIA", + "chainId": 11155420, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "PLASMA_TESTNET", + "chainId": 9746, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "POLYGON_AMOY", + "chainId": 80002, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "SCROLL_SEPOLIA", + "chainId": 534351, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "SEPOLIA", + "chainId": 11155111, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "UNICHAIN_SEPOLIA", + "chainId": 1301, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "ZK_SYNC_SEPOLIA", + "chainId": 300, + "groups": ["testnet", "testnet_sepolia"] + }, + { + "key": "SOLANA_DEVNET", + "chainId": 133268194659241, + "groups": ["testnet"] + } + ], + "networks": [ + { + "chainId": 41455, + "name": "Aleph Zero", + "family": "orbit", + "nativeToken": "AZERO", + "publicRpc": "https://rpc.alephzero.raas.gelato.cloud", + "blockExplorer": "https://evm-explorer.alephzero.org", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 42161, + "name": "Arbitrum One", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://arb1.arbitrum.io/rpc", + "blockExplorer": "https://arbiscan.io", + "cctpDomain": 3, + "oftEid": 30110, + "hypDomainId": 42161, + "groups": ["production"] + }, + { + "chainId": 8453, + "name": "Base", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.base.org", + "blockExplorer": "https://basescan.org", + "cctpDomain": 6, + "oftEid": 30184, + "hypDomainId": 8453, + "groups": ["production"] + }, + { + "chainId": 81457, + "name": "Blast", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.blast.io", + "blockExplorer": "https://blastscan.io", + "cctpDomain": null, + "oftEid": 30243, + "hypDomainId": 81457, + "groups": ["production"] + }, + { + "chainId": 56, + "name": "BNB Smart Chain", + "family": "none", + "nativeToken": "BNB", + "publicRpc": "https://bsc-dataseed1.binance.org", + "blockExplorer": "https://bscscan.com", + "cctpDomain": null, + "oftEid": 30102, + "hypDomainId": 56, + "groups": ["production"] + }, + { + "chainId": 288, + "name": "Boba", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.boba.network", + "blockExplorer": "https://blockexplorer.boba.network", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 999, + "name": "HyperEVM", + "family": "none", + "nativeToken": "HYPE", + "publicRpc": "https://rpc.hyperliquid.xyz/evm", + "blockExplorer": "https://hyperevmscan.io/", + "cctpDomain": 19, + "oftEid": 30367, + "hypDomainId": 999, + "groups": ["production"] + }, + { + "chainId": 1337, + "name": "HyperCore", + "family": "none", + "nativeToken": "HYPE", + "publicRpc": "https://api.hyperliquid.xyz", + "blockExplorer": "https://app.hyperliquid.xyz/explorer", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 57073, + "name": "Ink", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc-gel.inkonchain.com", + "blockExplorer": "https://explorer.inkonchain.com", + "cctpDomain": 21, + "oftEid": 30339, + "hypDomainId": 57073, + "groups": ["production"] + }, + { + "chainId": 232, + "name": "Lens", + "family": "zk_stack", + "nativeToken": "WGHO", + "publicRpc": "https://api.lens.matterhosted.dev", + "blockExplorer": "https://explorer.lens.xyz", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 2337, + "name": "Lighter", + "family": "none", + "nativeToken": "LIT", + "publicRpc": "https://mainnet.zklighter.elliot.ai", + "blockExplorer": "https://app.lighter.xyz/explorer", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 59144, + "name": "Linea", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://rpc.linea.build", + "blockExplorer": "https://lineascan.build", + "cctpDomain": 11, + "oftEid": null, + "hypDomainId": 59144, + "groups": ["production"] + }, + { + "chainId": 1135, + "name": "Lisk", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.api.lisk.com", + "blockExplorer": "https://blockscout.lisk.com", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 1, + "name": "Mainnet", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://eth.llamarpc.com", + "blockExplorer": "https://etherscan.io", + "cctpDomain": 0, + "oftEid": 30101, + "hypDomainId": 1, + "groups": ["production"] + }, + { + "chainId": 4326, + "name": "MegaETH", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.megaeth.com/rpc", + "blockExplorer": "https://megaeth.blockscout.com", + "cctpDomain": null, + "oftEid": 30398, + "hypDomainId": 4326, + "groups": ["production"] + }, + { + "chainId": 34443, + "name": "Mode", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.mode.network", + "blockExplorer": "https://explorer.mode.network", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 34443, + "groups": ["production"] + }, + { + "chainId": 143, + "name": "Monad", + "family": "none", + "nativeToken": "MON", + "publicRpc": "https://rpc-mainnet.monadinfra.com", + "blockExplorer": "https://monadvision.com", + "cctpDomain": 15, + "oftEid": 30390, + "hypDomainId": 143, + "groups": ["production"] + }, + { + "chainId": 10, + "name": "Optimism", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.optimism.io", + "blockExplorer": "https://optimistic.etherscan.io", + "cctpDomain": 2, + "oftEid": 30111, + "hypDomainId": 10, + "groups": ["production"] + }, + { + "chainId": 9745, + "name": "Plasma", + "family": "none", + "nativeToken": "XPL", + "publicRpc": "https://rpc.plasma.to", + "blockExplorer": "https://plasmascan.to", + "cctpDomain": null, + "oftEid": 30383, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 137, + "name": "Polygon", + "family": "none", + "nativeToken": "POL", + "publicRpc": "https://polygon-rpc.com", + "blockExplorer": "https://polygonscan.com", + "cctpDomain": 7, + "oftEid": 30109, + "hypDomainId": 137, + "groups": ["production"] + }, + { + "chainId": 690, + "name": "Redstone", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.redstonechain.com", + "blockExplorer": "https://explorer.redstone.xyz", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 690, + "groups": ["production"] + }, + { + "chainId": 534352, + "name": "Scroll", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://rpc.scroll.io", + "blockExplorer": "https://scrollscan.com", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 1868, + "name": "Soneium", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.soneium.org", + "blockExplorer": "https://soneium.blockscout.com", + "cctpDomain": null, + "oftEid": 30340, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 5330, + "name": "Superseed", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.superseed.xyz", + "blockExplorer": "", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 4217, + "name": "Tempo", + "family": "none", + "nativeToken": "pathUSD", + "publicRpc": "https://rpc.tempo.xyz", + "blockExplorer": "https://explore.mainnet.tempo.xyz", + "cctpDomain": null, + "oftEid": 30410, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 130, + "name": "Unichain", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.unichain.org/", + "blockExplorer": "https://uniscan.xyz", + "cctpDomain": 10, + "oftEid": 30320, + "hypDomainId": 130, + "groups": ["production"] + }, + { + "chainId": 480, + "name": "World Chain", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://worldchain-mainnet.g.alchemy.com/public", + "blockExplorer": "https://worldchain-mainnet-explorer.alchemy.com", + "cctpDomain": 14, + "oftEid": 30319, + "hypDomainId": 480, + "groups": ["production"] + }, + { + "chainId": 324, + "name": "zkSync", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://mainnet.era.zksync.io", + "blockExplorer": "https://explorer.zksync.io", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 324, + "groups": ["production"] + }, + { + "chainId": 7777777, + "name": "Zora", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.zora.energy", + "blockExplorer": "https://zorascan.xyz", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 34268394551451, + "name": "Solana", + "family": "svm", + "nativeToken": "SOL", + "publicRpc": "https://api.mainnet-beta.solana.com", + "blockExplorer": "https://solscan.io", + "cctpDomain": 5, + "oftEid": 30168, + "hypDomainId": 1399811149, + "groups": ["production"] + }, + { + "chainId": 421614, + "name": "Arbitrum Sepolia", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://sepolia-rollup.arbitrum.io/rpc", + "blockExplorer": "https://sepolia.arbiscan.io", + "cctpDomain": 3, + "oftEid": 40231, + "hypDomainId": 421614, + "groups": ["test"] + }, + { + "chainId": 84532, + "name": "Base Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.base.org", + "blockExplorer": "https://sepolia.basescan.org", + "cctpDomain": 6, + "oftEid": 40245, + "hypDomainId": 84532, + "groups": ["test"] + }, + { + "chainId": 168587773, + "name": "Blast Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.blast.io", + "blockExplorer": "https://sepolia.blastscan.io", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 168587773, + "groups": ["test"] + }, + { + "chainId": 808813, + "name": "BOB Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://bob-sepolia.rpc.gobob.xyz", + "blockExplorer": "https://bob-sepolia.explorer.gobob.xyz", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["test"] + }, + { + "chainId": 998, + "name": "HyperEVM Testnet", + "family": "none", + "nativeToken": "HYPE", + "publicRpc": "https://rpc.hyperliquid-testnet.xyz/evm", + "blockExplorer": "https://testnet.purrsec.com/", + "cctpDomain": 19, + "oftEid": 40362, + "hypDomainId": 998, + "groups": ["test"] + }, + { + "chainId": 129399, + "name": "Tatara", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "", + "blockExplorer": "", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["production"] + }, + { + "chainId": 37111, + "name": "Lens Sepolia", + "family": "zk_stack", + "nativeToken": "GRASS", + "publicRpc": "https://rpc.testnet.lens.dev", + "blockExplorer": "https://block-explorer.testnet.lens.dev", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["test"] + }, + { + "chainId": 4202, + "name": "Lisk Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://rpc.sepolia-api.lisk.com", + "blockExplorer": "https://sepolia-blockscout.lisk.com", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["test"] + }, + { + "chainId": 919, + "name": "Mode Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.mode.network", + "blockExplorer": "https://sepolia.explorer.mode.network", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 919, + "groups": ["test"] + }, + { + "chainId": 10143, + "name": "Monad Testnet", + "family": "none", + "nativeToken": "MON", + "publicRpc": "https://testnet-rpc.monad.xyz", + "blockExplorer": "https://testnet.monvision.io", + "cctpDomain": 15, + "oftEid": 40204, + "hypDomainId": 10143, + "groups": ["test"] + }, + { + "chainId": 11155420, + "name": "Optimism Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.optimism.io", + "blockExplorer": "https://sepolia-optimism.etherscan.io", + "cctpDomain": 2, + "oftEid": 40232, + "hypDomainId": 11155420, + "groups": ["test"] + }, + { + "chainId": 9746, + "name": "Plasma Testnet", + "family": "none", + "nativeToken": "XPL", + "publicRpc": "https://testnet-rpc.plasma.to/", + "blockExplorer": "https://testnet.plasmascan.to/", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["test"] + }, + { + "chainId": 80002, + "name": "Polygon Amoy", + "family": "none", + "nativeToken": "POL", + "publicRpc": "https://rpc-amoy.polygon.technology", + "blockExplorer": "https://amoy.polygonscan.com", + "cctpDomain": 7, + "oftEid": 40267, + "hypDomainId": 80002, + "groups": ["test"] + }, + { + "chainId": 534351, + "name": "Scroll Sepolia", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://sepolia-rpc.scroll.io", + "blockExplorer": "https://sepolia.scrollscan.com", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": null, + "groups": ["test"] + }, + { + "chainId": 11155111, + "name": "Sepolia", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.drpc.org", + "blockExplorer": "https://sepolia.etherscan.io", + "cctpDomain": 0, + "oftEid": 40161, + "hypDomainId": 11155111, + "groups": ["test"] + }, + { + "chainId": 1301, + "name": "Unichain Sepolia", + "family": "op_stack", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.unichain.org", + "blockExplorer": "https://sepolia.uniscan.xyz", + "cctpDomain": 10, + "oftEid": 40333, + "hypDomainId": 1301, + "groups": ["test"] + }, + { + "chainId": 300, + "name": "zkSync Sepolia", + "family": "none", + "nativeToken": "ETH", + "publicRpc": "https://sepolia.era.zksync.dev", + "blockExplorer": "https://sepolia-era.zksync.network", + "cctpDomain": null, + "oftEid": null, + "hypDomainId": 300, + "groups": ["test"] + }, + { + "chainId": 133268194659241, + "name": "Solana Devnet", + "family": "svm", + "nativeToken": "SOL", + "publicRpc": "https://api.devnet.solana.com", + "blockExplorer": "https://explorer.solana.com/?cluster=devnet", + "cctpDomain": 5, + "oftEid": 40168, + "hypDomainId": 1399811151, + "groups": ["test"] + } + ], + "tokens": [ + { + "name": "Across Protocol Token", + "symbol": "ACX", + "decimals": 18, + "coingeckoId": "across-protocol", + "addresses": [ + { + "chainId": 1, + "address": "0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F" + }, + { + "chainId": 10, + "address": "0xFf733b2A3557a7ed6697007ab5D11B79FdD1b76B" + }, + { + "chainId": 137, + "address": "0xF328b73B6c685831F238c30a23Fc19140CB4D8FC" + }, + { + "chainId": 288, + "address": "0x96821b258955587069F680729cD77369C0892B40" + }, + { + "chainId": 42161, + "address": "0x53691596d1BCe8CEa565b84d4915e69e03d9C99d" + }, + { + "chainId": 11155111, + "address": "0x49fCaC04AE71dbD074304Fb12071bD771e0E927A" + } + ] + }, + { + "name": "Arbitrum", + "symbol": "ARB", + "decimals": 18, + "coingeckoId": "arbitrum", + "addresses": [ + { + "chainId": 1, + "address": "0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1" + }, + { + "chainId": 42161, + "address": "0x912CE59144191C1204E64559FE8253a0e49E6548" + } + ] + }, + { + "name": "Aleph Zero", + "symbol": "AZERO", + "decimals": 18, + "coingeckoId": "aleph-zero", + "addresses": [ + { + "chainId": 1, + "address": "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe" + }, + { + "chainId": 41455, + "address": "0xb7Da55D7040ef9C887e20374D76A88F93A59119E" + } + ] + }, + { + "name": "Badger", + "symbol": "BADGER", + "decimals": 18, + "coingeckoId": "badger-dao", + "addresses": [ + { + "chainId": 1, + "address": "0x3472A5A71965499acd81997a54BBA8D852C6E53d" + }, + { + "chainId": 137, + "address": "0x1FcbE5937B0cc2adf69772D228fA4205aCF4D9b2" + }, + { + "chainId": 42161, + "address": "0xBfa641051Ba0a0Ad1b0AcF549a89536A0D76472E" + } + ] + }, + { + "name": "Balancer", + "symbol": "BAL", + "decimals": 18, + "coingeckoId": "balancer", + "addresses": [ + { + "chainId": 1, + "address": "0xba100000625a3754423978a60c9317c58a424e3D" + }, + { + "chainId": 10, + "address": "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921" + }, + { + "chainId": 137, + "address": "0x9a71012B13CA4d3D0Cdc72A177DF3ef03b0E76A3" + }, + { + "chainId": 8453, + "address": "0x4158734D47Fc9692176B5085E0F52ee0Da5d47F1" + }, + { + "chainId": 42161, + "address": "0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8" + }, + { + "chainId": 59144, + "address": "0x660edb0A46c3f69be9eFF5446318593b9469F9e2" + } + ] + }, + { + "name": "BNB", + "symbol": "BNB", + "decimals": 18, + "coingeckoId": "binancecoin", + "addresses": [ + { + "chainId": 1, + "address": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52" + }, + { + "chainId": 56, + "address": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c" + } + ] + }, + { + "name": "Boba", + "symbol": "BOBA", + "decimals": 18, + "coingeckoId": "boba-network", + "addresses": [ + { + "chainId": 1, + "address": "0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc" + }, + { + "chainId": 288, + "address": "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7" + } + ] + }, + { + "name": "PancakeSwap Token", + "symbol": "CAKE", + "decimals": 18, + "coingeckoId": "pancakeswap-token", + "addresses": [ + { + "chainId": 1, + "address": "0x152649eA73beAb28c5b49B26eb48f7EAD6d4c898" + }, + { + "chainId": 56, + "address": "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82" + } + ] + }, + { + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "coingeckoId": "dai", + "addresses": [ + { + "chainId": 1, + "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F" + }, + { + "chainId": 10, + "address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" + }, + { + "chainId": 137, + "address": "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063" + }, + { + "chainId": 288, + "address": "0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35" + }, + { + "chainId": 324, + "address": "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656" + }, + { + "chainId": 8453, + "address": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb" + }, + { + "chainId": 42161, + "address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" + }, + { + "chainId": 59144, + "address": "0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5" + } + ] + }, + { + "name": "Ether", + "symbol": "ETH", + "decimals": 18, + "coingeckoId": "ethereum", + "addresses": [ + { + "chainId": 1, + "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "chainId": 10, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 56, + "address": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8" + }, + { + "chainId": 130, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 137, + "address": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619" + }, + { + "chainId": 232, + "address": "0xE5ecd226b3032910CEaa43ba92EE8232f8237553" + }, + { + "chainId": 288, + "address": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000" + }, + { + "chainId": 300, + "address": "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD" + }, + { + "chainId": 324, + "address": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91" + }, + { + "chainId": 480, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 690, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 919, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1135, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1301, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1868, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 4202, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 4326, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 8453, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 9745, + "address": "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB" + }, + { + "chainId": 34443, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 37111, + "address": "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16" + }, + { + "chainId": 41455, + "address": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3" + }, + { + "chainId": 42161, + "address": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" + }, + { + "chainId": 57073, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 59144, + "address": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f" + }, + { + "chainId": 60808, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 80002, + "address": "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E" + }, + { + "chainId": 81457, + "address": "0x4300000000000000000000000000000000000004" + }, + { + "chainId": 84532, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 421614, + "address": "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73" + }, + { + "chainId": 534351, + "address": "0x5300000000000000000000000000000000000004" + }, + { + "chainId": 534352, + "address": "0x5300000000000000000000000000000000000004" + }, + { + "chainId": 763373, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 808813, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 7777777, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 11155111, + "address": "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14" + }, + { + "chainId": 11155420, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 168587773, + "address": "0x4200000000000000000000000000000000000023" + } + ] + }, + { + "name": "Renzo Restaked ETH", + "symbol": "ezETH", + "decimals": 18, + "coingeckoId": "renzo-restaked-eth", + "addresses": [ + { + "chainId": 1, + "address": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110" + }, + { + "chainId": 10, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 56, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 130, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 480, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 8453, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 34443, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 42161, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 59144, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + }, + { + "chainId": 81457, + "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" + } + ] + }, + { + "name": "Gho Token", + "symbol": "GHO", + "decimals": 18, + "coingeckoId": "gho", + "addresses": [ + { + "chainId": 1, + "address": "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f" + }, + { + "chainId": 232, + "address": "0x000000000000000000000000000000000000800A" + }, + { + "chainId": 84532, + "address": "0x7CFa3f3d1cded0Da930881c609D4Dbf0012c14Bb" + }, + { + "chainId": 421614, + "address": "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810" + }, + { + "chainId": 11155111, + "address": "0xc4bF5CbDaBE595361438F8c6a187bDc330539c60" + }, + { + "chainId": 11155420, + "address": "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810" + } + ] + }, + { + "name": "Grass", + "symbol": "GRASS", + "decimals": 18, + "coingeckoId": "gho", + "addresses": [ + { + "chainId": 37111, + "address": "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8" + }, + { + "chainId": 11155111, + "address": "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df" + } + ] + }, + { + "name": "Hyperliquid", + "symbol": "HYPE", + "decimals": 18, + "coingeckoId": "hyperliquid", + "addresses": [ + { + "chainId": 998, + "address": "0x5555555555555555555555555555555555555555" + }, + { + "chainId": 999, + "address": "0x5555555555555555555555555555555555555555" + } + ] + }, + { + "name": "Wrapped Hyperliquid", + "symbol": "WHYPE", + "decimals": 18, + "coingeckoId": "hyperliquid", + "addresses": [ + { + "chainId": 998, + "address": "0x5555555555555555555555555555555555555555" + }, + { + "chainId": 999, + "address": "0x5555555555555555555555555555555555555555" + } + ] + }, + { + "name": "Lisk", + "symbol": "LSK", + "decimals": 18, + "coingeckoId": "lisk", + "addresses": [ + { + "chainId": 1, + "address": "0x6033F7f88332B8db6ad452B7C6D5bB643990aE3f" + }, + { + "chainId": 1135, + "address": "0xac485391EB2d7D88253a7F1eF18C37f4242D1A24" + } + ] + }, + { + "name": "Matic", + "symbol": "MATIC", + "decimals": 18, + "coingeckoId": "polygon-ecosystem-token", + "addresses": [ + { + "chainId": 1, + "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" + }, + { + "chainId": 80002, + "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" + }, + { + "chainId": 11155111, + "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" + } + ] + }, + { + "name": "Monad", + "symbol": "MON", + "decimals": 18, + "coingeckoId": "monad", + "addresses": [ + { + "chainId": 143, + "address": "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A" + }, + { + "chainId": 10143, + "address": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701" + } + ] + }, + { + "name": "Optimism", + "symbol": "OP", + "decimals": 18, + "coingeckoId": "optimism", + "addresses": [ + { + "chainId": 10, + "address": "0x4200000000000000000000000000000000000042" + } + ] + }, + { + "name": "Polygon Ecosystem Token", + "symbol": "POL", + "decimals": 18, + "coingeckoId": "polygon-ecosystem-token", + "addresses": [ + { + "chainId": 1, + "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" + }, + { + "chainId": 80002, + "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" + }, + { + "chainId": 11155111, + "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" + } + ] + }, + { + "name": "PoolTogether", + "symbol": "POOL", + "decimals": 18, + "coingeckoId": "pooltogether", + "addresses": [ + { + "chainId": 1, + "address": "0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e" + }, + { + "chainId": 10, + "address": "0x395Ae52bB17aef68C2888d941736A71dC6d4e125" + }, + { + "chainId": 137, + "address": "0x25788a1a171ec66Da6502f9975a15B609fF54CF6" + }, + { + "chainId": 480, + "address": "0x7077C71B4AF70737a08287E279B717Dcf64fdC57" + }, + { + "chainId": 8453, + "address": "0xd652C5425aea2Afd5fb142e120FeCf79e18fafc3" + }, + { + "chainId": 42161, + "address": "0xCF934E2402A5e072928a39a956964eb8F2B5B79C" + }, + { + "chainId": 534352, + "address": "0xF9Af83FC41e0cc2af2fba93644D542Df6eA0F2b7" + } + ] + }, + { + "name": "pathUSD", + "symbol": "pathUSD", + "decimals": 6, + "coingeckoId": "pathusd", + "addresses": [ + { + "chainId": 4217, + "address": "0x20C0000000000000000000000000000000000000" + } + ] + }, + { + "name": "Synthetix", + "symbol": "SNX", + "decimals": 18, + "coingeckoId": "havven", + "addresses": [ + { + "chainId": 1, + "address": "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F" + }, + { + "chainId": 10, + "address": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4" + } + ] + }, + { + "name": "Solana", + "symbol": "SOL", + "decimals": 9, + "coingeckoId": "solana", + "addresses": [ + { + "chainId": 34268394551451, + "address": "So11111111111111111111111111111111111111112" + }, + { + "chainId": 133268194659241, + "address": "So11111111111111111111111111111111111111112" + } + ] + }, + { + "name": "UMA Voting Token", + "symbol": "UMA", + "decimals": 18, + "coingeckoId": "uma", + "addresses": [ + { + "chainId": 1, + "address": "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828" + }, + { + "chainId": 10, + "address": "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea" + }, + { + "chainId": 137, + "address": "0x3066818837c5e6eD6601bd5a91B0762877A6B731" + }, + { + "chainId": 288, + "address": "0x780f33Ad21314d9A1Ffb6867Fe53d48a76Ec0D16" + }, + { + "chainId": 42161, + "address": "0xd693Ec944A85eeca4247eC1c3b130DCa9B0C3b22" + } + ] + }, + { + "name": "USDB", + "symbol": "USDB", + "decimals": 18, + "coingeckoId": "usdb", + "addresses": [ + { + "chainId": 1, + "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F" + }, + { + "chainId": 81457, + "address": "0x4300000000000000000000000000000000000003" + } + ] + }, + { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "coingeckoId": "usd-coin", + "addresses": [ + { + "chainId": 1, + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "chainId": 10, + "address": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85" + }, + { + "chainId": 130, + "address": "0x078D782b760474a361dDA0AF3839290b0EF57AD6" + }, + { + "chainId": 137, + "address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" + }, + { + "chainId": 143, + "address": "0x754704Bc059F8C67012fEd69BC8A327a5aafb603" + }, + { + "chainId": 232, + "address": "0x88F08E304EC4f90D644Cec3Fb69b8aD414acf884" + }, + { + "chainId": 480, + "address": "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1" + }, + { + "chainId": 998, + "address": "0x2B3370eE501B4a559b57D449569354196457D8Ab" + }, + { + "chainId": 999, + "address": "0xb88339CB7199b77E23DB6E890353E22632Ba630f" + }, + { + "chainId": 1301, + "address": "0x31d0220469e10c4E71834a79b1f276d740d3768F" + }, + { + "chainId": 8453, + "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" + }, + { + "chainId": 10143, + "address": "0xf817257fed379853cDe0fa4F97AB987181B1E5Ea" + }, + { + "chainId": 42161, + "address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" + }, + { + "chainId": 57073, + "address": "0x2D270e6886d130D724215A266106e6832161EAEd" + }, + { + "chainId": 59144, + "address": "0x176211869cA2b568f2A7D4EE941E073a821EE1ff" + }, + { + "chainId": 80002, + "address": "0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582" + }, + { + "chainId": 84532, + "address": "0x036CbD53842c5426634e7929541eC2318f3dCF7e" + }, + { + "chainId": 421614, + "address": "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d" + }, + { + "chainId": 534352, + "address": "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4" + }, + { + "chainId": 11155111, + "address": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" + }, + { + "chainId": 11155420, + "address": "0x5fd84259d66Cd46123540766Be93DFE6D43130D7" + }, + { + "chainId": 34268394551451, + "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + }, + { + "chainId": 133268194659241, + "address": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU" + } + ] + }, + { + "name": "USD Coin (bridged)", + "symbol": "USDC.e", + "decimals": 6, + "coingeckoId": "usd-coin-ethereum-bridged", + "addresses": [ + { + "chainId": 1, + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "chainId": 10, + "address": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607" + }, + { + "chainId": 137, + "address": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" + }, + { + "chainId": 288, + "address": "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc" + }, + { + "chainId": 324, + "address": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" + }, + { + "chainId": 1135, + "address": "0xF242275d3a6527d877f2c927a82D9b057609cc71" + }, + { + "chainId": 1868, + "address": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369" + }, + { + "chainId": 4217, + "address": "0x20C000000000000000000000b9537d11c60E8b50" + }, + { + "chainId": 34443, + "address": "0xd988097fb8612cc24eeC14542bC03424c656005f" + }, + { + "chainId": 41455, + "address": "0x18d25B4e18165c97e1285212e5d1f80eDD6d3Aa7" + }, + { + "chainId": 42161, + "address": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8" + }, + { + "chainId": 11155420, + "address": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8" + } + ] + }, + { + "name": "USD Coin (bridged)", + "symbol": "USDbC", + "decimals": 6, + "coingeckoId": "bridged-usd-coin-base", + "addresses": [ + { + "chainId": 1, + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "chainId": 8453, + "address": "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA" + }, + { + "chainId": 84532, + "address": "0xE634Ec56B73779eCFfa78109a653FA0aE33D243f" + } + ] + }, + { + "name": "USD Coin (bridged)", + "symbol": "USDzC", + "decimals": 6, + "coingeckoId": "usd-coin-ethereum-bridged", + "addresses": [ + { + "chainId": 1, + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "chainId": 7777777, + "address": "0xCccCCccc7021b32EBb4e8C08314bD62F7c653EC4" + } + ] + }, + { + "name": "USD Coin", + "symbol": "USDC-BNB", + "decimals": 18, + "coingeckoId": "usd-coin", + "l1TokenDecimals": 6, + "addresses": [ + { + "chainId": 1, + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + }, + { + "chainId": 56, + "address": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d" + } + ] + }, + { + "name": "Hyperliquid USD", + "symbol": "USDH", + "decimals": 6, + "coingeckoId": "usdh-2", + "addresses": [ + { + "chainId": 998, + "address": "0x111111a1a0667d36bD57c0A9f569b98057111111" + }, + { + "chainId": 999, + "address": "0x111111a1a0667d36bD57c0A9f569b98057111111" + } + ] + }, + { + "name": "Hyperliquid USD", + "symbol": "USDH-SPOT", + "decimals": 8, + "coingeckoId": "usdh-2", + "addresses": [ + { + "chainId": 1337, + "address": "0x2000000000000000000000000000000000000168" + } + ] + }, + { + "name": "MegaUSD", + "symbol": "USDM", + "decimals": 18, + "coingeckoId": "megausd", + "addresses": [ + { + "chainId": 1, + "address": "0xEc2AF1C8B110a61fD9C3Fa6a554a031Ca9943926" + }, + { + "chainId": 4326, + "address": "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7" + } + ] + }, + { + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6, + "coingeckoId": "tether", + "addresses": [ + { + "chainId": 1, + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7" + }, + { + "chainId": 10, + "address": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58" + }, + { + "chainId": 130, + "address": "0x9151434b16b9763660705744891fA906F660EcC5" + }, + { + "chainId": 137, + "address": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F" + }, + { + "chainId": 143, + "address": "0xe7cd86e13AC4309349F30B3435a9d337750fC82D" + }, + { + "chainId": 288, + "address": "0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d" + }, + { + "chainId": 324, + "address": "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C" + }, + { + "chainId": 999, + "address": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" + }, + { + "chainId": 1135, + "address": "0x05D032ac25d322df992303dCa074EE7392C117b9" + }, + { + "chainId": 4326, + "address": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" + }, + { + "chainId": 8453, + "address": "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2" + }, + { + "chainId": 9745, + "address": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" + }, + { + "chainId": 9746, + "address": "0x12adA0e58293017eA3e5e6c1C0976F0f162A411b" + }, + { + "chainId": 10143, + "address": "0x88b8E2161DEDC77EF4ab7585569D2415a1C1055D" + }, + { + "chainId": 34443, + "address": "0xf0F161fDA2712DB8b566946122a5af183995e2eD" + }, + { + "chainId": 41455, + "address": "0xD648529D4803d3467bA8850577BEd4e4b8Ae583C" + }, + { + "chainId": 42161, + "address": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9" + }, + { + "chainId": 57073, + "address": "0x0200C29006150606B650577BBE7B6248F58470c1" + }, + { + "chainId": 59144, + "address": "0xA219439258ca9da29E9Cc4cE5596924745e12B93" + }, + { + "chainId": 534352, + "address": "0xf55BEC9cafDbE8730f096Aa55dad6D22d44099Df" + }, + { + "chainId": 11155111, + "address": "0x7169D38820dfd117C3FA1f22a697dBA58d90BA06" + } + ] + }, + { + "name": "Tether USD", + "symbol": "USDT-BNB", + "decimals": 18, + "coingeckoId": "tether", + "l1TokenDecimals": 6, + "addresses": [ + { + "chainId": 1, + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7" + }, + { + "chainId": 56, + "address": "0x55d398326f99059fF775485246999027B3197955" + } + ] + }, + { + "name": "Tether USD", + "symbol": "USDT-SPOT", + "decimals": 8, + "coingeckoId": "tether", + "l1TokenDecimals": 6, + "addresses": [ + { + "chainId": 1, + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7" + }, + { + "chainId": 1337, + "address": "0x200000000000000000000000000000000000010C" + } + ] + }, + { + "name": "Velora", + "symbol": "VLR", + "decimals": 18, + "coingeckoId": "velora", + "addresses": [ + { + "chainId": 1, + "address": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74" + }, + { + "chainId": 10, + "address": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74" + }, + { + "chainId": 8453, + "address": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74" + } + ] + }, + { + "name": "Plasma", + "symbol": "XPL", + "decimals": 18, + "coingeckoId": "plasma", + "addresses": [ + { + "chainId": 9745, + "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" + }, + { + "chainId": 9746, + "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" + } + ] + }, + { + "name": "Wrapped AZERO", + "symbol": "WAZERO", + "decimals": 18, + "coingeckoId": "aleph-zero", + "addresses": [ + { + "chainId": 1, + "address": "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe" + }, + { + "chainId": 41455, + "address": "0xb7Da55D7040ef9C887e20374D76A88F93A59119E" + } + ] + }, + { + "name": "Wrapped BNB", + "symbol": "WBNB", + "decimals": 18, + "coingeckoId": "wbnb", + "addresses": [ + { + "chainId": 1, + "address": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52" + }, + { + "chainId": 56, + "address": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c" + } + ] + }, + { + "name": "Wrapped Bitcoin", + "symbol": "WBTC", + "decimals": 8, + "coingeckoId": "wrapped-bitcoin", + "addresses": [ + { + "chainId": 1, + "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" + }, + { + "chainId": 10, + "address": "0x68f180fcCe6836688e9084f035309E29Bf0A2095" + }, + { + "chainId": 56, + "address": "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c" + }, + { + "chainId": 130, + "address": "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c" + }, + { + "chainId": 137, + "address": "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6" + }, + { + "chainId": 143, + "address": "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c" + }, + { + "chainId": 288, + "address": "0xdc0486f8bf31DF57a952bcd3c1d3e166e3d9eC8b" + }, + { + "chainId": 324, + "address": "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011" + }, + { + "chainId": 480, + "address": "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3" + }, + { + "chainId": 1135, + "address": "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3" + }, + { + "chainId": 10143, + "address": "0xcf5a6076cfa32686c0Df13aBaDa2b40dec133F1d" + }, + { + "chainId": 34443, + "address": "0xcDd475325D6F564d27247D1DddBb0DAc6fA0a5CF" + }, + { + "chainId": 42161, + "address": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f" + }, + { + "chainId": 59144, + "address": "0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4" + }, + { + "chainId": 81457, + "address": "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692" + }, + { + "chainId": 534352, + "address": "0x3C1BCa5a656e69edCD0D4E36BEbb3FcDAcA60Cf1" + }, + { + "chainId": 808813, + "address": "0xAdCE1AB74C8e64c155953A8BdE37cBB06Cf7086D" + }, + { + "chainId": 11155111, + "address": "0x9D15Db83680572C9a48826d51b733ea3B0957De3" + } + ] + }, + { + "name": "Wrapped Ether", + "symbol": "WETH", + "decimals": 18, + "coingeckoId": "weth", + "addresses": [ + { + "chainId": 1, + "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + { + "chainId": 10, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 56, + "address": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8" + }, + { + "chainId": 130, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 137, + "address": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619" + }, + { + "chainId": 232, + "address": "0xE5ecd226b3032910CEaa43ba92EE8232f8237553" + }, + { + "chainId": 288, + "address": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000" + }, + { + "chainId": 300, + "address": "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD" + }, + { + "chainId": 324, + "address": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91" + }, + { + "chainId": 480, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 690, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 919, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1135, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1301, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 1868, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 4202, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 4326, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 8453, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 9745, + "address": "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB" + }, + { + "chainId": 34443, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 37111, + "address": "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16" + }, + { + "chainId": 41455, + "address": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3" + }, + { + "chainId": 42161, + "address": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" + }, + { + "chainId": 57073, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 59144, + "address": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f" + }, + { + "chainId": 80002, + "address": "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E" + }, + { + "chainId": 81457, + "address": "0x4300000000000000000000000000000000000004" + }, + { + "chainId": 84532, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 421614, + "address": "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73" + }, + { + "chainId": 534351, + "address": "0x5300000000000000000000000000000000000004" + }, + { + "chainId": 534352, + "address": "0x5300000000000000000000000000000000000004" + }, + { + "chainId": 763373, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 808813, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 7777777, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 11155111, + "address": "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14" + }, + { + "chainId": 11155420, + "address": "0x4200000000000000000000000000000000000006" + }, + { + "chainId": 168587773, + "address": "0x4200000000000000000000000000000000000023" + } + ] + }, + { + "name": "Wrapped GHO Token", + "symbol": "WGHO", + "decimals": 18, + "coingeckoId": "gho", + "addresses": [ + { + "chainId": 1, + "address": "0x1ff1dC3cB9eeDbC6Eb2d99C03b30A05cA625fB5a" + }, + { + "chainId": 232, + "address": "0x6bDc36E20D267Ff0dd6097799f82e78907105e2F" + } + ] + }, + { + "name": "Wrapped Grass", + "symbol": "WGRASS", + "decimals": 18, + "coingeckoId": "gho", + "addresses": [ + { + "chainId": 37111, + "address": "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8" + }, + { + "chainId": 11155111, + "address": "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df" + } + ] + }, + { + "name": "Worldcoin", + "symbol": "WLD", + "decimals": 18, + "coingeckoId": "worldcoin-wld", + "addresses": [ + { + "chainId": 1, + "address": "0x163f8C2467924be0ae7B5347228CABF260318753" + }, + { + "chainId": 10, + "address": "0xdC6fF44d5d932Cbd77B52E5612Ba0529DC6226F1" + }, + { + "chainId": 480, + "address": "0x2cFc85d8E48F8EAB294be644d9E25C3030863003" + } + ] + }, + { + "name": "Matic", + "symbol": "WMATIC", + "decimals": 18, + "coingeckoId": "wmatic", + "addresses": [ + { + "chainId": 1, + "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" + }, + { + "chainId": 137, + "address": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270" + }, + { + "chainId": 80002, + "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" + }, + { + "chainId": 11155111, + "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" + } + ] + }, + { + "name": "Wrapped Monad", + "symbol": "WMON", + "decimals": 18, + "coingeckoId": "monad", + "addresses": [ + { + "chainId": 143, + "address": "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A" + }, + { + "chainId": 10143, + "address": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701" + } + ] + }, + { + "name": "Wrapped Polygon Ecosystem Token", + "symbol": "WPOL", + "decimals": 18, + "coingeckoId": "wmatic", + "addresses": [ + { + "chainId": 1, + "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" + }, + { + "chainId": 137, + "address": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270" + }, + { + "chainId": 80002, + "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" + }, + { + "chainId": 11155111, + "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" + } + ] + }, + { + "name": "Wrapped SOL", + "symbol": "WSOL", + "decimals": 9, + "coingeckoId": "wrapped-solana", + "addresses": [ + { + "chainId": 34268394551451, + "address": "So11111111111111111111111111111111111111112" + }, + { + "chainId": 133268194659241, + "address": "So11111111111111111111111111111111111111112" + } + ] + }, + { + "name": "Wrapped Plasma", + "symbol": "WXPL", + "decimals": 18, + "coingeckoId": "plasma", + "addresses": [ + { + "chainId": 9745, + "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" + }, + { + "chainId": 9746, + "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" + } + ] + }, + { + "name": "XYZ Token", + "symbol": "XYZ", + "decimals": 18, + "coingeckoId": "xyz", + "addresses": [ + { + "chainId": 84532, + "address": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9" + }, + { + "chainId": 11155111, + "address": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9" + }, + { + "chainId": 11155420, + "address": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9" + } + ] + } + ], + "tokenEquivalences": [ + { + "symbol": "pathUSD", + "targetSymbol": "USDC" + }, + { + "symbol": "USDH", + "targetSymbol": "USDC" + }, + { + "symbol": "USDC.e", + "targetSymbol": "USDC" + }, + { + "symbol": "USDbC", + "targetSymbol": "USDC" + }, + { + "symbol": "USDzC", + "targetSymbol": "USDC" + }, + { + "symbol": "USDB", + "targetSymbol": "DAI" + }, + { + "symbol": "USDC-BNB", + "targetSymbol": "USDC" + }, + { + "symbol": "USDT-BNB", + "targetSymbol": "USDT" + }, + { + "symbol": "USDT-SPOT", + "targetSymbol": "USDT" + }, + { + "symbol": "LGHO", + "targetSymbol": "WGHO" + }, + { + "symbol": "ETH", + "targetSymbol": "WETH" + }, + { + "symbol": "BNB", + "targetSymbol": "WBNB" + }, + { + "symbol": "HYPE", + "targetSymbol": "WHYPE" + }, + { + "symbol": "XPL", + "targetSymbol": "WXPL" + } + ] +} diff --git a/src/networks.ts b/src/networks.ts index 1b50c3d..382597f 100644 --- a/src/networks.ts +++ b/src/networks.ts @@ -1,4 +1,4 @@ -// Chain names and IDs. +// This file is generated by scripts/generate-legacy.mjs. Do not edit by hand. export const TESTNET_SEPOLIA_CHAIN_IDs = { ARBITRUM_SEPOLIA: 421614, BASE_SEPOLIA: 84532, @@ -21,7 +21,24 @@ export const TESTNET_SEPOLIA_CHAIN_IDs = { }; export const TESTNET_CHAIN_IDs = { - ...TESTNET_SEPOLIA_CHAIN_IDs, + ARBITRUM_SEPOLIA: 421614, + BASE_SEPOLIA: 84532, + BLAST_SEPOLIA: 168587773, + BOB_SEPOLIA: 808813, + HYPEREVM_TESTNET: 998, + INK_SEPOLIA: 763373, + TATARA: 129399, + LENS_SEPOLIA: 37111, + LISK_SEPOLIA: 4202, + MODE_SEPOLIA: 919, + MONAD_TESTNET: 10143, + OPTIMISM_SEPOLIA: 11155420, + PLASMA_TESTNET: 9746, + POLYGON_AMOY: 80002, + SCROLL_SEPOLIA: 534351, + SEPOLIA: 11155111, + UNICHAIN_SEPOLIA: 1301, + ZK_SYNC_SEPOLIA: 300, SOLANA_DEVNET: 133268194659241, } as const; @@ -34,7 +51,7 @@ export const MAINNET_CHAIN_IDs = { BSC: 56, BOBA: 288, HYPEREVM: 999, - HYPERCORE: 1337, // Arbitrary chain ID for HyperCore but consistent with other APIs + HYPERCORE: 1337, INK: 57073, LENS: 232, LIGHTER: 2337, @@ -60,19 +77,77 @@ export const MAINNET_CHAIN_IDs = { }; export const CHAIN_IDs = { - ...MAINNET_CHAIN_IDs, - ...TESTNET_CHAIN_IDs, + ALEPH_ZERO: 41455, + ARBITRUM: 42161, + BASE: 8453, + BLAST: 81457, + BOB: 60808, + BSC: 56, + BOBA: 288, + HYPEREVM: 999, + HYPERCORE: 1337, + INK: 57073, + LENS: 232, + LIGHTER: 2337, + LINEA: 59144, + LISK: 1135, + MAINNET: 1, + MEGAETH: 4326, + MODE: 34443, + MONAD: 143, + OPTIMISM: 10, + PLASMA: 9745, + POLYGON: 137, + REDSTONE: 690, + SCROLL: 534352, + SONEIUM: 1868, + SUPERSEED: 5330, + TEMPO: 4217, + UNICHAIN: 130, + WORLD_CHAIN: 480, + ZK_SYNC: 324, + ZORA: 7777777, + SOLANA: 34268394551451, + ARBITRUM_SEPOLIA: 421614, + BASE_SEPOLIA: 84532, + BLAST_SEPOLIA: 168587773, + BOB_SEPOLIA: 808813, + HYPEREVM_TESTNET: 998, + INK_SEPOLIA: 763373, + TATARA: 129399, + LENS_SEPOLIA: 37111, + LISK_SEPOLIA: 4202, + MODE_SEPOLIA: 919, + MONAD_TESTNET: 10143, + OPTIMISM_SEPOLIA: 11155420, + PLASMA_TESTNET: 9746, + POLYGON_AMOY: 80002, + SCROLL_SEPOLIA: 534351, + SEPOLIA: 11155111, + UNICHAIN_SEPOLIA: 1301, + ZK_SYNC_SEPOLIA: 300, + SOLANA_DEVNET: 133268194659241, }; export enum ChainFamily { NONE, OP_STACK, - ORBIT, // Future: Might need to distinguish between ORBIT_L2 and ORBIT_L3... + ORBIT, ZK_STACK, SVM, } -// Source https://docs.layerzero.network/v2/developers/evm/technical-reference/deployed-contracts +export interface PublicNetwork { + name: string; + family: ChainFamily; + nativeToken: string; + publicRPC: string; + blockExplorer: string; + cctpDomain: number; + oftEid: number; + hypDomainId: number; +} + export const PRODUCTION_OFT_EIDs = { ARBITRUM: 30110, BASE: 30184, @@ -81,8 +156,8 @@ export const PRODUCTION_OFT_EIDs = { HYPEREVM: 30367, INK: 30339, MAINNET: 30101, - MONAD: 30390, MEGAETH: 30398, + MONAD: 30390, OPTIMISM: 30111, PLASMA: 30383, POLYGON: 30109, @@ -93,525 +168,510 @@ export const PRODUCTION_OFT_EIDs = { SOLANA: 30168, }; -// Source https://docs.layerzero.network/v2/developers/evm/technical-reference/deployed-contracts export const TESTNET_OFT_EIDs = { ARBITRUM_SEPOLIA: 40231, BASE_SEPOLIA: 40245, - OPTIMISM_SEPOLIA: 40232, HYPEREVM_TESTNET: 40362, MONAD_TESTNET: 40204, + OPTIMISM_SEPOLIA: 40232, POLYGON_AMOY: 40267, SEPOLIA: 40161, UNICHAIN_SEPOLIA: 40333, SOLANA_DEVNET: 40168, }; -// Collection of Hyperlane domain ids that are different from CHAIN_IDs. -// Source https://github.com/hyperlane-xyz/hyperlane-registry export const HYPERLANE_DOMAIN_ID_OVERRIDES = { SOLANA: 1399811149, SOLANA_DEVNET: 1399811151, }; -interface PublicNetwork { - name: string; - family: ChainFamily; - nativeToken: string; - publicRPC: string; // RPC provider of last resort. - blockExplorer: string; - cctpDomain: number; - oftEid: number; - hypDomainId: number; // Hyperlane domain id -} - export const CCTP_NO_DOMAIN = -1; export const OFT_NO_EID = -1; export const HYPERLANE_NO_DOMAIN_ID = -1; -const { NONE, OP_STACK, ORBIT, SVM, ZK_STACK } = ChainFamily; export const PRODUCTION_NETWORKS: { [chainId: number]: PublicNetwork } = { - [CHAIN_IDs.ALEPH_ZERO]: { - name: "Aleph Zero", - family: ORBIT, - nativeToken: "AZERO", - publicRPC: "https://rpc.alephzero.raas.gelato.cloud", - blockExplorer: "https://evm-explorer.alephzero.org", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, - }, - [CHAIN_IDs.ARBITRUM]: { - name: "Arbitrum One", - family: NONE, - nativeToken: "ETH", - publicRPC: "https://arb1.arbitrum.io/rpc", - blockExplorer: "https://arbiscan.io", - cctpDomain: 3, - oftEid: PRODUCTION_OFT_EIDs.ARBITRUM, - hypDomainId: MAINNET_CHAIN_IDs.ARBITRUM, - }, - [CHAIN_IDs.BASE]: { - name: "Base", - family: OP_STACK, + "1": { + name: "Mainnet", + family: 0, nativeToken: "ETH", - publicRPC: "https://mainnet.base.org", - blockExplorer: "https://basescan.org", - cctpDomain: 6, - oftEid: PRODUCTION_OFT_EIDs.BASE, - hypDomainId: MAINNET_CHAIN_IDs.BASE, + publicRPC: "https://eth.llamarpc.com", + blockExplorer: "https://etherscan.io", + cctpDomain: 0, + oftEid: 30101, + hypDomainId: 1, }, - [CHAIN_IDs.BLAST]: { - name: "Blast", - family: OP_STACK, + "10": { + name: "Optimism", + family: 1, nativeToken: "ETH", - publicRPC: "https://rpc.blast.io", - blockExplorer: "https://blastscan.io", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: PRODUCTION_OFT_EIDs.BLAST, - hypDomainId: MAINNET_CHAIN_IDs.BLAST, + publicRPC: "https://mainnet.optimism.io", + blockExplorer: "https://optimistic.etherscan.io", + cctpDomain: 2, + oftEid: 30111, + hypDomainId: 10, }, - [CHAIN_IDs.BSC]: { + "56": { name: "BNB Smart Chain", - family: NONE, + family: 0, nativeToken: "BNB", publicRPC: "https://bsc-dataseed1.binance.org", blockExplorer: "https://bscscan.com", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: PRODUCTION_OFT_EIDs.BSC, - hypDomainId: MAINNET_CHAIN_IDs.BSC, + cctpDomain: -1, + oftEid: 30102, + hypDomainId: 56, + }, + "130": { + name: "Unichain", + family: 1, + nativeToken: "ETH", + publicRPC: "https://mainnet.unichain.org/", + blockExplorer: "https://uniscan.xyz", + cctpDomain: 10, + oftEid: 30320, + hypDomainId: 130, + }, + "137": { + name: "Polygon", + family: 0, + nativeToken: "POL", + publicRPC: "https://polygon-rpc.com", + blockExplorer: "https://polygonscan.com", + cctpDomain: 7, + oftEid: 30109, + hypDomainId: 137, + }, + "143": { + name: "Monad", + family: 0, + nativeToken: "MON", + publicRPC: "https://rpc-mainnet.monadinfra.com", + blockExplorer: "https://monadvision.com", + cctpDomain: 15, + oftEid: 30390, + hypDomainId: 143, + }, + "232": { + name: "Lens", + family: 3, + nativeToken: "WGHO", + publicRPC: "https://api.lens.matterhosted.dev", + blockExplorer: "https://explorer.lens.xyz", + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.BOBA]: { + "288": { name: "Boba", - family: OP_STACK, + family: 1, nativeToken: "ETH", publicRPC: "https://mainnet.boba.network", blockExplorer: "https://blockexplorer.boba.network", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, + }, + "324": { + name: "zkSync", + family: 0, + nativeToken: "ETH", + publicRPC: "https://mainnet.era.zksync.io", + blockExplorer: "https://explorer.zksync.io", + cctpDomain: -1, + oftEid: -1, + hypDomainId: 324, }, - [CHAIN_IDs.HYPEREVM]: { + "480": { + name: "World Chain", + family: 1, + nativeToken: "ETH", + publicRPC: "https://worldchain-mainnet.g.alchemy.com/public", + blockExplorer: "https://worldchain-mainnet-explorer.alchemy.com", + cctpDomain: 14, + oftEid: 30319, + hypDomainId: 480, + }, + "690": { + name: "Redstone", + family: 1, + nativeToken: "ETH", + publicRPC: "https://rpc.redstonechain.com", + blockExplorer: "https://explorer.redstone.xyz", + cctpDomain: -1, + oftEid: -1, + hypDomainId: 690, + }, + "999": { name: "HyperEVM", - family: NONE, + family: 0, nativeToken: "HYPE", publicRPC: "https://rpc.hyperliquid.xyz/evm", blockExplorer: "https://hyperevmscan.io/", cctpDomain: 19, - oftEid: PRODUCTION_OFT_EIDs.HYPEREVM, - hypDomainId: CHAIN_IDs.HYPEREVM, + oftEid: 30367, + hypDomainId: 999, + }, + "1135": { + name: "Lisk", + family: 1, + nativeToken: "ETH", + publicRPC: "https://rpc.api.lisk.com", + blockExplorer: "https://blockscout.lisk.com", + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.HYPERCORE]: { + "1337": { name: "HyperCore", - family: NONE, + family: 0, nativeToken: "HYPE", publicRPC: "https://api.hyperliquid.xyz", blockExplorer: "https://app.hyperliquid.xyz/explorer", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, - }, - [CHAIN_IDs.UNICHAIN]: { - name: "Unichain", - family: OP_STACK, - nativeToken: "ETH", - publicRPC: "https://mainnet.unichain.org/", - blockExplorer: "https://uniscan.xyz", - cctpDomain: 10, - oftEid: PRODUCTION_OFT_EIDs.UNICHAIN, - hypDomainId: MAINNET_CHAIN_IDs.UNICHAIN, + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.INK]: { - name: "Ink", - family: OP_STACK, - nativeToken: "ETH", - publicRPC: "https://rpc-gel.inkonchain.com", - blockExplorer: "https://explorer.inkonchain.com", - cctpDomain: 21, - oftEid: PRODUCTION_OFT_EIDs.INK, - hypDomainId: MAINNET_CHAIN_IDs.INK, - }, - [CHAIN_IDs.TATARA]: { - name: "Tatara", - family: NONE, + "1868": { + name: "Soneium", + family: 1, nativeToken: "ETH", - publicRPC: "", - blockExplorer: "", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, - }, - [CHAIN_IDs.LENS]: { - name: "Lens", - family: ZK_STACK, - nativeToken: "WGHO", - publicRPC: "https://api.lens.matterhosted.dev", - blockExplorer: "https://explorer.lens.xyz", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + publicRPC: "https://rpc.soneium.org", + blockExplorer: "https://soneium.blockscout.com", + cctpDomain: -1, + oftEid: 30340, + hypDomainId: -1, }, - [CHAIN_IDs.LIGHTER]: { + "2337": { name: "Lighter", - family: NONE, + family: 0, nativeToken: "LIT", publicRPC: "https://mainnet.zklighter.elliot.ai", blockExplorer: "https://app.lighter.xyz/explorer", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, - }, - [CHAIN_IDs.LINEA]: { - name: "Linea", - family: NONE, - nativeToken: "ETH", - publicRPC: "https://rpc.linea.build", - blockExplorer: "https://lineascan.build", - cctpDomain: 11, - oftEid: OFT_NO_EID, - hypDomainId: MAINNET_CHAIN_IDs.LINEA, - }, - [CHAIN_IDs.LISK]: { - name: "Lisk", - family: OP_STACK, - nativeToken: "ETH", - publicRPC: "https://rpc.api.lisk.com", - blockExplorer: "https://blockscout.lisk.com", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.MAINNET]: { - name: "Mainnet", - family: NONE, - nativeToken: "ETH", - publicRPC: "https://eth.llamarpc.com", - blockExplorer: "https://etherscan.io", - cctpDomain: 0, - oftEid: PRODUCTION_OFT_EIDs.MAINNET, - hypDomainId: MAINNET_CHAIN_IDs.MAINNET, + "4217": { + name: "Tempo", + family: 0, + nativeToken: "pathUSD", + publicRPC: "https://rpc.tempo.xyz", + blockExplorer: "https://explore.mainnet.tempo.xyz", + cctpDomain: -1, + oftEid: 30410, + hypDomainId: -1, }, - [CHAIN_IDs.MEGAETH]: { + "4326": { name: "MegaETH", - family: OP_STACK, + family: 1, nativeToken: "ETH", publicRPC: "https://mainnet.megaeth.com/rpc", blockExplorer: "https://megaeth.blockscout.com", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: PRODUCTION_OFT_EIDs.MEGAETH, - hypDomainId: MAINNET_CHAIN_IDs.MEGAETH, + cctpDomain: -1, + oftEid: 30398, + hypDomainId: 4326, }, - [CHAIN_IDs.MODE]: { - name: "Mode", - family: OP_STACK, + "5330": { + name: "Superseed", + family: 1, nativeToken: "ETH", - publicRPC: "https://mainnet.mode.network", - blockExplorer: "https://explorer.mode.network", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: MAINNET_CHAIN_IDs.MODE, - }, - [CHAIN_IDs.MONAD]: { - name: "Monad", - family: NONE, - nativeToken: "MON", - publicRPC: "https://rpc-mainnet.monadinfra.com", - blockExplorer: "https://monadvision.com", - cctpDomain: 15, - oftEid: PRODUCTION_OFT_EIDs.MONAD, - hypDomainId: MAINNET_CHAIN_IDs.MONAD, + publicRPC: "https://mainnet.superseed.xyz", + blockExplorer: "", + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.OPTIMISM]: { - name: "Optimism", - family: OP_STACK, + "8453": { + name: "Base", + family: 1, nativeToken: "ETH", - publicRPC: "https://mainnet.optimism.io", - blockExplorer: "https://optimistic.etherscan.io", - cctpDomain: 2, - oftEid: PRODUCTION_OFT_EIDs.OPTIMISM, - hypDomainId: MAINNET_CHAIN_IDs.OPTIMISM, + publicRPC: "https://mainnet.base.org", + blockExplorer: "https://basescan.org", + cctpDomain: 6, + oftEid: 30184, + hypDomainId: 8453, }, - [CHAIN_IDs.PLASMA]: { + "9745": { name: "Plasma", - family: NONE, + family: 0, nativeToken: "XPL", publicRPC: "https://rpc.plasma.to", blockExplorer: "https://plasmascan.to", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: PRODUCTION_OFT_EIDs.PLASMA, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, - }, - [CHAIN_IDs.POLYGON]: { - name: "Polygon", - family: NONE, - nativeToken: "POL", - publicRPC: "https://polygon-rpc.com", - blockExplorer: "https://polygonscan.com", - cctpDomain: 7, - oftEid: PRODUCTION_OFT_EIDs.POLYGON, - hypDomainId: MAINNET_CHAIN_IDs.POLYGON, + cctpDomain: -1, + oftEid: 30383, + hypDomainId: -1, }, - [CHAIN_IDs.REDSTONE]: { - name: "Redstone", - family: OP_STACK, + "34443": { + name: "Mode", + family: 1, nativeToken: "ETH", - publicRPC: "https://rpc.redstonechain.com", - blockExplorer: "https://explorer.redstone.xyz", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: MAINNET_CHAIN_IDs.REDSTONE, + publicRPC: "https://mainnet.mode.network", + blockExplorer: "https://explorer.mode.network", + cctpDomain: -1, + oftEid: -1, + hypDomainId: 34443, }, - [CHAIN_IDs.SCROLL]: { - name: "Scroll", - family: NONE, - nativeToken: "ETH", - publicRPC: "https://rpc.scroll.io", - blockExplorer: "https://scrollscan.com", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + "41455": { + name: "Aleph Zero", + family: 2, + nativeToken: "AZERO", + publicRPC: "https://rpc.alephzero.raas.gelato.cloud", + blockExplorer: "https://evm-explorer.alephzero.org", + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.SOLANA]: { - name: "Solana", - family: SVM, - nativeToken: "SOL", - publicRPC: "https://api.mainnet-beta.solana.com", - blockExplorer: "https://solscan.io", - cctpDomain: 5, - oftEid: PRODUCTION_OFT_EIDs.SOLANA, - hypDomainId: HYPERLANE_DOMAIN_ID_OVERRIDES.SOLANA, + "42161": { + name: "Arbitrum One", + family: 0, + nativeToken: "ETH", + publicRPC: "https://arb1.arbitrum.io/rpc", + blockExplorer: "https://arbiscan.io", + cctpDomain: 3, + oftEid: 30110, + hypDomainId: 42161, }, - [CHAIN_IDs.SONEIUM]: { - name: "Soneium", - family: OP_STACK, + "57073": { + name: "Ink", + family: 1, nativeToken: "ETH", - publicRPC: "https://rpc.soneium.org", - blockExplorer: "https://soneium.blockscout.com", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: PRODUCTION_OFT_EIDs.SONEIUM, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + publicRPC: "https://rpc-gel.inkonchain.com", + blockExplorer: "https://explorer.inkonchain.com", + cctpDomain: 21, + oftEid: 30339, + hypDomainId: 57073, }, - [CHAIN_IDs.SUPERSEED]: { - name: "Superseed", - family: OP_STACK, + "59144": { + name: "Linea", + family: 0, nativeToken: "ETH", - publicRPC: "https://mainnet.superseed.xyz", - blockExplorer: "", // @todo: To be added later - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + publicRPC: "https://rpc.linea.build", + blockExplorer: "https://lineascan.build", + cctpDomain: 11, + oftEid: -1, + hypDomainId: 59144, }, - [CHAIN_IDs.TEMPO]: { - name: "Tempo", - family: NONE, - nativeToken: "pathUSD", // While there is no native token on Tempo, pathUSD is the default fee token. - publicRPC: "https://rpc.tempo.xyz", - blockExplorer: "https://explore.mainnet.tempo.xyz", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: PRODUCTION_OFT_EIDs.TEMPO, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + "81457": { + name: "Blast", + family: 1, + nativeToken: "ETH", + publicRPC: "https://rpc.blast.io", + blockExplorer: "https://blastscan.io", + cctpDomain: -1, + oftEid: 30243, + hypDomainId: 81457, }, - [CHAIN_IDs.WORLD_CHAIN]: { - name: "World Chain", - family: OP_STACK, + "129399": { + name: "Tatara", + family: 0, nativeToken: "ETH", - publicRPC: "https://worldchain-mainnet.g.alchemy.com/public", - blockExplorer: "https://worldchain-mainnet-explorer.alchemy.com", - cctpDomain: 14, - oftEid: PRODUCTION_OFT_EIDs.WORLD_CHAIN, - hypDomainId: MAINNET_CHAIN_IDs.WORLD_CHAIN, + publicRPC: "", + blockExplorer: "", + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.ZK_SYNC]: { - name: "zkSync", - family: NONE, + "534352": { + name: "Scroll", + family: 0, nativeToken: "ETH", - publicRPC: "https://mainnet.era.zksync.io", - blockExplorer: "https://explorer.zksync.io", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: MAINNET_CHAIN_IDs.ZK_SYNC, + publicRPC: "https://rpc.scroll.io", + blockExplorer: "https://scrollscan.com", + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.ZORA]: { + "7777777": { name: "Zora", - family: OP_STACK, + family: 1, nativeToken: "ETH", publicRPC: "https://rpc.zora.energy", blockExplorer: "https://zorascan.xyz", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, + }, + "34268394551451": { + name: "Solana", + family: 4, + nativeToken: "SOL", + publicRPC: "https://api.mainnet-beta.solana.com", + blockExplorer: "https://solscan.io", + cctpDomain: 5, + oftEid: 30168, + hypDomainId: 1399811149, }, }; export const TEST_NETWORKS: { [chainId: number]: PublicNetwork } = { - [CHAIN_IDs.ARBITRUM_SEPOLIA]: { - name: "Arbitrum Sepolia", - family: NONE, - nativeToken: "ETH", - publicRPC: "https://sepolia-rollup.arbitrum.io/rpc", - blockExplorer: "https://sepolia.arbiscan.io", - cctpDomain: 3, - oftEid: TESTNET_OFT_EIDs.ARBITRUM_SEPOLIA, - hypDomainId: TESTNET_CHAIN_IDs.ARBITRUM_SEPOLIA, - }, - [CHAIN_IDs.BASE_SEPOLIA]: { - name: "Base Sepolia", - family: OP_STACK, - nativeToken: "ETH", - publicRPC: "https://sepolia.base.org", - blockExplorer: "https://sepolia.basescan.org", - cctpDomain: 6, - oftEid: TESTNET_OFT_EIDs.BASE_SEPOLIA, - hypDomainId: TESTNET_CHAIN_IDs.BASE_SEPOLIA, - }, - [CHAIN_IDs.BLAST_SEPOLIA]: { - name: "Blast Sepolia", - family: OP_STACK, + "300": { + name: "zkSync Sepolia", + family: 0, nativeToken: "ETH", - publicRPC: "https://sepolia.blast.io", - blockExplorer: "https://sepolia.blastscan.io", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: TESTNET_CHAIN_IDs.BLAST_SEPOLIA, + publicRPC: "https://sepolia.era.zksync.dev", + blockExplorer: "https://sepolia-era.zksync.network", + cctpDomain: -1, + oftEid: -1, + hypDomainId: 300, }, - [CHAIN_IDs.BOB_SEPOLIA]: { - name: "BOB Sepolia", - family: OP_STACK, + "919": { + name: "Mode Sepolia", + family: 1, nativeToken: "ETH", - publicRPC: "https://bob-sepolia.rpc.gobob.xyz", - blockExplorer: "https://bob-sepolia.explorer.gobob.xyz", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + publicRPC: "https://sepolia.mode.network", + blockExplorer: "https://sepolia.explorer.mode.network", + cctpDomain: -1, + oftEid: -1, + hypDomainId: 919, }, - [CHAIN_IDs.HYPEREVM_TESTNET]: { + "998": { name: "HyperEVM Testnet", - family: NONE, + family: 0, nativeToken: "HYPE", publicRPC: "https://rpc.hyperliquid-testnet.xyz/evm", blockExplorer: "https://testnet.purrsec.com/", cctpDomain: 19, - oftEid: TESTNET_OFT_EIDs.HYPEREVM_TESTNET, - hypDomainId: TESTNET_CHAIN_IDs.HYPEREVM_TESTNET, + oftEid: 40362, + hypDomainId: 998, }, - [CHAIN_IDs.LENS_SEPOLIA]: { - name: "Lens Sepolia", - family: ZK_STACK, - nativeToken: "GRASS", - publicRPC: "https://rpc.testnet.lens.dev", - blockExplorer: "https://block-explorer.testnet.lens.dev", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + "1301": { + name: "Unichain Sepolia", + family: 1, + nativeToken: "ETH", + publicRPC: "https://sepolia.unichain.org", + blockExplorer: "https://sepolia.uniscan.xyz", + cctpDomain: 10, + oftEid: 40333, + hypDomainId: 1301, }, - [CHAIN_IDs.LISK_SEPOLIA]: { + "4202": { name: "Lisk Sepolia", - family: OP_STACK, + family: 1, nativeToken: "ETH", publicRPC: "https://rpc.sepolia-api.lisk.com", blockExplorer: "https://sepolia-blockscout.lisk.com", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.MODE_SEPOLIA]: { - name: "Mode Sepolia", - family: OP_STACK, - nativeToken: "ETH", - publicRPC: "https://sepolia.mode.network", - blockExplorer: "https://sepolia.explorer.mode.network", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: TESTNET_CHAIN_IDs.MODE_SEPOLIA, + "9746": { + name: "Plasma Testnet", + family: 0, + nativeToken: "XPL", + publicRPC: "https://testnet-rpc.plasma.to/", + blockExplorer: "https://testnet.plasmascan.to/", + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.MONAD_TESTNET]: { + "10143": { name: "Monad Testnet", - family: NONE, + family: 0, nativeToken: "MON", publicRPC: "https://testnet-rpc.monad.xyz", blockExplorer: "https://testnet.monvision.io", cctpDomain: 15, - oftEid: TESTNET_OFT_EIDs.MONAD_TESTNET, - hypDomainId: TESTNET_CHAIN_IDs.MONAD_TESTNET, - }, - [CHAIN_IDs.OPTIMISM_SEPOLIA]: { - name: "Optimism Sepolia", - family: OP_STACK, - nativeToken: "ETH", - publicRPC: "https://sepolia.optimism.io", - blockExplorer: "https://sepolia-optimism.etherscan.io", - cctpDomain: 2, - oftEid: TESTNET_OFT_EIDs.OPTIMISM_SEPOLIA, - hypDomainId: TESTNET_CHAIN_IDs.OPTIMISM_SEPOLIA, + oftEid: 40204, + hypDomainId: 10143, }, - [CHAIN_IDs.PLASMA_TESTNET]: { - name: "Plasma Testnet", - family: NONE, - nativeToken: "XPL", - publicRPC: "https://testnet-rpc.plasma.to/", - blockExplorer: "https://testnet.plasmascan.to/", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + "37111": { + name: "Lens Sepolia", + family: 3, + nativeToken: "GRASS", + publicRPC: "https://rpc.testnet.lens.dev", + blockExplorer: "https://block-explorer.testnet.lens.dev", + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.POLYGON_AMOY]: { + "80002": { name: "Polygon Amoy", - family: NONE, + family: 0, nativeToken: "POL", publicRPC: "https://rpc-amoy.polygon.technology", blockExplorer: "https://amoy.polygonscan.com", cctpDomain: 7, - oftEid: TESTNET_OFT_EIDs.POLYGON_AMOY, - hypDomainId: TESTNET_CHAIN_IDs.POLYGON_AMOY, + oftEid: 40267, + hypDomainId: 80002, + }, + "84532": { + name: "Base Sepolia", + family: 1, + nativeToken: "ETH", + publicRPC: "https://sepolia.base.org", + blockExplorer: "https://sepolia.basescan.org", + cctpDomain: 6, + oftEid: 40245, + hypDomainId: 84532, + }, + "421614": { + name: "Arbitrum Sepolia", + family: 0, + nativeToken: "ETH", + publicRPC: "https://sepolia-rollup.arbitrum.io/rpc", + blockExplorer: "https://sepolia.arbiscan.io", + cctpDomain: 3, + oftEid: 40231, + hypDomainId: 421614, }, - [CHAIN_IDs.SCROLL_SEPOLIA]: { + "534351": { name: "Scroll Sepolia", - family: NONE, + family: 0, nativeToken: "ETH", publicRPC: "https://sepolia-rpc.scroll.io", blockExplorer: "https://sepolia.scrollscan.com", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: HYPERLANE_NO_DOMAIN_ID, + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, }, - [CHAIN_IDs.SEPOLIA]: { + "808813": { + name: "BOB Sepolia", + family: 1, + nativeToken: "ETH", + publicRPC: "https://bob-sepolia.rpc.gobob.xyz", + blockExplorer: "https://bob-sepolia.explorer.gobob.xyz", + cctpDomain: -1, + oftEid: -1, + hypDomainId: -1, + }, + "11155111": { name: "Sepolia", - family: NONE, + family: 0, nativeToken: "ETH", publicRPC: "https://sepolia.drpc.org", blockExplorer: "https://sepolia.etherscan.io", cctpDomain: 0, - oftEid: TESTNET_OFT_EIDs.SEPOLIA, - hypDomainId: TESTNET_CHAIN_IDs.SEPOLIA, + oftEid: 40161, + hypDomainId: 11155111, + }, + "11155420": { + name: "Optimism Sepolia", + family: 1, + nativeToken: "ETH", + publicRPC: "https://sepolia.optimism.io", + blockExplorer: "https://sepolia-optimism.etherscan.io", + cctpDomain: 2, + oftEid: 40232, + hypDomainId: 11155420, + }, + "168587773": { + name: "Blast Sepolia", + family: 1, + nativeToken: "ETH", + publicRPC: "https://sepolia.blast.io", + blockExplorer: "https://sepolia.blastscan.io", + cctpDomain: -1, + oftEid: -1, + hypDomainId: 168587773, }, - [CHAIN_IDs.SOLANA_DEVNET]: { + "133268194659241": { name: "Solana Devnet", - family: SVM, + family: 4, nativeToken: "SOL", publicRPC: "https://api.devnet.solana.com", blockExplorer: "https://explorer.solana.com/?cluster=devnet", cctpDomain: 5, - oftEid: TESTNET_OFT_EIDs.SOLANA_DEVNET, - hypDomainId: HYPERLANE_DOMAIN_ID_OVERRIDES.SOLANA_DEVNET, - }, - [CHAIN_IDs.UNICHAIN_SEPOLIA]: { - name: "Unichain Sepolia", - family: OP_STACK, - nativeToken: "ETH", - publicRPC: "https://sepolia.unichain.org", - blockExplorer: "https://sepolia.uniscan.xyz", - cctpDomain: 10, - oftEid: TESTNET_OFT_EIDs.UNICHAIN_SEPOLIA, - hypDomainId: TESTNET_CHAIN_IDs.UNICHAIN_SEPOLIA, - }, - [CHAIN_IDs.ZK_SYNC_SEPOLIA]: { - name: "zkSync Sepolia", - family: NONE, - nativeToken: "ETH", - publicRPC: "https://sepolia.era.zksync.dev", - blockExplorer: "https://sepolia-era.zksync.network", - cctpDomain: CCTP_NO_DOMAIN, - oftEid: OFT_NO_EID, - hypDomainId: TESTNET_CHAIN_IDs.ZK_SYNC_SEPOLIA, + oftEid: 40168, + hypDomainId: 1399811151, }, }; diff --git a/src/tokens.ts b/src/tokens.ts index 6521b9f..3ed8a7c 100644 --- a/src/tokens.ts +++ b/src/tokens.ts @@ -1,19 +1,16 @@ -import { CHAIN_IDs } from "./networks"; - -// Information for the supported tokens on each chain. -// NOTE: All addresses should be checksummed +// This file is generated by scripts/generate-legacy.mjs. Do not edit by hand. export const TOKEN_SYMBOLS_MAP = { ACX: { name: "Across Protocol Token", symbol: "ACX", decimals: 18, addresses: { - [CHAIN_IDs.ARBITRUM]: "0x53691596d1BCe8CEa565b84d4915e69e03d9C99d", - [CHAIN_IDs.BOBA]: "0x96821b258955587069F680729cD77369C0892B40", - [CHAIN_IDs.MAINNET]: "0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F", - [CHAIN_IDs.OPTIMISM]: "0xFf733b2A3557a7ed6697007ab5D11B79FdD1b76B", - [CHAIN_IDs.POLYGON]: "0xF328b73B6c685831F238c30a23Fc19140CB4D8FC", - [CHAIN_IDs.SEPOLIA]: "0x49fCaC04AE71dbD074304Fb12071bD771e0E927A", + "1": "0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F", + "10": "0xFf733b2A3557a7ed6697007ab5D11B79FdD1b76B", + "137": "0xF328b73B6c685831F238c30a23Fc19140CB4D8FC", + "288": "0x96821b258955587069F680729cD77369C0892B40", + "42161": "0x53691596d1BCe8CEa565b84d4915e69e03d9C99d", + "11155111": "0x49fCaC04AE71dbD074304Fb12071bD771e0E927A", }, coingeckoId: "across-protocol", }, @@ -22,8 +19,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "ARB", decimals: 18, addresses: { - [CHAIN_IDs.ARBITRUM]: "0x912CE59144191C1204E64559FE8253a0e49E6548", - [CHAIN_IDs.MAINNET]: "0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1", + "1": "0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1", + "42161": "0x912CE59144191C1204E64559FE8253a0e49E6548", }, coingeckoId: "arbitrum", }, @@ -32,8 +29,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "AZERO", decimals: 18, addresses: { - [CHAIN_IDs.ALEPH_ZERO]: "0xb7Da55D7040ef9C887e20374D76A88F93A59119E", - [CHAIN_IDs.MAINNET]: "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe", + "1": "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe", + "41455": "0xb7Da55D7040ef9C887e20374D76A88F93A59119E", }, coingeckoId: "aleph-zero", }, @@ -42,9 +39,9 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "BADGER", decimals: 18, addresses: { - [CHAIN_IDs.ARBITRUM]: "0xBfa641051Ba0a0Ad1b0AcF549a89536A0D76472E", - [CHAIN_IDs.MAINNET]: "0x3472A5A71965499acd81997a54BBA8D852C6E53d", - [CHAIN_IDs.POLYGON]: "0x1FcbE5937B0cc2adf69772D228fA4205aCF4D9b2", + "1": "0x3472A5A71965499acd81997a54BBA8D852C6E53d", + "137": "0x1FcbE5937B0cc2adf69772D228fA4205aCF4D9b2", + "42161": "0xBfa641051Ba0a0Ad1b0AcF549a89536A0D76472E", }, coingeckoId: "badger-dao", }, @@ -53,12 +50,12 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "BAL", decimals: 18, addresses: { - [CHAIN_IDs.ARBITRUM]: "0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8", - [CHAIN_IDs.BASE]: "0x4158734D47Fc9692176B5085E0F52ee0Da5d47F1", - [CHAIN_IDs.LINEA]: "0x660edb0A46c3f69be9eFF5446318593b9469F9e2", - [CHAIN_IDs.MAINNET]: "0xba100000625a3754423978a60c9317c58a424e3D", - [CHAIN_IDs.OPTIMISM]: "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921", - [CHAIN_IDs.POLYGON]: "0x9a71012B13CA4d3D0Cdc72A177DF3ef03b0E76A3", + "1": "0xba100000625a3754423978a60c9317c58a424e3D", + "10": "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921", + "137": "0x9a71012B13CA4d3D0Cdc72A177DF3ef03b0E76A3", + "8453": "0x4158734D47Fc9692176B5085E0F52ee0Da5d47F1", + "42161": "0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8", + "59144": "0x660edb0A46c3f69be9eFF5446318593b9469F9e2", }, coingeckoId: "balancer", }, @@ -67,8 +64,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "BNB", decimals: 18, addresses: { - [CHAIN_IDs.BSC]: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", - [CHAIN_IDs.MAINNET]: "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", + "1": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", + "56": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", }, coingeckoId: "binancecoin", }, @@ -77,8 +74,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "BOBA", decimals: 18, addresses: { - [CHAIN_IDs.BOBA]: "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7", - [CHAIN_IDs.MAINNET]: "0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc", + "1": "0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc", + "288": "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7", }, coingeckoId: "boba-network", }, @@ -87,8 +84,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "CAKE", decimals: 18, addresses: { - [CHAIN_IDs.BSC]: "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", - [CHAIN_IDs.MAINNET]: "0x152649eA73beAb28c5b49B26eb48f7EAD6d4c898", + "1": "0x152649eA73beAb28c5b49B26eb48f7EAD6d4c898", + "56": "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", }, coingeckoId: "pancakeswap-token", }, @@ -97,14 +94,14 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "DAI", decimals: 18, addresses: { - [CHAIN_IDs.ARBITRUM]: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - [CHAIN_IDs.BASE]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - [CHAIN_IDs.BOBA]: "0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35", - [CHAIN_IDs.LINEA]: "0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5", - [CHAIN_IDs.MAINNET]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - [CHAIN_IDs.OPTIMISM]: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", - [CHAIN_IDs.POLYGON]: "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", - [CHAIN_IDs.ZK_SYNC]: "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656", + "1": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "10": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + "137": "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + "288": "0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35", + "324": "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656", + "8453": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + "42161": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + "59144": "0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5", }, coingeckoId: "dai", }, @@ -113,44 +110,44 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "ETH", decimals: 18, addresses: { - [CHAIN_IDs.ALEPH_ZERO]: "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3", - [CHAIN_IDs.ARBITRUM]: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - [CHAIN_IDs.ARBITRUM_SEPOLIA]: "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73", - [CHAIN_IDs.BASE]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.BASE_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.BSC]: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", - [CHAIN_IDs.BOB]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.BOB_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.BOBA]: "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", - [CHAIN_IDs.BLAST]: "0x4300000000000000000000000000000000000004", - [CHAIN_IDs.BLAST_SEPOLIA]: "0x4200000000000000000000000000000000000023", - [CHAIN_IDs.INK]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.INK_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.LENS]: "0xE5ecd226b3032910CEaa43ba92EE8232f8237553", - [CHAIN_IDs.LENS_SEPOLIA]: "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16", - [CHAIN_IDs.LINEA]: "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", - [CHAIN_IDs.LISK]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.LISK_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.MAINNET]: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - [CHAIN_IDs.MEGAETH]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.MODE]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.MODE_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.OPTIMISM]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.OPTIMISM_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.PLASMA]: "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB", - [CHAIN_IDs.POLYGON]: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", - [CHAIN_IDs.POLYGON_AMOY]: "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E", - [CHAIN_IDs.REDSTONE]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.SCROLL]: "0x5300000000000000000000000000000000000004", - [CHAIN_IDs.SCROLL_SEPOLIA]: "0x5300000000000000000000000000000000000004", - [CHAIN_IDs.SEPOLIA]: "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14", - [CHAIN_IDs.SONEIUM]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.UNICHAIN]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.UNICHAIN_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.WORLD_CHAIN]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.ZK_SYNC]: "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", - [CHAIN_IDs.ZK_SYNC_SEPOLIA]: "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD", - [CHAIN_IDs.ZORA]: "0x4200000000000000000000000000000000000006", + "1": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "10": "0x4200000000000000000000000000000000000006", + "56": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + "130": "0x4200000000000000000000000000000000000006", + "137": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + "232": "0xE5ecd226b3032910CEaa43ba92EE8232f8237553", + "288": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", + "300": "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD", + "324": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", + "480": "0x4200000000000000000000000000000000000006", + "690": "0x4200000000000000000000000000000000000006", + "919": "0x4200000000000000000000000000000000000006", + "1135": "0x4200000000000000000000000000000000000006", + "1301": "0x4200000000000000000000000000000000000006", + "1868": "0x4200000000000000000000000000000000000006", + "4202": "0x4200000000000000000000000000000000000006", + "4326": "0x4200000000000000000000000000000000000006", + "8453": "0x4200000000000000000000000000000000000006", + "9745": "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB", + "34443": "0x4200000000000000000000000000000000000006", + "37111": "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16", + "41455": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3", + "42161": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "57073": "0x4200000000000000000000000000000000000006", + "59144": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", + "60808": "0x4200000000000000000000000000000000000006", + "80002": "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E", + "81457": "0x4300000000000000000000000000000000000004", + "84532": "0x4200000000000000000000000000000000000006", + "421614": "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73", + "534351": "0x5300000000000000000000000000000000000004", + "534352": "0x5300000000000000000000000000000000000004", + "763373": "0x4200000000000000000000000000000000000006", + "808813": "0x4200000000000000000000000000000000000006", + "7777777": "0x4200000000000000000000000000000000000006", + "11155111": "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14", + "11155420": "0x4200000000000000000000000000000000000006", + "168587773": "0x4200000000000000000000000000000000000023", }, coingeckoId: "ethereum", }, @@ -159,16 +156,16 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "ezETH", decimals: 18, addresses: { - [CHAIN_IDs.ARBITRUM]: "0x2416092f143378750bb29b79eD961ab195CcEea5", - [CHAIN_IDs.BASE]: "0x2416092f143378750bb29b79eD961ab195CcEea5", - [CHAIN_IDs.BLAST]: "0x2416092f143378750bb29b79eD961ab195CcEea5", - [CHAIN_IDs.BSC]: "0x2416092f143378750bb29b79eD961ab195CcEea5", - [CHAIN_IDs.LINEA]: "0x2416092f143378750bb29b79eD961ab195CcEea5", - [CHAIN_IDs.MAINNET]: "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", - [CHAIN_IDs.MODE]: "0x2416092f143378750bb29b79eD961ab195CcEea5", - [CHAIN_IDs.OPTIMISM]: "0x2416092f143378750bb29b79eD961ab195CcEea5", - [CHAIN_IDs.UNICHAIN]: "0x2416092f143378750bb29b79eD961ab195CcEea5", - [CHAIN_IDs.WORLD_CHAIN]: "0x2416092f143378750bb29b79eD961ab195CcEea5", + "1": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", + "10": "0x2416092f143378750bb29b79eD961ab195CcEea5", + "56": "0x2416092f143378750bb29b79eD961ab195CcEea5", + "130": "0x2416092f143378750bb29b79eD961ab195CcEea5", + "480": "0x2416092f143378750bb29b79eD961ab195CcEea5", + "8453": "0x2416092f143378750bb29b79eD961ab195CcEea5", + "34443": "0x2416092f143378750bb29b79eD961ab195CcEea5", + "42161": "0x2416092f143378750bb29b79eD961ab195CcEea5", + "59144": "0x2416092f143378750bb29b79eD961ab195CcEea5", + "81457": "0x2416092f143378750bb29b79eD961ab195CcEea5", }, coingeckoId: "renzo-restaked-eth", }, @@ -177,12 +174,12 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "GHO", decimals: 18, addresses: { - [CHAIN_IDs.ARBITRUM_SEPOLIA]: "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810", - [CHAIN_IDs.BASE_SEPOLIA]: "0x7CFa3f3d1cded0Da930881c609D4Dbf0012c14Bb", - [CHAIN_IDs.LENS]: "0x000000000000000000000000000000000000800A", - [CHAIN_IDs.MAINNET]: "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f", - [CHAIN_IDs.OPTIMISM_SEPOLIA]: "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810", - [CHAIN_IDs.SEPOLIA]: "0xc4bF5CbDaBE595361438F8c6a187bDc330539c60", + "1": "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f", + "232": "0x000000000000000000000000000000000000800A", + "84532": "0x7CFa3f3d1cded0Da930881c609D4Dbf0012c14Bb", + "421614": "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810", + "11155111": "0xc4bF5CbDaBE595361438F8c6a187bDc330539c60", + "11155420": "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810", }, coingeckoId: "gho", }, @@ -191,18 +188,18 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "GRASS", decimals: 18, addresses: { - [CHAIN_IDs.LENS_SEPOLIA]: "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8", - [CHAIN_IDs.SEPOLIA]: "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df", + "37111": "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8", + "11155111": "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df", }, - coingeckoId: "gho", // GRASS is Sepolia GHO. + coingeckoId: "gho", }, HYPE: { name: "Hyperliquid", symbol: "HYPE", decimals: 18, addresses: { - [CHAIN_IDs.HYPEREVM]: "0x5555555555555555555555555555555555555555", - [CHAIN_IDs.HYPEREVM_TESTNET]: "0x5555555555555555555555555555555555555555", + "998": "0x5555555555555555555555555555555555555555", + "999": "0x5555555555555555555555555555555555555555", }, coingeckoId: "hyperliquid", }, @@ -211,8 +208,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "WHYPE", decimals: 18, addresses: { - [CHAIN_IDs.HYPEREVM]: "0x5555555555555555555555555555555555555555", - [CHAIN_IDs.HYPEREVM_TESTNET]: "0x5555555555555555555555555555555555555555", + "998": "0x5555555555555555555555555555555555555555", + "999": "0x5555555555555555555555555555555555555555", }, coingeckoId: "hyperliquid", }, @@ -221,8 +218,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "LSK", decimals: 18, addresses: { - [CHAIN_IDs.LISK]: "0xac485391EB2d7D88253a7F1eF18C37f4242D1A24", - [CHAIN_IDs.MAINNET]: "0x6033F7f88332B8db6ad452B7C6D5bB643990aE3f", + "1": "0x6033F7f88332B8db6ad452B7C6D5bB643990aE3f", + "1135": "0xac485391EB2d7D88253a7F1eF18C37f4242D1A24", }, coingeckoId: "lisk", }, @@ -231,9 +228,9 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "MATIC", decimals: 18, addresses: { - [CHAIN_IDs.MAINNET]: "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", - [CHAIN_IDs.POLYGON_AMOY]: "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", - [CHAIN_IDs.SEPOLIA]: "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", + "1": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", + "80002": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", + "11155111": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", }, coingeckoId: "polygon-ecosystem-token", }, @@ -242,8 +239,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "MON", decimals: 18, addresses: { - [CHAIN_IDs.MONAD]: "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A", - [CHAIN_IDs.MONAD_TESTNET]: "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701", + "143": "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A", + "10143": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701", }, coingeckoId: "monad", }, @@ -252,7 +249,7 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "OP", decimals: 18, addresses: { - [CHAIN_IDs.OPTIMISM]: "0x4200000000000000000000000000000000000042", + "10": "0x4200000000000000000000000000000000000042", }, coingeckoId: "optimism", }, @@ -261,9 +258,9 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "POL", decimals: 18, addresses: { - [CHAIN_IDs.MAINNET]: "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", - [CHAIN_IDs.POLYGON_AMOY]: "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", - [CHAIN_IDs.SEPOLIA]: "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", + "1": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", + "80002": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", + "11155111": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", }, coingeckoId: "polygon-ecosystem-token", }, @@ -272,13 +269,13 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "POOL", decimals: 18, addresses: { - [CHAIN_IDs.ARBITRUM]: "0xCF934E2402A5e072928a39a956964eb8F2B5B79C", - [CHAIN_IDs.BASE]: "0xd652C5425aea2Afd5fb142e120FeCf79e18fafc3", - [CHAIN_IDs.MAINNET]: "0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e", - [CHAIN_IDs.OPTIMISM]: "0x395Ae52bB17aef68C2888d941736A71dC6d4e125", - [CHAIN_IDs.POLYGON]: "0x25788a1a171ec66Da6502f9975a15B609fF54CF6", - [CHAIN_IDs.SCROLL]: "0xF9Af83FC41e0cc2af2fba93644D542Df6eA0F2b7", - [CHAIN_IDs.WORLD_CHAIN]: "0x7077C71B4AF70737a08287E279B717Dcf64fdC57", + "1": "0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e", + "10": "0x395Ae52bB17aef68C2888d941736A71dC6d4e125", + "137": "0x25788a1a171ec66Da6502f9975a15B609fF54CF6", + "480": "0x7077C71B4AF70737a08287E279B717Dcf64fdC57", + "8453": "0xd652C5425aea2Afd5fb142e120FeCf79e18fafc3", + "42161": "0xCF934E2402A5e072928a39a956964eb8F2B5B79C", + "534352": "0xF9Af83FC41e0cc2af2fba93644D542Df6eA0F2b7", }, coingeckoId: "pooltogether", }, @@ -287,7 +284,7 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "pathUSD", decimals: 6, addresses: { - [CHAIN_IDs.TEMPO]: "0x20C0000000000000000000000000000000000000", + "4217": "0x20C0000000000000000000000000000000000000", }, coingeckoId: "pathusd", }, @@ -295,10 +292,9 @@ export const TOKEN_SYMBOLS_MAP = { name: "Synthetix", symbol: "SNX", decimals: 18, - // Based on https://github.com/Synthetixio/synthetix-docs/blob/fe83d0757977b1cb7f69796126e71a66295bf264/content/addresses.md addresses: { - [CHAIN_IDs.MAINNET]: "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", - [CHAIN_IDs.OPTIMISM]: "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", + "1": "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", + "10": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", }, coingeckoId: "havven", }, @@ -307,8 +303,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "SOL", decimals: 9, addresses: { - [CHAIN_IDs.SOLANA]: "So11111111111111111111111111111111111111112", - [CHAIN_IDs.SOLANA_DEVNET]: "So11111111111111111111111111111111111111112", + "34268394551451": "So11111111111111111111111111111111111111112", + "133268194659241": "So11111111111111111111111111111111111111112", }, coingeckoId: "solana", }, @@ -317,11 +313,11 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "UMA", decimals: 18, addresses: { - [CHAIN_IDs.ARBITRUM]: "0xd693Ec944A85eeca4247eC1c3b130DCa9B0C3b22", - [CHAIN_IDs.BOBA]: "0x780f33Ad21314d9A1Ffb6867Fe53d48a76Ec0D16", - [CHAIN_IDs.MAINNET]: "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", - [CHAIN_IDs.OPTIMISM]: "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea", - [CHAIN_IDs.POLYGON]: "0x3066818837c5e6eD6601bd5a91B0762877A6B731", + "1": "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", + "10": "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea", + "137": "0x3066818837c5e6eD6601bd5a91B0762877A6B731", + "288": "0x780f33Ad21314d9A1Ffb6867Fe53d48a76Ec0D16", + "42161": "0xd693Ec944A85eeca4247eC1c3b130DCa9B0C3b22", }, coingeckoId: "uma", }, @@ -330,8 +326,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "USDB", decimals: 18, addresses: { - [CHAIN_IDs.BLAST]: "0x4300000000000000000000000000000000000003", - [CHAIN_IDs.MAINNET]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "1": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "81457": "0x4300000000000000000000000000000000000003", }, coingeckoId: "usdb", }, @@ -340,29 +336,29 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "USDC", decimals: 6, addresses: { - [CHAIN_IDs.ARBITRUM]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - [CHAIN_IDs.ARBITRUM_SEPOLIA]: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d", - [CHAIN_IDs.BASE]: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", - [CHAIN_IDs.BASE_SEPOLIA]: "0x036CbD53842c5426634e7929541eC2318f3dCF7e", - [CHAIN_IDs.HYPEREVM]: "0xb88339CB7199b77E23DB6E890353E22632Ba630f", - [CHAIN_IDs.HYPEREVM_TESTNET]: "0x2B3370eE501B4a559b57D449569354196457D8Ab", - [CHAIN_IDs.INK]: "0x2D270e6886d130D724215A266106e6832161EAEd", - [CHAIN_IDs.LINEA]: "0x176211869cA2b568f2A7D4EE941E073a821EE1ff", - [CHAIN_IDs.LENS]: "0x88F08E304EC4f90D644Cec3Fb69b8aD414acf884", - [CHAIN_IDs.MAINNET]: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - [CHAIN_IDs.MONAD]: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603", - [CHAIN_IDs.MONAD_TESTNET]: "0xf817257fed379853cDe0fa4F97AB987181B1E5Ea", - [CHAIN_IDs.OPTIMISM]: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", - [CHAIN_IDs.OPTIMISM_SEPOLIA]: "0x5fd84259d66Cd46123540766Be93DFE6D43130D7", - [CHAIN_IDs.POLYGON]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - [CHAIN_IDs.POLYGON_AMOY]: "0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582", - [CHAIN_IDs.SCROLL]: "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4", - [CHAIN_IDs.SEPOLIA]: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238", - [CHAIN_IDs.UNICHAIN]: "0x078D782b760474a361dDA0AF3839290b0EF57AD6", - [CHAIN_IDs.UNICHAIN_SEPOLIA]: "0x31d0220469e10c4E71834a79b1f276d740d3768F", - [CHAIN_IDs.WORLD_CHAIN]: "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1", - [CHAIN_IDs.SOLANA]: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - [CHAIN_IDs.SOLANA_DEVNET]: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU", + "1": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "10": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + "130": "0x078D782b760474a361dDA0AF3839290b0EF57AD6", + "137": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + "143": "0x754704Bc059F8C67012fEd69BC8A327a5aafb603", + "232": "0x88F08E304EC4f90D644Cec3Fb69b8aD414acf884", + "480": "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1", + "998": "0x2B3370eE501B4a559b57D449569354196457D8Ab", + "999": "0xb88339CB7199b77E23DB6E890353E22632Ba630f", + "1301": "0x31d0220469e10c4E71834a79b1f276d740d3768F", + "8453": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + "10143": "0xf817257fed379853cDe0fa4F97AB987181B1E5Ea", + "42161": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + "57073": "0x2D270e6886d130D724215A266106e6832161EAEd", + "59144": "0x176211869cA2b568f2A7D4EE941E073a821EE1ff", + "80002": "0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582", + "84532": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", + "421614": "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d", + "534352": "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4", + "11155111": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238", + "11155420": "0x5fd84259d66Cd46123540766Be93DFE6D43130D7", + "34268394551451": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "133268194659241": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU", }, coingeckoId: "usd-coin", }, @@ -371,18 +367,18 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "USDC.e", decimals: 6, addresses: { - [CHAIN_IDs.ALEPH_ZERO]: "0x18d25B4e18165c97e1285212e5d1f80eDD6d3Aa7", - [CHAIN_IDs.ARBITRUM]: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", - [CHAIN_IDs.BOBA]: "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc", - [CHAIN_IDs.LISK]: "0xF242275d3a6527d877f2c927a82D9b057609cc71", - [CHAIN_IDs.MAINNET]: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - [CHAIN_IDs.MODE]: "0xd988097fb8612cc24eeC14542bC03424c656005f", - [CHAIN_IDs.OPTIMISM]: "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", - [CHAIN_IDs.OPTIMISM_SEPOLIA]: "0x9552a0a6624A23B848060AE5901659CDDa1f83f8", - [CHAIN_IDs.POLYGON]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - [CHAIN_IDs.SONEIUM]: "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", - [CHAIN_IDs.TEMPO]: "0x20C000000000000000000000b9537d11c60E8b50", - [CHAIN_IDs.ZK_SYNC]: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + "1": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "10": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "137": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + "288": "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc", + "324": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + "1135": "0xF242275d3a6527d877f2c927a82D9b057609cc71", + "1868": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + "4217": "0x20C000000000000000000000b9537d11c60E8b50", + "34443": "0xd988097fb8612cc24eeC14542bC03424c656005f", + "41455": "0x18d25B4e18165c97e1285212e5d1f80eDD6d3Aa7", + "42161": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "11155420": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8", }, coingeckoId: "usd-coin-ethereum-bridged", }, @@ -391,9 +387,9 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "USDbC", decimals: 6, addresses: { - [CHAIN_IDs.BASE]: "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", - [CHAIN_IDs.BASE_SEPOLIA]: "0xE634Ec56B73779eCFfa78109a653FA0aE33D243f", - [CHAIN_IDs.MAINNET]: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "1": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "8453": "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", + "84532": "0xE634Ec56B73779eCFfa78109a653FA0aE33D243f", }, coingeckoId: "bridged-usd-coin-base", }, @@ -402,8 +398,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "USDzC", decimals: 6, addresses: { - [CHAIN_IDs.MAINNET]: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - [CHAIN_IDs.ZORA]: "0xCccCCccc7021b32EBb4e8C08314bD62F7c653EC4", + "1": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "7777777": "0xCccCCccc7021b32EBb4e8C08314bD62F7c653EC4", }, coingeckoId: "usd-coin-ethereum-bridged", }, @@ -412,19 +408,19 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "USDC-BNB", decimals: 18, addresses: { - [CHAIN_IDs.BSC]: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", - [CHAIN_IDs.MAINNET]: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "1": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "56": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", }, - l1TokenDecimals: 6, coingeckoId: "usd-coin", + l1TokenDecimals: 6, }, USDH: { name: "Hyperliquid USD", symbol: "USDH", decimals: 6, addresses: { - [CHAIN_IDs.HYPEREVM]: "0x111111a1a0667d36bD57c0A9f569b98057111111", - [CHAIN_IDs.HYPEREVM_TESTNET]: "0x111111a1a0667d36bD57c0A9f569b98057111111", + "998": "0x111111a1a0667d36bD57c0A9f569b98057111111", + "999": "0x111111a1a0667d36bD57c0A9f569b98057111111", }, coingeckoId: "usdh-2", }, @@ -433,9 +429,7 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "USDH-SPOT", decimals: 8, addresses: { - // We use HyperCore's USDT system address for USDH-SPOT. - // https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/hyperevm/hypercore-less-than-greater-than-hyperevm-transfers#system-addresses - [CHAIN_IDs.HYPERCORE]: "0x2000000000000000000000000000000000000168", + "1337": "0x2000000000000000000000000000000000000168", }, coingeckoId: "usdh-2", }, @@ -443,38 +437,38 @@ export const TOKEN_SYMBOLS_MAP = { name: "MegaUSD", symbol: "USDM", decimals: 18, - coingeckoId: "megausd", addresses: { - [CHAIN_IDs.MAINNET]: "0xEc2AF1C8B110a61fD9C3Fa6a554a031Ca9943926", - [CHAIN_IDs.MEGAETH]: "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7", - } + "1": "0xEc2AF1C8B110a61fD9C3Fa6a554a031Ca9943926", + "4326": "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7", + }, + coingeckoId: "megausd", }, USDT: { name: "Tether USD", symbol: "USDT", decimals: 6, addresses: { - [CHAIN_IDs.ALEPH_ZERO]: "0xD648529D4803d3467bA8850577BEd4e4b8Ae583C", - [CHAIN_IDs.ARBITRUM]: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", - [CHAIN_IDs.BASE]: "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2", - [CHAIN_IDs.BOBA]: "0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d", - [CHAIN_IDs.HYPEREVM]: "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb", - [CHAIN_IDs.INK]: "0x0200C29006150606B650577BBE7B6248F58470c1", - [CHAIN_IDs.LINEA]: "0xA219439258ca9da29E9Cc4cE5596924745e12B93", - [CHAIN_IDs.LISK]: "0x05D032ac25d322df992303dCa074EE7392C117b9", - [CHAIN_IDs.MAINNET]: "0xdAC17F958D2ee523a2206206994597C13D831ec7", - [CHAIN_IDs.MEGAETH]: "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb", - [CHAIN_IDs.MONAD]: "0xe7cd86e13AC4309349F30B3435a9d337750fC82D", - [CHAIN_IDs.MONAD_TESTNET]: "0x88b8E2161DEDC77EF4ab7585569D2415a1C1055D", - [CHAIN_IDs.MODE]: "0xf0F161fDA2712DB8b566946122a5af183995e2eD", - [CHAIN_IDs.OPTIMISM]: "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", - [CHAIN_IDs.PLASMA]: "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb", - [CHAIN_IDs.PLASMA_TESTNET]: "0x12adA0e58293017eA3e5e6c1C0976F0f162A411b", - [CHAIN_IDs.POLYGON]: "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", - [CHAIN_IDs.SCROLL]: "0xf55BEC9cafDbE8730f096Aa55dad6D22d44099Df", - [CHAIN_IDs.SEPOLIA]: "0x7169D38820dfd117C3FA1f22a697dBA58d90BA06", - [CHAIN_IDs.UNICHAIN]: "0x9151434b16b9763660705744891fA906F660EcC5", - [CHAIN_IDs.ZK_SYNC]: "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C", + "1": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "10": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", + "130": "0x9151434b16b9763660705744891fA906F660EcC5", + "137": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", + "143": "0xe7cd86e13AC4309349F30B3435a9d337750fC82D", + "288": "0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d", + "324": "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C", + "999": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb", + "1135": "0x05D032ac25d322df992303dCa074EE7392C117b9", + "4326": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb", + "8453": "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2", + "9745": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb", + "9746": "0x12adA0e58293017eA3e5e6c1C0976F0f162A411b", + "10143": "0x88b8E2161DEDC77EF4ab7585569D2415a1C1055D", + "34443": "0xf0F161fDA2712DB8b566946122a5af183995e2eD", + "41455": "0xD648529D4803d3467bA8850577BEd4e4b8Ae583C", + "42161": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", + "57073": "0x0200C29006150606B650577BBE7B6248F58470c1", + "59144": "0xA219439258ca9da29E9Cc4cE5596924745e12B93", + "534352": "0xf55BEC9cafDbE8730f096Aa55dad6D22d44099Df", + "11155111": "0x7169D38820dfd117C3FA1f22a697dBA58d90BA06", }, coingeckoId: "tether", }, @@ -483,31 +477,31 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "USDT-BNB", decimals: 18, addresses: { - [CHAIN_IDs.BSC]: "0x55d398326f99059fF775485246999027B3197955", - [CHAIN_IDs.MAINNET]: "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "1": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "56": "0x55d398326f99059fF775485246999027B3197955", }, - l1TokenDecimals: 6, coingeckoId: "tether", + l1TokenDecimals: 6, }, "USDT-SPOT": { name: "Tether USD", symbol: "USDT-SPOT", decimals: 8, addresses: { - [CHAIN_IDs.HYPERCORE]: "0x200000000000000000000000000000000000010C", - [CHAIN_IDs.MAINNET]: "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "1": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "1337": "0x200000000000000000000000000000000000010C", }, - l1TokenDecimals: 6, coingeckoId: "tether", + l1TokenDecimals: 6, }, VLR: { name: "Velora", symbol: "VLR", decimals: 18, addresses: { - [CHAIN_IDs.BASE]: "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74", - [CHAIN_IDs.MAINNET]: "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74", - [CHAIN_IDs.OPTIMISM]: "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74", + "1": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74", + "10": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74", + "8453": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74", }, coingeckoId: "velora", }, @@ -516,8 +510,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "XPL", decimals: 18, addresses: { - [CHAIN_IDs.PLASMA]: "0x6100E367285b01F48D07953803A2d8dCA5D19873", - [CHAIN_IDs.PLASMA_TESTNET]: "0x6100E367285b01F48D07953803A2d8dCA5D19873", + "9745": "0x6100E367285b01F48D07953803A2d8dCA5D19873", + "9746": "0x6100E367285b01F48D07953803A2d8dCA5D19873", }, coingeckoId: "plasma", }, @@ -526,8 +520,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "WAZERO", decimals: 18, addresses: { - [CHAIN_IDs.ALEPH_ZERO]: "0xb7Da55D7040ef9C887e20374D76A88F93A59119E", - [CHAIN_IDs.MAINNET]: "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe", + "1": "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe", + "41455": "0xb7Da55D7040ef9C887e20374D76A88F93A59119E", }, coingeckoId: "aleph-zero", }, @@ -536,8 +530,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "WBNB", decimals: 18, addresses: { - [CHAIN_IDs.BSC]: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", - [CHAIN_IDs.MAINNET]: "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", + "1": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", + "56": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", }, coingeckoId: "wbnb", }, @@ -546,24 +540,24 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "WBTC", decimals: 8, addresses: { - [CHAIN_IDs.ARBITRUM]: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", - [CHAIN_IDs.BLAST]: "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692", - [CHAIN_IDs.BSC]: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", - [CHAIN_IDs.BOBA]: "0xdc0486f8bf31DF57a952bcd3c1d3e166e3d9eC8b", - [CHAIN_IDs.LINEA]: "0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4", - [CHAIN_IDs.LISK]: "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3", - [CHAIN_IDs.MAINNET]: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - [CHAIN_IDs.MODE]: "0xcDd475325D6F564d27247D1DddBb0DAc6fA0a5CF", - [CHAIN_IDs.MONAD]: "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c", - [CHAIN_IDs.MONAD_TESTNET]: "0xcf5a6076cfa32686c0Df13aBaDa2b40dec133F1d", - [CHAIN_IDs.OPTIMISM]: "0x68f180fcCe6836688e9084f035309E29Bf0A2095", - [CHAIN_IDs.POLYGON]: "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", - [CHAIN_IDs.SCROLL]: "0x3C1BCa5a656e69edCD0D4E36BEbb3FcDAcA60Cf1", - [CHAIN_IDs.UNICHAIN]: "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c", - [CHAIN_IDs.WORLD_CHAIN]: "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3", - [CHAIN_IDs.ZK_SYNC]: "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011", - [CHAIN_IDs.BOB_SEPOLIA]: "0xAdCE1AB74C8e64c155953A8BdE37cBB06Cf7086D", - [CHAIN_IDs.SEPOLIA]: "0x9D15Db83680572C9a48826d51b733ea3B0957De3", + "1": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "10": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", + "56": "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", + "130": "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c", + "137": "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", + "143": "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c", + "288": "0xdc0486f8bf31DF57a952bcd3c1d3e166e3d9eC8b", + "324": "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011", + "480": "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3", + "1135": "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3", + "10143": "0xcf5a6076cfa32686c0Df13aBaDa2b40dec133F1d", + "34443": "0xcDd475325D6F564d27247D1DddBb0DAc6fA0a5CF", + "42161": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", + "59144": "0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4", + "81457": "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692", + "534352": "0x3C1BCa5a656e69edCD0D4E36BEbb3FcDAcA60Cf1", + "808813": "0xAdCE1AB74C8e64c155953A8BdE37cBB06Cf7086D", + "11155111": "0x9D15Db83680572C9a48826d51b733ea3B0957De3", }, coingeckoId: "wrapped-bitcoin", }, @@ -572,44 +566,43 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "WETH", decimals: 18, addresses: { - [CHAIN_IDs.ALEPH_ZERO]: "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3", - [CHAIN_IDs.ARBITRUM]: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", - [CHAIN_IDs.ARBITRUM_SEPOLIA]: "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73", - [CHAIN_IDs.BASE]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.BASE_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.BOBA]: "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", - [CHAIN_IDs.BLAST]: "0x4300000000000000000000000000000000000004", - [CHAIN_IDs.BLAST_SEPOLIA]: "0x4200000000000000000000000000000000000023", - [CHAIN_IDs.BSC]: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", - [CHAIN_IDs.INK]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.INK_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.LENS]: "0xE5ecd226b3032910CEaa43ba92EE8232f8237553", - [CHAIN_IDs.LENS_SEPOLIA]: "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16", - [CHAIN_IDs.LINEA]: "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", - [CHAIN_IDs.LISK]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.LISK_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.MAINNET]: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - [CHAIN_IDs.MEGAETH]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.MODE]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.MODE_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.OPTIMISM]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.OPTIMISM_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.PLASMA]: "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB", - [CHAIN_IDs.POLYGON]: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", - [CHAIN_IDs.POLYGON_AMOY]: "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E", - [CHAIN_IDs.PLASMA]: "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB", - [CHAIN_IDs.REDSTONE]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.SCROLL]: "0x5300000000000000000000000000000000000004", - [CHAIN_IDs.SCROLL_SEPOLIA]: "0x5300000000000000000000000000000000000004", - [CHAIN_IDs.SEPOLIA]: "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14", - [CHAIN_IDs.SONEIUM]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.UNICHAIN]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.UNICHAIN_SEPOLIA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.WORLD_CHAIN]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.ZK_SYNC]: "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", - [CHAIN_IDs.ZK_SYNC_SEPOLIA]: "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD", - [CHAIN_IDs.ZORA]: "0x4200000000000000000000000000000000000006", - [CHAIN_IDs.BOB_SEPOLIA]: "0x4200000000000000000000000000000000000006", + "1": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "10": "0x4200000000000000000000000000000000000006", + "56": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + "130": "0x4200000000000000000000000000000000000006", + "137": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + "232": "0xE5ecd226b3032910CEaa43ba92EE8232f8237553", + "288": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", + "300": "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD", + "324": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", + "480": "0x4200000000000000000000000000000000000006", + "690": "0x4200000000000000000000000000000000000006", + "919": "0x4200000000000000000000000000000000000006", + "1135": "0x4200000000000000000000000000000000000006", + "1301": "0x4200000000000000000000000000000000000006", + "1868": "0x4200000000000000000000000000000000000006", + "4202": "0x4200000000000000000000000000000000000006", + "4326": "0x4200000000000000000000000000000000000006", + "8453": "0x4200000000000000000000000000000000000006", + "9745": "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB", + "34443": "0x4200000000000000000000000000000000000006", + "37111": "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16", + "41455": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3", + "42161": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "57073": "0x4200000000000000000000000000000000000006", + "59144": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", + "80002": "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E", + "81457": "0x4300000000000000000000000000000000000004", + "84532": "0x4200000000000000000000000000000000000006", + "421614": "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73", + "534351": "0x5300000000000000000000000000000000000004", + "534352": "0x5300000000000000000000000000000000000004", + "763373": "0x4200000000000000000000000000000000000006", + "808813": "0x4200000000000000000000000000000000000006", + "7777777": "0x4200000000000000000000000000000000000006", + "11155111": "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14", + "11155420": "0x4200000000000000000000000000000000000006", + "168587773": "0x4200000000000000000000000000000000000023", }, coingeckoId: "weth", }, @@ -618,8 +611,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "WGHO", decimals: 18, addresses: { - [CHAIN_IDs.LENS]: "0x6bDc36E20D267Ff0dd6097799f82e78907105e2F", - [CHAIN_IDs.MAINNET]: "0x1ff1dC3cB9eeDbC6Eb2d99C03b30A05cA625fB5a", // Lens Wrapped GHO + "1": "0x1ff1dC3cB9eeDbC6Eb2d99C03b30A05cA625fB5a", + "232": "0x6bDc36E20D267Ff0dd6097799f82e78907105e2F", }, coingeckoId: "gho", }, @@ -628,19 +621,19 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "WGRASS", decimals: 18, addresses: { - [CHAIN_IDs.LENS_SEPOLIA]: "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8", - [CHAIN_IDs.SEPOLIA]: "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df", + "37111": "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8", + "11155111": "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df", }, - coingeckoId: "gho", // GRASS is Sepolia GHO. + coingeckoId: "gho", }, WLD: { name: "Worldcoin", symbol: "WLD", decimals: 18, addresses: { - [CHAIN_IDs.MAINNET]: "0x163f8C2467924be0ae7B5347228CABF260318753", - [CHAIN_IDs.OPTIMISM]: "0xdC6fF44d5d932Cbd77B52E5612Ba0529DC6226F1", - [CHAIN_IDs.WORLD_CHAIN]: "0x2cFc85d8E48F8EAB294be644d9E25C3030863003", + "1": "0x163f8C2467924be0ae7B5347228CABF260318753", + "10": "0xdC6fF44d5d932Cbd77B52E5612Ba0529DC6226F1", + "480": "0x2cFc85d8E48F8EAB294be644d9E25C3030863003", }, coingeckoId: "worldcoin-wld", }, @@ -649,10 +642,10 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "WMATIC", decimals: 18, addresses: { - [CHAIN_IDs.MAINNET]: "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", - [CHAIN_IDs.POLYGON]: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", - [CHAIN_IDs.POLYGON_AMOY]: "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", - [CHAIN_IDs.SEPOLIA]: "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", + "1": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", + "137": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + "80002": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", + "11155111": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", }, coingeckoId: "wmatic", }, @@ -661,20 +654,20 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "WMON", decimals: 18, addresses: { - [CHAIN_IDs.MONAD]: "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A", - [CHAIN_IDs.MONAD_TESTNET]: "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701", + "143": "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A", + "10143": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701", }, - coingeckoId: "monad", // Change this after coingecko adds WMON + coingeckoId: "monad", }, WPOL: { name: "Wrapped Polygon Ecosystem Token", symbol: "WPOL", decimals: 18, addresses: { - [CHAIN_IDs.MAINNET]: "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", - [CHAIN_IDs.POLYGON]: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", - [CHAIN_IDs.POLYGON_AMOY]: "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", - [CHAIN_IDs.SEPOLIA]: "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", + "1": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", + "137": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + "80002": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", + "11155111": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", }, coingeckoId: "wmatic", }, @@ -683,8 +676,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "WSOL", decimals: 9, addresses: { - [CHAIN_IDs.SOLANA]: "So11111111111111111111111111111111111111112", - [CHAIN_IDs.SOLANA_DEVNET]: "So11111111111111111111111111111111111111112", + "34268394551451": "So11111111111111111111111111111111111111112", + "133268194659241": "So11111111111111111111111111111111111111112", }, coingeckoId: "wrapped-solana", }, @@ -693,8 +686,8 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "WXPL", decimals: 18, addresses: { - [CHAIN_IDs.PLASMA]: "0x6100E367285b01F48D07953803A2d8dCA5D19873", - [CHAIN_IDs.PLASMA_TESTNET]: "0x6100E367285b01F48D07953803A2d8dCA5D19873", + "9745": "0x6100E367285b01F48D07953803A2d8dCA5D19873", + "9746": "0x6100E367285b01F48D07953803A2d8dCA5D19873", }, coingeckoId: "plasma", }, @@ -703,34 +696,27 @@ export const TOKEN_SYMBOLS_MAP = { symbol: "XYZ", decimals: 18, addresses: { - [CHAIN_IDs.BASE_SEPOLIA]: "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9", - [CHAIN_IDs.OPTIMISM_SEPOLIA]: "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9", - [CHAIN_IDs.SEPOLIA]: "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9", + "84532": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9", + "11155111": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9", + "11155420": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9", }, - coingeckoId: "xyz", // This is a testnet token only. + coingeckoId: "xyz", }, }; -// Hard-coded mapping of token symbols that should be treated as having equivalent -// prices. The right-hand side should map to a token symbol in TOKEN_SYMBOLS_MAP. export const TOKEN_EQUIVALENCE_REMAPPING: { [symbol: string]: string } = { - [TOKEN_SYMBOLS_MAP.pathUSD.symbol]: TOKEN_SYMBOLS_MAP.USDC.symbol, - [TOKEN_SYMBOLS_MAP.USDH.symbol]: TOKEN_SYMBOLS_MAP.USDC.symbol, - [TOKEN_SYMBOLS_MAP["USDC.e"].symbol]: TOKEN_SYMBOLS_MAP.USDC.symbol, - [TOKEN_SYMBOLS_MAP.USDbC.symbol]: TOKEN_SYMBOLS_MAP.USDC.symbol, - [TOKEN_SYMBOLS_MAP.USDzC.symbol]: TOKEN_SYMBOLS_MAP.USDC.symbol, - [TOKEN_SYMBOLS_MAP.USDB.symbol]: TOKEN_SYMBOLS_MAP.DAI.symbol, - [TOKEN_SYMBOLS_MAP["USDC-BNB"].symbol]: TOKEN_SYMBOLS_MAP.USDC.symbol, - [TOKEN_SYMBOLS_MAP["USDT-BNB"].symbol]: TOKEN_SYMBOLS_MAP.USDT.symbol, - [TOKEN_SYMBOLS_MAP["USDT-SPOT"].symbol]: TOKEN_SYMBOLS_MAP.USDT.symbol, - LGHO: TOKEN_SYMBOLS_MAP.WGHO.symbol, // LGHO is the symbol for WGHO on L1. - // The TOKEN_SYMBOLS_MAP structure assumes that each L2 token address is unique but several mappings - // can share the same L1 token mapping. Therefore this structure lends itself to querying symbols/decimals/name - // for an L1 token directly on-chain and then looking up the L2 data from this mapping. Therefore, its likely to get - // an "ETH" from this mapping but its mapped to a "WETH" on-chain, therefore map the ETH back to the WETH. Same - // with other native / wrapped token pairings like BNB/WBNB, MATIC/WMATIC, LGHO/WGHO, etc. - ETH: TOKEN_SYMBOLS_MAP.WETH.symbol, - BNB: TOKEN_SYMBOLS_MAP.WBNB.symbol, - HYPE: TOKEN_SYMBOLS_MAP.WHYPE.symbol, - XPL: TOKEN_SYMBOLS_MAP.WXPL.symbol, + pathUSD: "USDC", + USDH: "USDC", + "USDC.e": "USDC", + USDbC: "USDC", + USDzC: "USDC", + USDB: "DAI", + "USDC-BNB": "USDC", + "USDT-BNB": "USDT", + "USDT-SPOT": "USDT", + LGHO: "WGHO", + ETH: "WETH", + BNB: "WBNB", + HYPE: "WHYPE", + XPL: "WXPL", }; diff --git a/tsconfig.json b/tsconfig.json index a6cb775..2791108 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,6 +25,8 @@ "jsx": "react", // interop between ESM and CJS modules. Recommended by TS "esModuleInterop": true, + // allow importing generated JSON modules such as the canonical data wrapper + "resolveJsonModule": true, // significant perf increase by skipping checking .d.ts files, particularly those in node_modules. Recommended by TS "skipLibCheck": true, // error out if import and file system have a casing mismatch. Recommended by TS diff --git a/yarn.lock b/yarn.lock index 15ccb59..7684814 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,15 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@apidevtools/json-schema-ref-parser@^11.5.5": + version "11.9.3" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.9.3.tgz#0e0c9061fc41cf03737d499a4e6a8299fdd2bfa7" + integrity sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ== + dependencies: + "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.15" + js-yaml "^4.1.0" + "@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -58,6 +67,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@jsdevtools/ono@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" + integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -96,11 +110,21 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/lodash@^4.17.7": + version "4.17.24" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.24.tgz#4ae334fc62c0e915ca8ed8e35dcc6d4eeb29215f" + integrity sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ== + "@types/semver@^7.5.0": version "7.5.3" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" @@ -211,6 +235,16 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc" + integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -817,6 +851,11 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-uri@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" + integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== + fastq@^1.6.0: version "1.15.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" @@ -824,6 +863,11 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -1253,11 +1297,31 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== +json-schema-to-typescript@^15.0.4: + version "15.0.4" + resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-15.0.4.tgz#a530c7f17312503b262ae12233749732171840f3" + integrity sha512-Su9oK8DR4xCmDsLlyvadkXzX6+GGXJpbhwoLtOGArAG61dvbW4YQmSEno2y66ahpIdmLMg6YUf/QHLgiwvkrHQ== + dependencies: + "@apidevtools/json-schema-ref-parser" "^11.5.5" + "@types/json-schema" "^7.0.15" + "@types/lodash" "^4.17.7" + is-glob "^4.0.3" + js-yaml "^4.1.0" + lodash "^4.17.21" + minimist "^1.2.8" + prettier "^3.2.5" + tinyglobby "^0.2.9" + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -1297,6 +1361,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash@^4.17.21: + version "4.17.23" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a" + integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -1339,7 +1408,7 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -1525,6 +1594,11 @@ picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -1542,6 +1616,11 @@ prettier@^3.0.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== +prettier@^3.2.5: + version "3.8.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.8.1.tgz#edf48977cf991558f4fcbd8a3ba6015ba2a3a173" + integrity sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg== + punycode@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" @@ -1566,6 +1645,11 @@ regexpp@^3.0.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -1761,6 +1845,14 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +tinyglobby@^0.2.9: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + titleize@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" @@ -1864,6 +1956,11 @@ untildify@^4.0.0: resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== +"upstream-legacy-constants@npm:@across-protocol/constants@3.1.102": + version "3.1.102" + resolved "https://registry.yarnpkg.com/@across-protocol/constants/-/constants-3.1.102.tgz#c6482011e528ad5781f1fb2f406d6c9f6acf96e8" + integrity sha512-kmWXZbB0+X4VJ6qjHYL6gy27/Oj1N7aMQXQ/z+2tx5NgLFctb6vLyRJVR1l2auHhHHk63rQQ7vguCNcMbfh4EA== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" From 28d1a26a84e86f513515c2ed817c5d52d7b83bf5 Mon Sep 17 00:00:00 2001 From: Ihor Farion Date: Fri, 20 Mar 2026 19:53:41 -0700 Subject: [PATCH 2/4] a dew polishes Signed-off-by: Ihor Farion --- .eslintrc.cjs | 5 + AGENTS.md | 25 +- MIGRATION_PROGRESS.md | 27 - README.md | 20 +- package.json | 9 +- schema/constants.v1.schema.json | 28 +- scripts/generate-canonical-module.mjs | 14 + scripts/generate-legacy.mjs | 2 - scripts/sync-canonical-json.mjs | 11 - scripts/validate-canonical.mjs | 6 +- src/canonical.ts | 40 +- src/generated/canonical-types.ts | 2 +- src/generated/constants.v1.json | 2444 ------------------------ src/generated/constants.v1.ts | 2447 +++++++++++++++++++++++++ 14 files changed, 2542 insertions(+), 2538 deletions(-) delete mode 100644 MIGRATION_PROGRESS.md create mode 100644 scripts/generate-canonical-module.mjs delete mode 100644 scripts/sync-canonical-json.mjs delete mode 100644 src/generated/constants.v1.json create mode 100644 src/generated/constants.v1.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs index e82ce57..8424b07 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -5,6 +5,11 @@ module.exports = { mocha: true, node: true, }, + settings: { + node: { + version: ">=22.0.0", + }, + }, plugins: ["@typescript-eslint"], extends: ["standard", "plugin:prettier/recommended", "plugin:node/recommended"], parser: "@typescript-eslint/parser", diff --git a/AGENTS.md b/AGENTS.md index 6252b13..2cdd652 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -21,10 +21,11 @@ Update this `AGENTS.md` when the source-of-truth files, generation flow, or publ - Legacy package entry point: `src/index.ts` - Canonical TS wrapper: `src/canonical.ts` - Generated canonical TS types: `src/generated/canonical-types.ts` -- Generated canonical JSON copy for TS import: `src/generated/constants.v1.json` +- Generated canonical TS runtime module: `src/generated/constants.v1.ts` - Generated legacy networks: `src/networks.ts` - Generated legacy tokens: `src/tokens.ts` - Validation script: `scripts/validate-canonical.mjs` +- Canonical runtime generator: `scripts/generate-canonical-module.mjs` - Legacy generator: `scripts/generate-legacy.mjs` - Upstream equivalence check: `scripts/verify-legacy-equivalence.mjs` - Build output: `dist/` @@ -38,13 +39,13 @@ Update this `AGENTS.md` when the source-of-truth files, generation flow, or publ | `data/constants.v1.json` | Canonical source of truth | Chains, networks, tokens, token equivalence mappings | | `schema/constants.v1.schema.json` | Canonical JSON Schema | Structural contract for canonical data | | `src/index.ts` | Barrel re-export | Re-exports legacy `networks` and `tokens` | -| `src/canonical.ts` | Canonical TypeScript wrapper | `CANONICAL_CONSTANTS_V1` and canonical TS type exports | +| `src/canonical.ts` | Canonical TypeScript wrapper | `CONSTANTS_V1` and canonical TS type exports | | `src/generated/canonical-types.ts` | Generated canonical TS types | Schema-derived canonical interfaces and unions | -| `src/generated/constants.v1.json` | Generated canonical JSON copy | Runtime JSON imported by `src/canonical.ts` | +| `src/generated/constants.v1.ts` | Generated canonical TS runtime module | Runtime value backing `src/canonical.ts` | | `src/networks.ts` | Generated legacy chain/network definitions | Legacy chain IDs, enum, network maps | | `src/tokens.ts` | Generated legacy token definitions | Legacy token metadata map and token equivalence remapping | | `scripts/validate-canonical.mjs` | Canonical validation | AJV schema validation plus semantic invariants | -| `scripts/sync-canonical-json.mjs` | Canonical JSON sync | Copies canonical JSON into `src/generated/` | +| `scripts/generate-canonical-module.mjs` | Canonical JSON -> TS runtime generator | Regenerates `src/generated/constants.v1.ts` | | `scripts/generate-legacy.mjs` | Canonical -> legacy TS generator | Regenerates `src/networks.ts` and `src/tokens.ts` | | `scripts/verify-legacy-equivalence.mjs` | Local vs upstream legacy compatibility check | Verifies built root exports match pinned upstream package | @@ -59,14 +60,14 @@ json-constants/ ├── src/ │ ├── canonical.ts │ ├── generated/ -│ │ ├── canonical-types.ts -│ │ └── constants.v1.json +│ │ ├── constants.v1.ts +│ │ └── canonical-types.ts │ ├── index.ts │ ├── networks.ts │ └── tokens.ts ├── scripts/ +│ ├── generate-canonical-module.mjs │ ├── generate-legacy.mjs -│ ├── sync-canonical-json.mjs │ ├── validate-canonical.mjs │ └── verify-legacy-equivalence.mjs ├── dist/ @@ -99,12 +100,18 @@ There are no application tests. The important verification gate is `verify:legac ## Updating constants +For normal constant additions or value changes, edit only `data/constants.v1.json`. + +Update `schema/constants.v1.schema.json` only when the shape changes, for example a new field, a type change, or a new enum value. + +Recommended flow: + 1. Edit `data/constants.v1.json`. -2. Keep the file aligned with `schema/constants.v1.schema.json`. +2. If the shape changed, update `schema/constants.v1.schema.json`. 3. Run `yarn build`. 4. Run `yarn verify:legacy-equivalence`. -Do not edit `src/generated/canonical-types.ts`, `src/generated/constants.v1.json`, `src/networks.ts`, or `src/tokens.ts` by hand. +Do not edit `src/generated/canonical-types.ts`, `src/generated/constants.v1.ts`, `src/networks.ts`, or `src/tokens.ts` by hand. ## Publish process diff --git a/MIGRATION_PROGRESS.md b/MIGRATION_PROGRESS.md deleted file mode 100644 index d4f48b5..0000000 --- a/MIGRATION_PROGRESS.md +++ /dev/null @@ -1,27 +0,0 @@ -# Migration Progress - -## Goal - -Move the repo to a canonical JSON + JSON Schema model while preserving the existing root TypeScript API. - -## Checklist - -- [x] Reset the repo to `1854a7f` to restart the migration cleanly -- [x] Add canonical source data in `data/constants.v1.json` -- [x] Add canonical schema in `schema/constants.v1.schema.json` -- [x] Add `ajv` validation for canonical data -- [x] Generate TypeScript canonical types from schema -- [x] Replace handwritten source-of-truth constants with a canonical wrapper plus a handwritten legacy adapter -- [x] Remove legacy `json/*.json` artifacts and related package wiring -- [x] Add a pinned equivalence check against the published upstream legacy package -- [x] Wire validation and equivalence checks into scripts and CI -- [x] Update `README.md` -- [x] Update `AGENTS.md` -- [x] Run build, lint, and verification successfully - -## Notes - -- The root package entrypoint must remain backward-compatible for existing TypeScript consumers. -- The canonical source of truth should be `data/constants.v1.json`. -- The canonical schema should be `schema/constants.v1.schema.json`. -- Legacy equivalence currently passes against `@across-protocol/constants@3.1.102`. diff --git a/README.md b/README.md index 900f9b0..82aa26b 100644 --- a/README.md +++ b/README.md @@ -37,9 +37,9 @@ console.log(usdc.addresses[1]) Canonical TypeScript surface: ```ts -import { CANONICAL_CONSTANTS_V1 } from "@across-protocol/constants/canonical" +import { CONSTANTS_V1 } from "@across-protocol/constants/canonical" -const mainnet = CANONICAL_CONSTANTS_V1.networks.find((network) => network.chainId === 1) +const mainnet = CONSTANTS_V1.networks.find((network) => network.chainId === 1) console.log(mainnet?.name) ``` @@ -69,15 +69,29 @@ yarn verify:legacy-equivalence ## Updating Constants +Most updates only require editing `data/constants.v1.json`. + +Edit `schema/constants.v1.schema.json` only when the shape changes, for example: + +- adding a new field +- changing a field type +- adding a new enum value +- making a required field optional, or the reverse + +Typical update flow: + 1. Edit `data/constants.v1.json`. -2. Keep it aligned with `schema/constants.v1.schema.json`. +2. If the data shape changed, update `schema/constants.v1.schema.json`. 3. Run `yarn build`. 4. Run `yarn verify:legacy-equivalence`. +Do not edit generated files in `src/generated/`, `src/networks.ts`, or `src/tokens.ts` by hand. + ## Validation And Generation - Canonical JSON is validated with `ajv`. - Canonical TypeScript types are generated from JSON Schema with `json-schema-to-typescript`. +- The canonical TypeScript runtime module is generated from `data/constants.v1.json`. - Legacy TypeScript exports are generated from canonical JSON by `scripts/generate-legacy.mjs`. ## Publishing diff --git a/package.json b/package.json index 04a64d0..7b67d39 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,9 @@ "author": "hello@umaproject.org", "license": "AGPL-3.0-only", "private": false, + "engines": { + "node": ">=22.0.0" + }, "publishConfig": { "registry": "https://registry.npmjs.org/", "access": "public" @@ -27,15 +30,15 @@ "prepare": "yarn build", "build": "yarn run clean && yarn run validate:canonical && yarn run generate && yarn run build:cjs && yarn run build:esm && yarn run build:types && yarn run format:generated", "validate:canonical": "node scripts/validate-canonical.mjs", - "generate": "yarn run generate:canonical-types && yarn run sync:canonical-json && yarn run generate:legacy", + "generate": "yarn run generate:canonical-types && yarn run generate:canonical-module && yarn run generate:legacy", "generate:canonical-types": "json2ts -i schema/constants.v1.schema.json -o src/generated/canonical-types.ts --unknownAny=false", - "sync:canonical-json": "node scripts/sync-canonical-json.mjs", + "generate:canonical-module": "node scripts/generate-canonical-module.mjs", "generate:legacy": "node scripts/generate-legacy.mjs", "build:cjs": "tsc --project tsconfig.json --module commonjs --outDir ./dist/cjs --removeComments --verbatimModuleSyntax false && echo > ./dist/cjs/package.json '{\"type\":\"commonjs\"}'", "build:esm": "tsc --project tsconfig.json --module es2015 --outDir ./dist/esm && echo > ./dist/esm/package.json '{\"type\":\"module\",\"sideEffects\":false}'", "build:types": "tsc --project tsconfig.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap", "verify:legacy-equivalence": "node scripts/verify-legacy-equivalence.mjs", - "format:generated": "prettier --write data/constants.v1.json src/generated/canonical-types.ts src/generated/constants.v1.json src/networks.ts src/tokens.ts", + "format:generated": "prettier --write data/constants.v1.json src/generated/canonical-types.ts src/generated/constants.v1.ts src/networks.ts src/tokens.ts", "clean": "rm -rf ./dist ./src/generated ./src/networks.ts ./src/tokens.ts" }, "devDependencies": { diff --git a/schema/constants.v1.schema.json b/schema/constants.v1.schema.json index fadbf97..b317528 100644 --- a/schema/constants.v1.schema.json +++ b/schema/constants.v1.schema.json @@ -1,7 +1,7 @@ { - "$schema": "https://json-schema.org/draft/2020-12/schema", + "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://github.com/across-protocol/json-constants/schema/constants.v1.schema.json", - "title": "Across Canonical Constants Schema", + "title": "ConstantsV1", "type": "object", "additionalProperties": false, "required": ["schemaVersion", "chains", "networks", "tokens", "tokenEquivalences"], @@ -12,29 +12,29 @@ "chains": { "type": "array", "items": { - "$ref": "#/$defs/chain" + "$ref": "#/definitions/chain" } }, "networks": { "type": "array", "items": { - "$ref": "#/$defs/network" + "$ref": "#/definitions/network" } }, "tokens": { "type": "array", "items": { - "$ref": "#/$defs/token" + "$ref": "#/definitions/token" } }, "tokenEquivalences": { "type": "array", "items": { - "$ref": "#/$defs/tokenEquivalence" + "$ref": "#/definitions/tokenEquivalence" } } }, - "$defs": { + "definitions": { "chainGroup": { "type": "string", "enum": ["mainnet", "testnet", "testnet_sepolia"] @@ -65,7 +65,7 @@ "groups": { "type": "array", "items": { - "$ref": "#/$defs/chainGroup" + "$ref": "#/definitions/chainGroup" } } } @@ -94,7 +94,7 @@ "minLength": 1 }, "family": { - "$ref": "#/$defs/chainFamily" + "$ref": "#/definitions/chainFamily" }, "nativeToken": { "type": "string", @@ -107,18 +107,18 @@ "type": "string" }, "cctpDomain": { - "$ref": "#/$defs/nullableInteger" + "$ref": "#/definitions/nullableInteger" }, "oftEid": { - "$ref": "#/$defs/nullableInteger" + "$ref": "#/definitions/nullableInteger" }, "hypDomainId": { - "$ref": "#/$defs/nullableInteger" + "$ref": "#/definitions/nullableInteger" }, "groups": { "type": "array", "items": { - "$ref": "#/$defs/networkGroup" + "$ref": "#/definitions/networkGroup" } } } @@ -163,7 +163,7 @@ "addresses": { "type": "array", "items": { - "$ref": "#/$defs/tokenAddress" + "$ref": "#/definitions/tokenAddress" } } } diff --git a/scripts/generate-canonical-module.mjs b/scripts/generate-canonical-module.mjs new file mode 100644 index 0000000..ec6e328 --- /dev/null +++ b/scripts/generate-canonical-module.mjs @@ -0,0 +1,14 @@ +import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; + +const canonical = JSON.parse(readFileSync(new URL("../data/constants.v1.json", import.meta.url), "utf8")); + +const moduleSource = `// This file is generated by scripts/generate-canonical-module.mjs. Do not edit by hand. +const constantsV1 = ${JSON.stringify(canonical, null, 2)}; + +export default constantsV1; +`; + +mkdirSync(new URL("../src/generated", import.meta.url), { recursive: true }); +writeFileSync(new URL("../src/generated/constants.v1.ts", import.meta.url), moduleSource); + +console.log("Generated src/generated/constants.v1.ts from canonical data."); diff --git a/scripts/generate-legacy.mjs b/scripts/generate-legacy.mjs index 40750a3..3c01d8f 100644 --- a/scripts/generate-legacy.mjs +++ b/scripts/generate-legacy.mjs @@ -1,5 +1,3 @@ -/* eslint-disable node/no-unsupported-features/es-builtins, node/no-unsupported-features/node-builtins */ - import { readFileSync, writeFileSync } from "node:fs"; const canonical = JSON.parse(readFileSync(new URL("../data/constants.v1.json", import.meta.url), "utf8")); diff --git a/scripts/sync-canonical-json.mjs b/scripts/sync-canonical-json.mjs deleted file mode 100644 index 9a110e1..0000000 --- a/scripts/sync-canonical-json.mjs +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable node/no-unsupported-features/node-builtins */ - -import { copyFileSync, mkdirSync } from "node:fs"; - -mkdirSync(new URL("../src/generated", import.meta.url), { recursive: true }); -copyFileSync( - new URL("../data/constants.v1.json", import.meta.url), - new URL("../src/generated/constants.v1.json", import.meta.url), -); - -console.log("Copied data/constants.v1.json to src/generated/constants.v1.json"); diff --git a/scripts/validate-canonical.mjs b/scripts/validate-canonical.mjs index 0b7b19e..31bf215 100644 --- a/scripts/validate-canonical.mjs +++ b/scripts/validate-canonical.mjs @@ -1,13 +1,11 @@ -/* eslint-disable node/no-unsupported-features/node-builtins */ - import { readFileSync } from "node:fs"; -import Ajv2020 from "ajv/dist/2020.js"; +import Ajv from "ajv"; const schema = JSON.parse(readFileSync(new URL("../schema/constants.v1.schema.json", import.meta.url), "utf8")); const data = JSON.parse(readFileSync(new URL("../data/constants.v1.json", import.meta.url), "utf8")); -const ajv = new Ajv2020({ +const ajv = new Ajv({ allErrors: true, strict: true, }); diff --git a/src/canonical.ts b/src/canonical.ts index 0c9ae7a..7680482 100644 --- a/src/canonical.ts +++ b/src/canonical.ts @@ -1,27 +1,27 @@ -import canonicalConstantsV1 from "./generated/constants.v1.json"; +import constantsV1 from "./generated/constants.v1.js"; import type { - AcrossCanonicalConstantsSchema as CanonicalConstantsV1, - Chain as CanonicalChain, - ChainFamily as CanonicalChainFamily, - ChainGroup as CanonicalChainGroup, - Network as CanonicalNetwork, - NetworkGroup as CanonicalNetworkGroup, - Token as CanonicalToken, - TokenAddress as CanonicalTokenAddress, - TokenEquivalence as CanonicalTokenEquivalence, + Chain, + ChainFamily, + ChainGroup, + ConstantsV1, + Network, + NetworkGroup, + Token, + TokenAddress, + TokenEquivalence, } from "./generated/canonical-types"; export type { - CanonicalChain, - CanonicalChainFamily, - CanonicalChainGroup, - CanonicalConstantsV1, - CanonicalNetwork, - CanonicalNetworkGroup, - CanonicalToken, - CanonicalTokenAddress, - CanonicalTokenEquivalence, + Chain, + ChainFamily, + ChainGroup, + ConstantsV1, + Network, + NetworkGroup, + Token, + TokenAddress, + TokenEquivalence, }; -export const CANONICAL_CONSTANTS_V1 = canonicalConstantsV1 as CanonicalConstantsV1; +export const CONSTANTS_V1 = constantsV1 as ConstantsV1; diff --git a/src/generated/canonical-types.ts b/src/generated/canonical-types.ts index e22d948..b2dfd2a 100644 --- a/src/generated/canonical-types.ts +++ b/src/generated/canonical-types.ts @@ -10,7 +10,7 @@ export type ChainFamily = "none" | "op_stack" | "orbit" | "zk_stack" | "svm"; export type NullableInteger = number | null; export type NetworkGroup = "production" | "test"; -export interface AcrossCanonicalConstantsSchema { +export interface ConstantsV1 { schemaVersion: 1; chains: Chain[]; networks: Network[]; diff --git a/src/generated/constants.v1.json b/src/generated/constants.v1.json deleted file mode 100644 index 003d9f2..0000000 --- a/src/generated/constants.v1.json +++ /dev/null @@ -1,2444 +0,0 @@ -{ - "schemaVersion": 1, - "chains": [ - { - "key": "ALEPH_ZERO", - "chainId": 41455, - "groups": ["mainnet"] - }, - { - "key": "ARBITRUM", - "chainId": 42161, - "groups": ["mainnet"] - }, - { - "key": "BASE", - "chainId": 8453, - "groups": ["mainnet"] - }, - { - "key": "BLAST", - "chainId": 81457, - "groups": ["mainnet"] - }, - { - "key": "BOB", - "chainId": 60808, - "groups": ["mainnet"] - }, - { - "key": "BSC", - "chainId": 56, - "groups": ["mainnet"] - }, - { - "key": "BOBA", - "chainId": 288, - "groups": ["mainnet"] - }, - { - "key": "HYPEREVM", - "chainId": 999, - "groups": ["mainnet"] - }, - { - "key": "HYPERCORE", - "chainId": 1337, - "groups": ["mainnet"] - }, - { - "key": "INK", - "chainId": 57073, - "groups": ["mainnet"] - }, - { - "key": "LENS", - "chainId": 232, - "groups": ["mainnet"] - }, - { - "key": "LIGHTER", - "chainId": 2337, - "groups": ["mainnet"] - }, - { - "key": "LINEA", - "chainId": 59144, - "groups": ["mainnet"] - }, - { - "key": "LISK", - "chainId": 1135, - "groups": ["mainnet"] - }, - { - "key": "MAINNET", - "chainId": 1, - "groups": ["mainnet"] - }, - { - "key": "MEGAETH", - "chainId": 4326, - "groups": ["mainnet"] - }, - { - "key": "MODE", - "chainId": 34443, - "groups": ["mainnet"] - }, - { - "key": "MONAD", - "chainId": 143, - "groups": ["mainnet"] - }, - { - "key": "OPTIMISM", - "chainId": 10, - "groups": ["mainnet"] - }, - { - "key": "PLASMA", - "chainId": 9745, - "groups": ["mainnet"] - }, - { - "key": "POLYGON", - "chainId": 137, - "groups": ["mainnet"] - }, - { - "key": "REDSTONE", - "chainId": 690, - "groups": ["mainnet"] - }, - { - "key": "SCROLL", - "chainId": 534352, - "groups": ["mainnet"] - }, - { - "key": "SONEIUM", - "chainId": 1868, - "groups": ["mainnet"] - }, - { - "key": "SUPERSEED", - "chainId": 5330, - "groups": ["mainnet"] - }, - { - "key": "TEMPO", - "chainId": 4217, - "groups": ["mainnet"] - }, - { - "key": "UNICHAIN", - "chainId": 130, - "groups": ["mainnet"] - }, - { - "key": "WORLD_CHAIN", - "chainId": 480, - "groups": ["mainnet"] - }, - { - "key": "ZK_SYNC", - "chainId": 324, - "groups": ["mainnet"] - }, - { - "key": "ZORA", - "chainId": 7777777, - "groups": ["mainnet"] - }, - { - "key": "SOLANA", - "chainId": 34268394551451, - "groups": ["mainnet"] - }, - { - "key": "ARBITRUM_SEPOLIA", - "chainId": 421614, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "BASE_SEPOLIA", - "chainId": 84532, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "BLAST_SEPOLIA", - "chainId": 168587773, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "BOB_SEPOLIA", - "chainId": 808813, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "HYPEREVM_TESTNET", - "chainId": 998, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "INK_SEPOLIA", - "chainId": 763373, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "TATARA", - "chainId": 129399, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "LENS_SEPOLIA", - "chainId": 37111, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "LISK_SEPOLIA", - "chainId": 4202, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "MODE_SEPOLIA", - "chainId": 919, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "MONAD_TESTNET", - "chainId": 10143, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "OPTIMISM_SEPOLIA", - "chainId": 11155420, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "PLASMA_TESTNET", - "chainId": 9746, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "POLYGON_AMOY", - "chainId": 80002, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "SCROLL_SEPOLIA", - "chainId": 534351, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "SEPOLIA", - "chainId": 11155111, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "UNICHAIN_SEPOLIA", - "chainId": 1301, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "ZK_SYNC_SEPOLIA", - "chainId": 300, - "groups": ["testnet", "testnet_sepolia"] - }, - { - "key": "SOLANA_DEVNET", - "chainId": 133268194659241, - "groups": ["testnet"] - } - ], - "networks": [ - { - "chainId": 41455, - "name": "Aleph Zero", - "family": "orbit", - "nativeToken": "AZERO", - "publicRpc": "https://rpc.alephzero.raas.gelato.cloud", - "blockExplorer": "https://evm-explorer.alephzero.org", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 42161, - "name": "Arbitrum One", - "family": "none", - "nativeToken": "ETH", - "publicRpc": "https://arb1.arbitrum.io/rpc", - "blockExplorer": "https://arbiscan.io", - "cctpDomain": 3, - "oftEid": 30110, - "hypDomainId": 42161, - "groups": ["production"] - }, - { - "chainId": 8453, - "name": "Base", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://mainnet.base.org", - "blockExplorer": "https://basescan.org", - "cctpDomain": 6, - "oftEid": 30184, - "hypDomainId": 8453, - "groups": ["production"] - }, - { - "chainId": 81457, - "name": "Blast", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://rpc.blast.io", - "blockExplorer": "https://blastscan.io", - "cctpDomain": null, - "oftEid": 30243, - "hypDomainId": 81457, - "groups": ["production"] - }, - { - "chainId": 56, - "name": "BNB Smart Chain", - "family": "none", - "nativeToken": "BNB", - "publicRpc": "https://bsc-dataseed1.binance.org", - "blockExplorer": "https://bscscan.com", - "cctpDomain": null, - "oftEid": 30102, - "hypDomainId": 56, - "groups": ["production"] - }, - { - "chainId": 288, - "name": "Boba", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://mainnet.boba.network", - "blockExplorer": "https://blockexplorer.boba.network", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 999, - "name": "HyperEVM", - "family": "none", - "nativeToken": "HYPE", - "publicRpc": "https://rpc.hyperliquid.xyz/evm", - "blockExplorer": "https://hyperevmscan.io/", - "cctpDomain": 19, - "oftEid": 30367, - "hypDomainId": 999, - "groups": ["production"] - }, - { - "chainId": 1337, - "name": "HyperCore", - "family": "none", - "nativeToken": "HYPE", - "publicRpc": "https://api.hyperliquid.xyz", - "blockExplorer": "https://app.hyperliquid.xyz/explorer", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 57073, - "name": "Ink", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://rpc-gel.inkonchain.com", - "blockExplorer": "https://explorer.inkonchain.com", - "cctpDomain": 21, - "oftEid": 30339, - "hypDomainId": 57073, - "groups": ["production"] - }, - { - "chainId": 232, - "name": "Lens", - "family": "zk_stack", - "nativeToken": "WGHO", - "publicRpc": "https://api.lens.matterhosted.dev", - "blockExplorer": "https://explorer.lens.xyz", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 2337, - "name": "Lighter", - "family": "none", - "nativeToken": "LIT", - "publicRpc": "https://mainnet.zklighter.elliot.ai", - "blockExplorer": "https://app.lighter.xyz/explorer", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 59144, - "name": "Linea", - "family": "none", - "nativeToken": "ETH", - "publicRpc": "https://rpc.linea.build", - "blockExplorer": "https://lineascan.build", - "cctpDomain": 11, - "oftEid": null, - "hypDomainId": 59144, - "groups": ["production"] - }, - { - "chainId": 1135, - "name": "Lisk", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://rpc.api.lisk.com", - "blockExplorer": "https://blockscout.lisk.com", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 1, - "name": "Mainnet", - "family": "none", - "nativeToken": "ETH", - "publicRpc": "https://eth.llamarpc.com", - "blockExplorer": "https://etherscan.io", - "cctpDomain": 0, - "oftEid": 30101, - "hypDomainId": 1, - "groups": ["production"] - }, - { - "chainId": 4326, - "name": "MegaETH", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://mainnet.megaeth.com/rpc", - "blockExplorer": "https://megaeth.blockscout.com", - "cctpDomain": null, - "oftEid": 30398, - "hypDomainId": 4326, - "groups": ["production"] - }, - { - "chainId": 34443, - "name": "Mode", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://mainnet.mode.network", - "blockExplorer": "https://explorer.mode.network", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": 34443, - "groups": ["production"] - }, - { - "chainId": 143, - "name": "Monad", - "family": "none", - "nativeToken": "MON", - "publicRpc": "https://rpc-mainnet.monadinfra.com", - "blockExplorer": "https://monadvision.com", - "cctpDomain": 15, - "oftEid": 30390, - "hypDomainId": 143, - "groups": ["production"] - }, - { - "chainId": 10, - "name": "Optimism", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://mainnet.optimism.io", - "blockExplorer": "https://optimistic.etherscan.io", - "cctpDomain": 2, - "oftEid": 30111, - "hypDomainId": 10, - "groups": ["production"] - }, - { - "chainId": 9745, - "name": "Plasma", - "family": "none", - "nativeToken": "XPL", - "publicRpc": "https://rpc.plasma.to", - "blockExplorer": "https://plasmascan.to", - "cctpDomain": null, - "oftEid": 30383, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 137, - "name": "Polygon", - "family": "none", - "nativeToken": "POL", - "publicRpc": "https://polygon-rpc.com", - "blockExplorer": "https://polygonscan.com", - "cctpDomain": 7, - "oftEid": 30109, - "hypDomainId": 137, - "groups": ["production"] - }, - { - "chainId": 690, - "name": "Redstone", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://rpc.redstonechain.com", - "blockExplorer": "https://explorer.redstone.xyz", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": 690, - "groups": ["production"] - }, - { - "chainId": 534352, - "name": "Scroll", - "family": "none", - "nativeToken": "ETH", - "publicRpc": "https://rpc.scroll.io", - "blockExplorer": "https://scrollscan.com", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 1868, - "name": "Soneium", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://rpc.soneium.org", - "blockExplorer": "https://soneium.blockscout.com", - "cctpDomain": null, - "oftEid": 30340, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 5330, - "name": "Superseed", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://mainnet.superseed.xyz", - "blockExplorer": "", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 4217, - "name": "Tempo", - "family": "none", - "nativeToken": "pathUSD", - "publicRpc": "https://rpc.tempo.xyz", - "blockExplorer": "https://explore.mainnet.tempo.xyz", - "cctpDomain": null, - "oftEid": 30410, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 130, - "name": "Unichain", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://mainnet.unichain.org/", - "blockExplorer": "https://uniscan.xyz", - "cctpDomain": 10, - "oftEid": 30320, - "hypDomainId": 130, - "groups": ["production"] - }, - { - "chainId": 480, - "name": "World Chain", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://worldchain-mainnet.g.alchemy.com/public", - "blockExplorer": "https://worldchain-mainnet-explorer.alchemy.com", - "cctpDomain": 14, - "oftEid": 30319, - "hypDomainId": 480, - "groups": ["production"] - }, - { - "chainId": 324, - "name": "zkSync", - "family": "none", - "nativeToken": "ETH", - "publicRpc": "https://mainnet.era.zksync.io", - "blockExplorer": "https://explorer.zksync.io", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": 324, - "groups": ["production"] - }, - { - "chainId": 7777777, - "name": "Zora", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://rpc.zora.energy", - "blockExplorer": "https://zorascan.xyz", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 34268394551451, - "name": "Solana", - "family": "svm", - "nativeToken": "SOL", - "publicRpc": "https://api.mainnet-beta.solana.com", - "blockExplorer": "https://solscan.io", - "cctpDomain": 5, - "oftEid": 30168, - "hypDomainId": 1399811149, - "groups": ["production"] - }, - { - "chainId": 421614, - "name": "Arbitrum Sepolia", - "family": "none", - "nativeToken": "ETH", - "publicRpc": "https://sepolia-rollup.arbitrum.io/rpc", - "blockExplorer": "https://sepolia.arbiscan.io", - "cctpDomain": 3, - "oftEid": 40231, - "hypDomainId": 421614, - "groups": ["test"] - }, - { - "chainId": 84532, - "name": "Base Sepolia", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://sepolia.base.org", - "blockExplorer": "https://sepolia.basescan.org", - "cctpDomain": 6, - "oftEid": 40245, - "hypDomainId": 84532, - "groups": ["test"] - }, - { - "chainId": 168587773, - "name": "Blast Sepolia", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://sepolia.blast.io", - "blockExplorer": "https://sepolia.blastscan.io", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": 168587773, - "groups": ["test"] - }, - { - "chainId": 808813, - "name": "BOB Sepolia", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://bob-sepolia.rpc.gobob.xyz", - "blockExplorer": "https://bob-sepolia.explorer.gobob.xyz", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["test"] - }, - { - "chainId": 998, - "name": "HyperEVM Testnet", - "family": "none", - "nativeToken": "HYPE", - "publicRpc": "https://rpc.hyperliquid-testnet.xyz/evm", - "blockExplorer": "https://testnet.purrsec.com/", - "cctpDomain": 19, - "oftEid": 40362, - "hypDomainId": 998, - "groups": ["test"] - }, - { - "chainId": 129399, - "name": "Tatara", - "family": "none", - "nativeToken": "ETH", - "publicRpc": "", - "blockExplorer": "", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["production"] - }, - { - "chainId": 37111, - "name": "Lens Sepolia", - "family": "zk_stack", - "nativeToken": "GRASS", - "publicRpc": "https://rpc.testnet.lens.dev", - "blockExplorer": "https://block-explorer.testnet.lens.dev", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["test"] - }, - { - "chainId": 4202, - "name": "Lisk Sepolia", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://rpc.sepolia-api.lisk.com", - "blockExplorer": "https://sepolia-blockscout.lisk.com", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["test"] - }, - { - "chainId": 919, - "name": "Mode Sepolia", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://sepolia.mode.network", - "blockExplorer": "https://sepolia.explorer.mode.network", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": 919, - "groups": ["test"] - }, - { - "chainId": 10143, - "name": "Monad Testnet", - "family": "none", - "nativeToken": "MON", - "publicRpc": "https://testnet-rpc.monad.xyz", - "blockExplorer": "https://testnet.monvision.io", - "cctpDomain": 15, - "oftEid": 40204, - "hypDomainId": 10143, - "groups": ["test"] - }, - { - "chainId": 11155420, - "name": "Optimism Sepolia", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://sepolia.optimism.io", - "blockExplorer": "https://sepolia-optimism.etherscan.io", - "cctpDomain": 2, - "oftEid": 40232, - "hypDomainId": 11155420, - "groups": ["test"] - }, - { - "chainId": 9746, - "name": "Plasma Testnet", - "family": "none", - "nativeToken": "XPL", - "publicRpc": "https://testnet-rpc.plasma.to/", - "blockExplorer": "https://testnet.plasmascan.to/", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["test"] - }, - { - "chainId": 80002, - "name": "Polygon Amoy", - "family": "none", - "nativeToken": "POL", - "publicRpc": "https://rpc-amoy.polygon.technology", - "blockExplorer": "https://amoy.polygonscan.com", - "cctpDomain": 7, - "oftEid": 40267, - "hypDomainId": 80002, - "groups": ["test"] - }, - { - "chainId": 534351, - "name": "Scroll Sepolia", - "family": "none", - "nativeToken": "ETH", - "publicRpc": "https://sepolia-rpc.scroll.io", - "blockExplorer": "https://sepolia.scrollscan.com", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": null, - "groups": ["test"] - }, - { - "chainId": 11155111, - "name": "Sepolia", - "family": "none", - "nativeToken": "ETH", - "publicRpc": "https://sepolia.drpc.org", - "blockExplorer": "https://sepolia.etherscan.io", - "cctpDomain": 0, - "oftEid": 40161, - "hypDomainId": 11155111, - "groups": ["test"] - }, - { - "chainId": 1301, - "name": "Unichain Sepolia", - "family": "op_stack", - "nativeToken": "ETH", - "publicRpc": "https://sepolia.unichain.org", - "blockExplorer": "https://sepolia.uniscan.xyz", - "cctpDomain": 10, - "oftEid": 40333, - "hypDomainId": 1301, - "groups": ["test"] - }, - { - "chainId": 300, - "name": "zkSync Sepolia", - "family": "none", - "nativeToken": "ETH", - "publicRpc": "https://sepolia.era.zksync.dev", - "blockExplorer": "https://sepolia-era.zksync.network", - "cctpDomain": null, - "oftEid": null, - "hypDomainId": 300, - "groups": ["test"] - }, - { - "chainId": 133268194659241, - "name": "Solana Devnet", - "family": "svm", - "nativeToken": "SOL", - "publicRpc": "https://api.devnet.solana.com", - "blockExplorer": "https://explorer.solana.com/?cluster=devnet", - "cctpDomain": 5, - "oftEid": 40168, - "hypDomainId": 1399811151, - "groups": ["test"] - } - ], - "tokens": [ - { - "name": "Across Protocol Token", - "symbol": "ACX", - "decimals": 18, - "coingeckoId": "across-protocol", - "addresses": [ - { - "chainId": 1, - "address": "0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F" - }, - { - "chainId": 10, - "address": "0xFf733b2A3557a7ed6697007ab5D11B79FdD1b76B" - }, - { - "chainId": 137, - "address": "0xF328b73B6c685831F238c30a23Fc19140CB4D8FC" - }, - { - "chainId": 288, - "address": "0x96821b258955587069F680729cD77369C0892B40" - }, - { - "chainId": 42161, - "address": "0x53691596d1BCe8CEa565b84d4915e69e03d9C99d" - }, - { - "chainId": 11155111, - "address": "0x49fCaC04AE71dbD074304Fb12071bD771e0E927A" - } - ] - }, - { - "name": "Arbitrum", - "symbol": "ARB", - "decimals": 18, - "coingeckoId": "arbitrum", - "addresses": [ - { - "chainId": 1, - "address": "0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1" - }, - { - "chainId": 42161, - "address": "0x912CE59144191C1204E64559FE8253a0e49E6548" - } - ] - }, - { - "name": "Aleph Zero", - "symbol": "AZERO", - "decimals": 18, - "coingeckoId": "aleph-zero", - "addresses": [ - { - "chainId": 1, - "address": "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe" - }, - { - "chainId": 41455, - "address": "0xb7Da55D7040ef9C887e20374D76A88F93A59119E" - } - ] - }, - { - "name": "Badger", - "symbol": "BADGER", - "decimals": 18, - "coingeckoId": "badger-dao", - "addresses": [ - { - "chainId": 1, - "address": "0x3472A5A71965499acd81997a54BBA8D852C6E53d" - }, - { - "chainId": 137, - "address": "0x1FcbE5937B0cc2adf69772D228fA4205aCF4D9b2" - }, - { - "chainId": 42161, - "address": "0xBfa641051Ba0a0Ad1b0AcF549a89536A0D76472E" - } - ] - }, - { - "name": "Balancer", - "symbol": "BAL", - "decimals": 18, - "coingeckoId": "balancer", - "addresses": [ - { - "chainId": 1, - "address": "0xba100000625a3754423978a60c9317c58a424e3D" - }, - { - "chainId": 10, - "address": "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921" - }, - { - "chainId": 137, - "address": "0x9a71012B13CA4d3D0Cdc72A177DF3ef03b0E76A3" - }, - { - "chainId": 8453, - "address": "0x4158734D47Fc9692176B5085E0F52ee0Da5d47F1" - }, - { - "chainId": 42161, - "address": "0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8" - }, - { - "chainId": 59144, - "address": "0x660edb0A46c3f69be9eFF5446318593b9469F9e2" - } - ] - }, - { - "name": "BNB", - "symbol": "BNB", - "decimals": 18, - "coingeckoId": "binancecoin", - "addresses": [ - { - "chainId": 1, - "address": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52" - }, - { - "chainId": 56, - "address": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c" - } - ] - }, - { - "name": "Boba", - "symbol": "BOBA", - "decimals": 18, - "coingeckoId": "boba-network", - "addresses": [ - { - "chainId": 1, - "address": "0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc" - }, - { - "chainId": 288, - "address": "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7" - } - ] - }, - { - "name": "PancakeSwap Token", - "symbol": "CAKE", - "decimals": 18, - "coingeckoId": "pancakeswap-token", - "addresses": [ - { - "chainId": 1, - "address": "0x152649eA73beAb28c5b49B26eb48f7EAD6d4c898" - }, - { - "chainId": 56, - "address": "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82" - } - ] - }, - { - "name": "Dai Stablecoin", - "symbol": "DAI", - "decimals": 18, - "coingeckoId": "dai", - "addresses": [ - { - "chainId": 1, - "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F" - }, - { - "chainId": 10, - "address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" - }, - { - "chainId": 137, - "address": "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063" - }, - { - "chainId": 288, - "address": "0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35" - }, - { - "chainId": 324, - "address": "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656" - }, - { - "chainId": 8453, - "address": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb" - }, - { - "chainId": 42161, - "address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" - }, - { - "chainId": 59144, - "address": "0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5" - } - ] - }, - { - "name": "Ether", - "symbol": "ETH", - "decimals": 18, - "coingeckoId": "ethereum", - "addresses": [ - { - "chainId": 1, - "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" - }, - { - "chainId": 10, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 56, - "address": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8" - }, - { - "chainId": 130, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 137, - "address": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619" - }, - { - "chainId": 232, - "address": "0xE5ecd226b3032910CEaa43ba92EE8232f8237553" - }, - { - "chainId": 288, - "address": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000" - }, - { - "chainId": 300, - "address": "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD" - }, - { - "chainId": 324, - "address": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91" - }, - { - "chainId": 480, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 690, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 919, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 1135, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 1301, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 1868, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 4202, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 4326, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 8453, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 9745, - "address": "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB" - }, - { - "chainId": 34443, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 37111, - "address": "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16" - }, - { - "chainId": 41455, - "address": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3" - }, - { - "chainId": 42161, - "address": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" - }, - { - "chainId": 57073, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 59144, - "address": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f" - }, - { - "chainId": 60808, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 80002, - "address": "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E" - }, - { - "chainId": 81457, - "address": "0x4300000000000000000000000000000000000004" - }, - { - "chainId": 84532, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 421614, - "address": "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73" - }, - { - "chainId": 534351, - "address": "0x5300000000000000000000000000000000000004" - }, - { - "chainId": 534352, - "address": "0x5300000000000000000000000000000000000004" - }, - { - "chainId": 763373, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 808813, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 7777777, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 11155111, - "address": "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14" - }, - { - "chainId": 11155420, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 168587773, - "address": "0x4200000000000000000000000000000000000023" - } - ] - }, - { - "name": "Renzo Restaked ETH", - "symbol": "ezETH", - "decimals": 18, - "coingeckoId": "renzo-restaked-eth", - "addresses": [ - { - "chainId": 1, - "address": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110" - }, - { - "chainId": 10, - "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" - }, - { - "chainId": 56, - "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" - }, - { - "chainId": 130, - "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" - }, - { - "chainId": 480, - "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" - }, - { - "chainId": 8453, - "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" - }, - { - "chainId": 34443, - "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" - }, - { - "chainId": 42161, - "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" - }, - { - "chainId": 59144, - "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" - }, - { - "chainId": 81457, - "address": "0x2416092f143378750bb29b79eD961ab195CcEea5" - } - ] - }, - { - "name": "Gho Token", - "symbol": "GHO", - "decimals": 18, - "coingeckoId": "gho", - "addresses": [ - { - "chainId": 1, - "address": "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f" - }, - { - "chainId": 232, - "address": "0x000000000000000000000000000000000000800A" - }, - { - "chainId": 84532, - "address": "0x7CFa3f3d1cded0Da930881c609D4Dbf0012c14Bb" - }, - { - "chainId": 421614, - "address": "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810" - }, - { - "chainId": 11155111, - "address": "0xc4bF5CbDaBE595361438F8c6a187bDc330539c60" - }, - { - "chainId": 11155420, - "address": "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810" - } - ] - }, - { - "name": "Grass", - "symbol": "GRASS", - "decimals": 18, - "coingeckoId": "gho", - "addresses": [ - { - "chainId": 37111, - "address": "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8" - }, - { - "chainId": 11155111, - "address": "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df" - } - ] - }, - { - "name": "Hyperliquid", - "symbol": "HYPE", - "decimals": 18, - "coingeckoId": "hyperliquid", - "addresses": [ - { - "chainId": 998, - "address": "0x5555555555555555555555555555555555555555" - }, - { - "chainId": 999, - "address": "0x5555555555555555555555555555555555555555" - } - ] - }, - { - "name": "Wrapped Hyperliquid", - "symbol": "WHYPE", - "decimals": 18, - "coingeckoId": "hyperliquid", - "addresses": [ - { - "chainId": 998, - "address": "0x5555555555555555555555555555555555555555" - }, - { - "chainId": 999, - "address": "0x5555555555555555555555555555555555555555" - } - ] - }, - { - "name": "Lisk", - "symbol": "LSK", - "decimals": 18, - "coingeckoId": "lisk", - "addresses": [ - { - "chainId": 1, - "address": "0x6033F7f88332B8db6ad452B7C6D5bB643990aE3f" - }, - { - "chainId": 1135, - "address": "0xac485391EB2d7D88253a7F1eF18C37f4242D1A24" - } - ] - }, - { - "name": "Matic", - "symbol": "MATIC", - "decimals": 18, - "coingeckoId": "polygon-ecosystem-token", - "addresses": [ - { - "chainId": 1, - "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" - }, - { - "chainId": 80002, - "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" - }, - { - "chainId": 11155111, - "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" - } - ] - }, - { - "name": "Monad", - "symbol": "MON", - "decimals": 18, - "coingeckoId": "monad", - "addresses": [ - { - "chainId": 143, - "address": "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A" - }, - { - "chainId": 10143, - "address": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701" - } - ] - }, - { - "name": "Optimism", - "symbol": "OP", - "decimals": 18, - "coingeckoId": "optimism", - "addresses": [ - { - "chainId": 10, - "address": "0x4200000000000000000000000000000000000042" - } - ] - }, - { - "name": "Polygon Ecosystem Token", - "symbol": "POL", - "decimals": 18, - "coingeckoId": "polygon-ecosystem-token", - "addresses": [ - { - "chainId": 1, - "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" - }, - { - "chainId": 80002, - "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" - }, - { - "chainId": 11155111, - "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" - } - ] - }, - { - "name": "PoolTogether", - "symbol": "POOL", - "decimals": 18, - "coingeckoId": "pooltogether", - "addresses": [ - { - "chainId": 1, - "address": "0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e" - }, - { - "chainId": 10, - "address": "0x395Ae52bB17aef68C2888d941736A71dC6d4e125" - }, - { - "chainId": 137, - "address": "0x25788a1a171ec66Da6502f9975a15B609fF54CF6" - }, - { - "chainId": 480, - "address": "0x7077C71B4AF70737a08287E279B717Dcf64fdC57" - }, - { - "chainId": 8453, - "address": "0xd652C5425aea2Afd5fb142e120FeCf79e18fafc3" - }, - { - "chainId": 42161, - "address": "0xCF934E2402A5e072928a39a956964eb8F2B5B79C" - }, - { - "chainId": 534352, - "address": "0xF9Af83FC41e0cc2af2fba93644D542Df6eA0F2b7" - } - ] - }, - { - "name": "pathUSD", - "symbol": "pathUSD", - "decimals": 6, - "coingeckoId": "pathusd", - "addresses": [ - { - "chainId": 4217, - "address": "0x20C0000000000000000000000000000000000000" - } - ] - }, - { - "name": "Synthetix", - "symbol": "SNX", - "decimals": 18, - "coingeckoId": "havven", - "addresses": [ - { - "chainId": 1, - "address": "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F" - }, - { - "chainId": 10, - "address": "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4" - } - ] - }, - { - "name": "Solana", - "symbol": "SOL", - "decimals": 9, - "coingeckoId": "solana", - "addresses": [ - { - "chainId": 34268394551451, - "address": "So11111111111111111111111111111111111111112" - }, - { - "chainId": 133268194659241, - "address": "So11111111111111111111111111111111111111112" - } - ] - }, - { - "name": "UMA Voting Token", - "symbol": "UMA", - "decimals": 18, - "coingeckoId": "uma", - "addresses": [ - { - "chainId": 1, - "address": "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828" - }, - { - "chainId": 10, - "address": "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea" - }, - { - "chainId": 137, - "address": "0x3066818837c5e6eD6601bd5a91B0762877A6B731" - }, - { - "chainId": 288, - "address": "0x780f33Ad21314d9A1Ffb6867Fe53d48a76Ec0D16" - }, - { - "chainId": 42161, - "address": "0xd693Ec944A85eeca4247eC1c3b130DCa9B0C3b22" - } - ] - }, - { - "name": "USDB", - "symbol": "USDB", - "decimals": 18, - "coingeckoId": "usdb", - "addresses": [ - { - "chainId": 1, - "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F" - }, - { - "chainId": 81457, - "address": "0x4300000000000000000000000000000000000003" - } - ] - }, - { - "name": "USD Coin", - "symbol": "USDC", - "decimals": 6, - "coingeckoId": "usd-coin", - "addresses": [ - { - "chainId": 1, - "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" - }, - { - "chainId": 10, - "address": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85" - }, - { - "chainId": 130, - "address": "0x078D782b760474a361dDA0AF3839290b0EF57AD6" - }, - { - "chainId": 137, - "address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" - }, - { - "chainId": 143, - "address": "0x754704Bc059F8C67012fEd69BC8A327a5aafb603" - }, - { - "chainId": 232, - "address": "0x88F08E304EC4f90D644Cec3Fb69b8aD414acf884" - }, - { - "chainId": 480, - "address": "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1" - }, - { - "chainId": 998, - "address": "0x2B3370eE501B4a559b57D449569354196457D8Ab" - }, - { - "chainId": 999, - "address": "0xb88339CB7199b77E23DB6E890353E22632Ba630f" - }, - { - "chainId": 1301, - "address": "0x31d0220469e10c4E71834a79b1f276d740d3768F" - }, - { - "chainId": 8453, - "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" - }, - { - "chainId": 10143, - "address": "0xf817257fed379853cDe0fa4F97AB987181B1E5Ea" - }, - { - "chainId": 42161, - "address": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" - }, - { - "chainId": 57073, - "address": "0x2D270e6886d130D724215A266106e6832161EAEd" - }, - { - "chainId": 59144, - "address": "0x176211869cA2b568f2A7D4EE941E073a821EE1ff" - }, - { - "chainId": 80002, - "address": "0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582" - }, - { - "chainId": 84532, - "address": "0x036CbD53842c5426634e7929541eC2318f3dCF7e" - }, - { - "chainId": 421614, - "address": "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d" - }, - { - "chainId": 534352, - "address": "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4" - }, - { - "chainId": 11155111, - "address": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238" - }, - { - "chainId": 11155420, - "address": "0x5fd84259d66Cd46123540766Be93DFE6D43130D7" - }, - { - "chainId": 34268394551451, - "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" - }, - { - "chainId": 133268194659241, - "address": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU" - } - ] - }, - { - "name": "USD Coin (bridged)", - "symbol": "USDC.e", - "decimals": 6, - "coingeckoId": "usd-coin-ethereum-bridged", - "addresses": [ - { - "chainId": 1, - "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" - }, - { - "chainId": 10, - "address": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607" - }, - { - "chainId": 137, - "address": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" - }, - { - "chainId": 288, - "address": "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc" - }, - { - "chainId": 324, - "address": "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" - }, - { - "chainId": 1135, - "address": "0xF242275d3a6527d877f2c927a82D9b057609cc71" - }, - { - "chainId": 1868, - "address": "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369" - }, - { - "chainId": 4217, - "address": "0x20C000000000000000000000b9537d11c60E8b50" - }, - { - "chainId": 34443, - "address": "0xd988097fb8612cc24eeC14542bC03424c656005f" - }, - { - "chainId": 41455, - "address": "0x18d25B4e18165c97e1285212e5d1f80eDD6d3Aa7" - }, - { - "chainId": 42161, - "address": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8" - }, - { - "chainId": 11155420, - "address": "0x9552a0a6624A23B848060AE5901659CDDa1f83f8" - } - ] - }, - { - "name": "USD Coin (bridged)", - "symbol": "USDbC", - "decimals": 6, - "coingeckoId": "bridged-usd-coin-base", - "addresses": [ - { - "chainId": 1, - "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" - }, - { - "chainId": 8453, - "address": "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA" - }, - { - "chainId": 84532, - "address": "0xE634Ec56B73779eCFfa78109a653FA0aE33D243f" - } - ] - }, - { - "name": "USD Coin (bridged)", - "symbol": "USDzC", - "decimals": 6, - "coingeckoId": "usd-coin-ethereum-bridged", - "addresses": [ - { - "chainId": 1, - "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" - }, - { - "chainId": 7777777, - "address": "0xCccCCccc7021b32EBb4e8C08314bD62F7c653EC4" - } - ] - }, - { - "name": "USD Coin", - "symbol": "USDC-BNB", - "decimals": 18, - "coingeckoId": "usd-coin", - "l1TokenDecimals": 6, - "addresses": [ - { - "chainId": 1, - "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" - }, - { - "chainId": 56, - "address": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d" - } - ] - }, - { - "name": "Hyperliquid USD", - "symbol": "USDH", - "decimals": 6, - "coingeckoId": "usdh-2", - "addresses": [ - { - "chainId": 998, - "address": "0x111111a1a0667d36bD57c0A9f569b98057111111" - }, - { - "chainId": 999, - "address": "0x111111a1a0667d36bD57c0A9f569b98057111111" - } - ] - }, - { - "name": "Hyperliquid USD", - "symbol": "USDH-SPOT", - "decimals": 8, - "coingeckoId": "usdh-2", - "addresses": [ - { - "chainId": 1337, - "address": "0x2000000000000000000000000000000000000168" - } - ] - }, - { - "name": "MegaUSD", - "symbol": "USDM", - "decimals": 18, - "coingeckoId": "megausd", - "addresses": [ - { - "chainId": 1, - "address": "0xEc2AF1C8B110a61fD9C3Fa6a554a031Ca9943926" - }, - { - "chainId": 4326, - "address": "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7" - } - ] - }, - { - "name": "Tether USD", - "symbol": "USDT", - "decimals": 6, - "coingeckoId": "tether", - "addresses": [ - { - "chainId": 1, - "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7" - }, - { - "chainId": 10, - "address": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58" - }, - { - "chainId": 130, - "address": "0x9151434b16b9763660705744891fA906F660EcC5" - }, - { - "chainId": 137, - "address": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F" - }, - { - "chainId": 143, - "address": "0xe7cd86e13AC4309349F30B3435a9d337750fC82D" - }, - { - "chainId": 288, - "address": "0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d" - }, - { - "chainId": 324, - "address": "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C" - }, - { - "chainId": 999, - "address": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" - }, - { - "chainId": 1135, - "address": "0x05D032ac25d322df992303dCa074EE7392C117b9" - }, - { - "chainId": 4326, - "address": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" - }, - { - "chainId": 8453, - "address": "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2" - }, - { - "chainId": 9745, - "address": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb" - }, - { - "chainId": 9746, - "address": "0x12adA0e58293017eA3e5e6c1C0976F0f162A411b" - }, - { - "chainId": 10143, - "address": "0x88b8E2161DEDC77EF4ab7585569D2415a1C1055D" - }, - { - "chainId": 34443, - "address": "0xf0F161fDA2712DB8b566946122a5af183995e2eD" - }, - { - "chainId": 41455, - "address": "0xD648529D4803d3467bA8850577BEd4e4b8Ae583C" - }, - { - "chainId": 42161, - "address": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9" - }, - { - "chainId": 57073, - "address": "0x0200C29006150606B650577BBE7B6248F58470c1" - }, - { - "chainId": 59144, - "address": "0xA219439258ca9da29E9Cc4cE5596924745e12B93" - }, - { - "chainId": 534352, - "address": "0xf55BEC9cafDbE8730f096Aa55dad6D22d44099Df" - }, - { - "chainId": 11155111, - "address": "0x7169D38820dfd117C3FA1f22a697dBA58d90BA06" - } - ] - }, - { - "name": "Tether USD", - "symbol": "USDT-BNB", - "decimals": 18, - "coingeckoId": "tether", - "l1TokenDecimals": 6, - "addresses": [ - { - "chainId": 1, - "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7" - }, - { - "chainId": 56, - "address": "0x55d398326f99059fF775485246999027B3197955" - } - ] - }, - { - "name": "Tether USD", - "symbol": "USDT-SPOT", - "decimals": 8, - "coingeckoId": "tether", - "l1TokenDecimals": 6, - "addresses": [ - { - "chainId": 1, - "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7" - }, - { - "chainId": 1337, - "address": "0x200000000000000000000000000000000000010C" - } - ] - }, - { - "name": "Velora", - "symbol": "VLR", - "decimals": 18, - "coingeckoId": "velora", - "addresses": [ - { - "chainId": 1, - "address": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74" - }, - { - "chainId": 10, - "address": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74" - }, - { - "chainId": 8453, - "address": "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74" - } - ] - }, - { - "name": "Plasma", - "symbol": "XPL", - "decimals": 18, - "coingeckoId": "plasma", - "addresses": [ - { - "chainId": 9745, - "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" - }, - { - "chainId": 9746, - "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" - } - ] - }, - { - "name": "Wrapped AZERO", - "symbol": "WAZERO", - "decimals": 18, - "coingeckoId": "aleph-zero", - "addresses": [ - { - "chainId": 1, - "address": "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe" - }, - { - "chainId": 41455, - "address": "0xb7Da55D7040ef9C887e20374D76A88F93A59119E" - } - ] - }, - { - "name": "Wrapped BNB", - "symbol": "WBNB", - "decimals": 18, - "coingeckoId": "wbnb", - "addresses": [ - { - "chainId": 1, - "address": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52" - }, - { - "chainId": 56, - "address": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c" - } - ] - }, - { - "name": "Wrapped Bitcoin", - "symbol": "WBTC", - "decimals": 8, - "coingeckoId": "wrapped-bitcoin", - "addresses": [ - { - "chainId": 1, - "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" - }, - { - "chainId": 10, - "address": "0x68f180fcCe6836688e9084f035309E29Bf0A2095" - }, - { - "chainId": 56, - "address": "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c" - }, - { - "chainId": 130, - "address": "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c" - }, - { - "chainId": 137, - "address": "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6" - }, - { - "chainId": 143, - "address": "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c" - }, - { - "chainId": 288, - "address": "0xdc0486f8bf31DF57a952bcd3c1d3e166e3d9eC8b" - }, - { - "chainId": 324, - "address": "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011" - }, - { - "chainId": 480, - "address": "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3" - }, - { - "chainId": 1135, - "address": "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3" - }, - { - "chainId": 10143, - "address": "0xcf5a6076cfa32686c0Df13aBaDa2b40dec133F1d" - }, - { - "chainId": 34443, - "address": "0xcDd475325D6F564d27247D1DddBb0DAc6fA0a5CF" - }, - { - "chainId": 42161, - "address": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f" - }, - { - "chainId": 59144, - "address": "0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4" - }, - { - "chainId": 81457, - "address": "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692" - }, - { - "chainId": 534352, - "address": "0x3C1BCa5a656e69edCD0D4E36BEbb3FcDAcA60Cf1" - }, - { - "chainId": 808813, - "address": "0xAdCE1AB74C8e64c155953A8BdE37cBB06Cf7086D" - }, - { - "chainId": 11155111, - "address": "0x9D15Db83680572C9a48826d51b733ea3B0957De3" - } - ] - }, - { - "name": "Wrapped Ether", - "symbol": "WETH", - "decimals": 18, - "coingeckoId": "weth", - "addresses": [ - { - "chainId": 1, - "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" - }, - { - "chainId": 10, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 56, - "address": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8" - }, - { - "chainId": 130, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 137, - "address": "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619" - }, - { - "chainId": 232, - "address": "0xE5ecd226b3032910CEaa43ba92EE8232f8237553" - }, - { - "chainId": 288, - "address": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000" - }, - { - "chainId": 300, - "address": "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD" - }, - { - "chainId": 324, - "address": "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91" - }, - { - "chainId": 480, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 690, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 919, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 1135, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 1301, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 1868, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 4202, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 4326, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 8453, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 9745, - "address": "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB" - }, - { - "chainId": 34443, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 37111, - "address": "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16" - }, - { - "chainId": 41455, - "address": "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3" - }, - { - "chainId": 42161, - "address": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" - }, - { - "chainId": 57073, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 59144, - "address": "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f" - }, - { - "chainId": 80002, - "address": "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E" - }, - { - "chainId": 81457, - "address": "0x4300000000000000000000000000000000000004" - }, - { - "chainId": 84532, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 421614, - "address": "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73" - }, - { - "chainId": 534351, - "address": "0x5300000000000000000000000000000000000004" - }, - { - "chainId": 534352, - "address": "0x5300000000000000000000000000000000000004" - }, - { - "chainId": 763373, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 808813, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 7777777, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 11155111, - "address": "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14" - }, - { - "chainId": 11155420, - "address": "0x4200000000000000000000000000000000000006" - }, - { - "chainId": 168587773, - "address": "0x4200000000000000000000000000000000000023" - } - ] - }, - { - "name": "Wrapped GHO Token", - "symbol": "WGHO", - "decimals": 18, - "coingeckoId": "gho", - "addresses": [ - { - "chainId": 1, - "address": "0x1ff1dC3cB9eeDbC6Eb2d99C03b30A05cA625fB5a" - }, - { - "chainId": 232, - "address": "0x6bDc36E20D267Ff0dd6097799f82e78907105e2F" - } - ] - }, - { - "name": "Wrapped Grass", - "symbol": "WGRASS", - "decimals": 18, - "coingeckoId": "gho", - "addresses": [ - { - "chainId": 37111, - "address": "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8" - }, - { - "chainId": 11155111, - "address": "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df" - } - ] - }, - { - "name": "Worldcoin", - "symbol": "WLD", - "decimals": 18, - "coingeckoId": "worldcoin-wld", - "addresses": [ - { - "chainId": 1, - "address": "0x163f8C2467924be0ae7B5347228CABF260318753" - }, - { - "chainId": 10, - "address": "0xdC6fF44d5d932Cbd77B52E5612Ba0529DC6226F1" - }, - { - "chainId": 480, - "address": "0x2cFc85d8E48F8EAB294be644d9E25C3030863003" - } - ] - }, - { - "name": "Matic", - "symbol": "WMATIC", - "decimals": 18, - "coingeckoId": "wmatic", - "addresses": [ - { - "chainId": 1, - "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" - }, - { - "chainId": 137, - "address": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270" - }, - { - "chainId": 80002, - "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" - }, - { - "chainId": 11155111, - "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" - } - ] - }, - { - "name": "Wrapped Monad", - "symbol": "WMON", - "decimals": 18, - "coingeckoId": "monad", - "addresses": [ - { - "chainId": 143, - "address": "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A" - }, - { - "chainId": 10143, - "address": "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701" - } - ] - }, - { - "name": "Wrapped Polygon Ecosystem Token", - "symbol": "WPOL", - "decimals": 18, - "coingeckoId": "wmatic", - "addresses": [ - { - "chainId": 1, - "address": "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6" - }, - { - "chainId": 137, - "address": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270" - }, - { - "chainId": 80002, - "address": "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9" - }, - { - "chainId": 11155111, - "address": "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53" - } - ] - }, - { - "name": "Wrapped SOL", - "symbol": "WSOL", - "decimals": 9, - "coingeckoId": "wrapped-solana", - "addresses": [ - { - "chainId": 34268394551451, - "address": "So11111111111111111111111111111111111111112" - }, - { - "chainId": 133268194659241, - "address": "So11111111111111111111111111111111111111112" - } - ] - }, - { - "name": "Wrapped Plasma", - "symbol": "WXPL", - "decimals": 18, - "coingeckoId": "plasma", - "addresses": [ - { - "chainId": 9745, - "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" - }, - { - "chainId": 9746, - "address": "0x6100E367285b01F48D07953803A2d8dCA5D19873" - } - ] - }, - { - "name": "XYZ Token", - "symbol": "XYZ", - "decimals": 18, - "coingeckoId": "xyz", - "addresses": [ - { - "chainId": 84532, - "address": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9" - }, - { - "chainId": 11155111, - "address": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9" - }, - { - "chainId": 11155420, - "address": "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9" - } - ] - } - ], - "tokenEquivalences": [ - { - "symbol": "pathUSD", - "targetSymbol": "USDC" - }, - { - "symbol": "USDH", - "targetSymbol": "USDC" - }, - { - "symbol": "USDC.e", - "targetSymbol": "USDC" - }, - { - "symbol": "USDbC", - "targetSymbol": "USDC" - }, - { - "symbol": "USDzC", - "targetSymbol": "USDC" - }, - { - "symbol": "USDB", - "targetSymbol": "DAI" - }, - { - "symbol": "USDC-BNB", - "targetSymbol": "USDC" - }, - { - "symbol": "USDT-BNB", - "targetSymbol": "USDT" - }, - { - "symbol": "USDT-SPOT", - "targetSymbol": "USDT" - }, - { - "symbol": "LGHO", - "targetSymbol": "WGHO" - }, - { - "symbol": "ETH", - "targetSymbol": "WETH" - }, - { - "symbol": "BNB", - "targetSymbol": "WBNB" - }, - { - "symbol": "HYPE", - "targetSymbol": "WHYPE" - }, - { - "symbol": "XPL", - "targetSymbol": "WXPL" - } - ] -} diff --git a/src/generated/constants.v1.ts b/src/generated/constants.v1.ts new file mode 100644 index 0000000..72b1a04 --- /dev/null +++ b/src/generated/constants.v1.ts @@ -0,0 +1,2447 @@ +// This file is generated by scripts/generate-canonical-module.mjs. Do not edit by hand. +const constantsV1 = { + schemaVersion: 1, + chains: [ + { + key: "ALEPH_ZERO", + chainId: 41455, + groups: ["mainnet"], + }, + { + key: "ARBITRUM", + chainId: 42161, + groups: ["mainnet"], + }, + { + key: "BASE", + chainId: 8453, + groups: ["mainnet"], + }, + { + key: "BLAST", + chainId: 81457, + groups: ["mainnet"], + }, + { + key: "BOB", + chainId: 60808, + groups: ["mainnet"], + }, + { + key: "BSC", + chainId: 56, + groups: ["mainnet"], + }, + { + key: "BOBA", + chainId: 288, + groups: ["mainnet"], + }, + { + key: "HYPEREVM", + chainId: 999, + groups: ["mainnet"], + }, + { + key: "HYPERCORE", + chainId: 1337, + groups: ["mainnet"], + }, + { + key: "INK", + chainId: 57073, + groups: ["mainnet"], + }, + { + key: "LENS", + chainId: 232, + groups: ["mainnet"], + }, + { + key: "LIGHTER", + chainId: 2337, + groups: ["mainnet"], + }, + { + key: "LINEA", + chainId: 59144, + groups: ["mainnet"], + }, + { + key: "LISK", + chainId: 1135, + groups: ["mainnet"], + }, + { + key: "MAINNET", + chainId: 1, + groups: ["mainnet"], + }, + { + key: "MEGAETH", + chainId: 4326, + groups: ["mainnet"], + }, + { + key: "MODE", + chainId: 34443, + groups: ["mainnet"], + }, + { + key: "MONAD", + chainId: 143, + groups: ["mainnet"], + }, + { + key: "OPTIMISM", + chainId: 10, + groups: ["mainnet"], + }, + { + key: "PLASMA", + chainId: 9745, + groups: ["mainnet"], + }, + { + key: "POLYGON", + chainId: 137, + groups: ["mainnet"], + }, + { + key: "REDSTONE", + chainId: 690, + groups: ["mainnet"], + }, + { + key: "SCROLL", + chainId: 534352, + groups: ["mainnet"], + }, + { + key: "SONEIUM", + chainId: 1868, + groups: ["mainnet"], + }, + { + key: "SUPERSEED", + chainId: 5330, + groups: ["mainnet"], + }, + { + key: "TEMPO", + chainId: 4217, + groups: ["mainnet"], + }, + { + key: "UNICHAIN", + chainId: 130, + groups: ["mainnet"], + }, + { + key: "WORLD_CHAIN", + chainId: 480, + groups: ["mainnet"], + }, + { + key: "ZK_SYNC", + chainId: 324, + groups: ["mainnet"], + }, + { + key: "ZORA", + chainId: 7777777, + groups: ["mainnet"], + }, + { + key: "SOLANA", + chainId: 34268394551451, + groups: ["mainnet"], + }, + { + key: "ARBITRUM_SEPOLIA", + chainId: 421614, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "BASE_SEPOLIA", + chainId: 84532, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "BLAST_SEPOLIA", + chainId: 168587773, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "BOB_SEPOLIA", + chainId: 808813, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "HYPEREVM_TESTNET", + chainId: 998, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "INK_SEPOLIA", + chainId: 763373, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "TATARA", + chainId: 129399, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "LENS_SEPOLIA", + chainId: 37111, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "LISK_SEPOLIA", + chainId: 4202, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "MODE_SEPOLIA", + chainId: 919, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "MONAD_TESTNET", + chainId: 10143, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "OPTIMISM_SEPOLIA", + chainId: 11155420, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "PLASMA_TESTNET", + chainId: 9746, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "POLYGON_AMOY", + chainId: 80002, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "SCROLL_SEPOLIA", + chainId: 534351, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "SEPOLIA", + chainId: 11155111, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "UNICHAIN_SEPOLIA", + chainId: 1301, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "ZK_SYNC_SEPOLIA", + chainId: 300, + groups: ["testnet", "testnet_sepolia"], + }, + { + key: "SOLANA_DEVNET", + chainId: 133268194659241, + groups: ["testnet"], + }, + ], + networks: [ + { + chainId: 41455, + name: "Aleph Zero", + family: "orbit", + nativeToken: "AZERO", + publicRpc: "https://rpc.alephzero.raas.gelato.cloud", + blockExplorer: "https://evm-explorer.alephzero.org", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 42161, + name: "Arbitrum One", + family: "none", + nativeToken: "ETH", + publicRpc: "https://arb1.arbitrum.io/rpc", + blockExplorer: "https://arbiscan.io", + cctpDomain: 3, + oftEid: 30110, + hypDomainId: 42161, + groups: ["production"], + }, + { + chainId: 8453, + name: "Base", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://mainnet.base.org", + blockExplorer: "https://basescan.org", + cctpDomain: 6, + oftEid: 30184, + hypDomainId: 8453, + groups: ["production"], + }, + { + chainId: 81457, + name: "Blast", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://rpc.blast.io", + blockExplorer: "https://blastscan.io", + cctpDomain: null, + oftEid: 30243, + hypDomainId: 81457, + groups: ["production"], + }, + { + chainId: 56, + name: "BNB Smart Chain", + family: "none", + nativeToken: "BNB", + publicRpc: "https://bsc-dataseed1.binance.org", + blockExplorer: "https://bscscan.com", + cctpDomain: null, + oftEid: 30102, + hypDomainId: 56, + groups: ["production"], + }, + { + chainId: 288, + name: "Boba", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://mainnet.boba.network", + blockExplorer: "https://blockexplorer.boba.network", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 999, + name: "HyperEVM", + family: "none", + nativeToken: "HYPE", + publicRpc: "https://rpc.hyperliquid.xyz/evm", + blockExplorer: "https://hyperevmscan.io/", + cctpDomain: 19, + oftEid: 30367, + hypDomainId: 999, + groups: ["production"], + }, + { + chainId: 1337, + name: "HyperCore", + family: "none", + nativeToken: "HYPE", + publicRpc: "https://api.hyperliquid.xyz", + blockExplorer: "https://app.hyperliquid.xyz/explorer", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 57073, + name: "Ink", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://rpc-gel.inkonchain.com", + blockExplorer: "https://explorer.inkonchain.com", + cctpDomain: 21, + oftEid: 30339, + hypDomainId: 57073, + groups: ["production"], + }, + { + chainId: 232, + name: "Lens", + family: "zk_stack", + nativeToken: "WGHO", + publicRpc: "https://api.lens.matterhosted.dev", + blockExplorer: "https://explorer.lens.xyz", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 2337, + name: "Lighter", + family: "none", + nativeToken: "LIT", + publicRpc: "https://mainnet.zklighter.elliot.ai", + blockExplorer: "https://app.lighter.xyz/explorer", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 59144, + name: "Linea", + family: "none", + nativeToken: "ETH", + publicRpc: "https://rpc.linea.build", + blockExplorer: "https://lineascan.build", + cctpDomain: 11, + oftEid: null, + hypDomainId: 59144, + groups: ["production"], + }, + { + chainId: 1135, + name: "Lisk", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://rpc.api.lisk.com", + blockExplorer: "https://blockscout.lisk.com", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 1, + name: "Mainnet", + family: "none", + nativeToken: "ETH", + publicRpc: "https://eth.llamarpc.com", + blockExplorer: "https://etherscan.io", + cctpDomain: 0, + oftEid: 30101, + hypDomainId: 1, + groups: ["production"], + }, + { + chainId: 4326, + name: "MegaETH", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://mainnet.megaeth.com/rpc", + blockExplorer: "https://megaeth.blockscout.com", + cctpDomain: null, + oftEid: 30398, + hypDomainId: 4326, + groups: ["production"], + }, + { + chainId: 34443, + name: "Mode", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://mainnet.mode.network", + blockExplorer: "https://explorer.mode.network", + cctpDomain: null, + oftEid: null, + hypDomainId: 34443, + groups: ["production"], + }, + { + chainId: 143, + name: "Monad", + family: "none", + nativeToken: "MON", + publicRpc: "https://rpc-mainnet.monadinfra.com", + blockExplorer: "https://monadvision.com", + cctpDomain: 15, + oftEid: 30390, + hypDomainId: 143, + groups: ["production"], + }, + { + chainId: 10, + name: "Optimism", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://mainnet.optimism.io", + blockExplorer: "https://optimistic.etherscan.io", + cctpDomain: 2, + oftEid: 30111, + hypDomainId: 10, + groups: ["production"], + }, + { + chainId: 9745, + name: "Plasma", + family: "none", + nativeToken: "XPL", + publicRpc: "https://rpc.plasma.to", + blockExplorer: "https://plasmascan.to", + cctpDomain: null, + oftEid: 30383, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 137, + name: "Polygon", + family: "none", + nativeToken: "POL", + publicRpc: "https://polygon-rpc.com", + blockExplorer: "https://polygonscan.com", + cctpDomain: 7, + oftEid: 30109, + hypDomainId: 137, + groups: ["production"], + }, + { + chainId: 690, + name: "Redstone", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://rpc.redstonechain.com", + blockExplorer: "https://explorer.redstone.xyz", + cctpDomain: null, + oftEid: null, + hypDomainId: 690, + groups: ["production"], + }, + { + chainId: 534352, + name: "Scroll", + family: "none", + nativeToken: "ETH", + publicRpc: "https://rpc.scroll.io", + blockExplorer: "https://scrollscan.com", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 1868, + name: "Soneium", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://rpc.soneium.org", + blockExplorer: "https://soneium.blockscout.com", + cctpDomain: null, + oftEid: 30340, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 5330, + name: "Superseed", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://mainnet.superseed.xyz", + blockExplorer: "", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 4217, + name: "Tempo", + family: "none", + nativeToken: "pathUSD", + publicRpc: "https://rpc.tempo.xyz", + blockExplorer: "https://explore.mainnet.tempo.xyz", + cctpDomain: null, + oftEid: 30410, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 130, + name: "Unichain", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://mainnet.unichain.org/", + blockExplorer: "https://uniscan.xyz", + cctpDomain: 10, + oftEid: 30320, + hypDomainId: 130, + groups: ["production"], + }, + { + chainId: 480, + name: "World Chain", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://worldchain-mainnet.g.alchemy.com/public", + blockExplorer: "https://worldchain-mainnet-explorer.alchemy.com", + cctpDomain: 14, + oftEid: 30319, + hypDomainId: 480, + groups: ["production"], + }, + { + chainId: 324, + name: "zkSync", + family: "none", + nativeToken: "ETH", + publicRpc: "https://mainnet.era.zksync.io", + blockExplorer: "https://explorer.zksync.io", + cctpDomain: null, + oftEid: null, + hypDomainId: 324, + groups: ["production"], + }, + { + chainId: 7777777, + name: "Zora", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://rpc.zora.energy", + blockExplorer: "https://zorascan.xyz", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 34268394551451, + name: "Solana", + family: "svm", + nativeToken: "SOL", + publicRpc: "https://api.mainnet-beta.solana.com", + blockExplorer: "https://solscan.io", + cctpDomain: 5, + oftEid: 30168, + hypDomainId: 1399811149, + groups: ["production"], + }, + { + chainId: 421614, + name: "Arbitrum Sepolia", + family: "none", + nativeToken: "ETH", + publicRpc: "https://sepolia-rollup.arbitrum.io/rpc", + blockExplorer: "https://sepolia.arbiscan.io", + cctpDomain: 3, + oftEid: 40231, + hypDomainId: 421614, + groups: ["test"], + }, + { + chainId: 84532, + name: "Base Sepolia", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://sepolia.base.org", + blockExplorer: "https://sepolia.basescan.org", + cctpDomain: 6, + oftEid: 40245, + hypDomainId: 84532, + groups: ["test"], + }, + { + chainId: 168587773, + name: "Blast Sepolia", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://sepolia.blast.io", + blockExplorer: "https://sepolia.blastscan.io", + cctpDomain: null, + oftEid: null, + hypDomainId: 168587773, + groups: ["test"], + }, + { + chainId: 808813, + name: "BOB Sepolia", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://bob-sepolia.rpc.gobob.xyz", + blockExplorer: "https://bob-sepolia.explorer.gobob.xyz", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["test"], + }, + { + chainId: 998, + name: "HyperEVM Testnet", + family: "none", + nativeToken: "HYPE", + publicRpc: "https://rpc.hyperliquid-testnet.xyz/evm", + blockExplorer: "https://testnet.purrsec.com/", + cctpDomain: 19, + oftEid: 40362, + hypDomainId: 998, + groups: ["test"], + }, + { + chainId: 129399, + name: "Tatara", + family: "none", + nativeToken: "ETH", + publicRpc: "", + blockExplorer: "", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["production"], + }, + { + chainId: 37111, + name: "Lens Sepolia", + family: "zk_stack", + nativeToken: "GRASS", + publicRpc: "https://rpc.testnet.lens.dev", + blockExplorer: "https://block-explorer.testnet.lens.dev", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["test"], + }, + { + chainId: 4202, + name: "Lisk Sepolia", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://rpc.sepolia-api.lisk.com", + blockExplorer: "https://sepolia-blockscout.lisk.com", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["test"], + }, + { + chainId: 919, + name: "Mode Sepolia", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://sepolia.mode.network", + blockExplorer: "https://sepolia.explorer.mode.network", + cctpDomain: null, + oftEid: null, + hypDomainId: 919, + groups: ["test"], + }, + { + chainId: 10143, + name: "Monad Testnet", + family: "none", + nativeToken: "MON", + publicRpc: "https://testnet-rpc.monad.xyz", + blockExplorer: "https://testnet.monvision.io", + cctpDomain: 15, + oftEid: 40204, + hypDomainId: 10143, + groups: ["test"], + }, + { + chainId: 11155420, + name: "Optimism Sepolia", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://sepolia.optimism.io", + blockExplorer: "https://sepolia-optimism.etherscan.io", + cctpDomain: 2, + oftEid: 40232, + hypDomainId: 11155420, + groups: ["test"], + }, + { + chainId: 9746, + name: "Plasma Testnet", + family: "none", + nativeToken: "XPL", + publicRpc: "https://testnet-rpc.plasma.to/", + blockExplorer: "https://testnet.plasmascan.to/", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["test"], + }, + { + chainId: 80002, + name: "Polygon Amoy", + family: "none", + nativeToken: "POL", + publicRpc: "https://rpc-amoy.polygon.technology", + blockExplorer: "https://amoy.polygonscan.com", + cctpDomain: 7, + oftEid: 40267, + hypDomainId: 80002, + groups: ["test"], + }, + { + chainId: 534351, + name: "Scroll Sepolia", + family: "none", + nativeToken: "ETH", + publicRpc: "https://sepolia-rpc.scroll.io", + blockExplorer: "https://sepolia.scrollscan.com", + cctpDomain: null, + oftEid: null, + hypDomainId: null, + groups: ["test"], + }, + { + chainId: 11155111, + name: "Sepolia", + family: "none", + nativeToken: "ETH", + publicRpc: "https://sepolia.drpc.org", + blockExplorer: "https://sepolia.etherscan.io", + cctpDomain: 0, + oftEid: 40161, + hypDomainId: 11155111, + groups: ["test"], + }, + { + chainId: 1301, + name: "Unichain Sepolia", + family: "op_stack", + nativeToken: "ETH", + publicRpc: "https://sepolia.unichain.org", + blockExplorer: "https://sepolia.uniscan.xyz", + cctpDomain: 10, + oftEid: 40333, + hypDomainId: 1301, + groups: ["test"], + }, + { + chainId: 300, + name: "zkSync Sepolia", + family: "none", + nativeToken: "ETH", + publicRpc: "https://sepolia.era.zksync.dev", + blockExplorer: "https://sepolia-era.zksync.network", + cctpDomain: null, + oftEid: null, + hypDomainId: 300, + groups: ["test"], + }, + { + chainId: 133268194659241, + name: "Solana Devnet", + family: "svm", + nativeToken: "SOL", + publicRpc: "https://api.devnet.solana.com", + blockExplorer: "https://explorer.solana.com/?cluster=devnet", + cctpDomain: 5, + oftEid: 40168, + hypDomainId: 1399811151, + groups: ["test"], + }, + ], + tokens: [ + { + name: "Across Protocol Token", + symbol: "ACX", + decimals: 18, + coingeckoId: "across-protocol", + addresses: [ + { + chainId: 1, + address: "0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F", + }, + { + chainId: 10, + address: "0xFf733b2A3557a7ed6697007ab5D11B79FdD1b76B", + }, + { + chainId: 137, + address: "0xF328b73B6c685831F238c30a23Fc19140CB4D8FC", + }, + { + chainId: 288, + address: "0x96821b258955587069F680729cD77369C0892B40", + }, + { + chainId: 42161, + address: "0x53691596d1BCe8CEa565b84d4915e69e03d9C99d", + }, + { + chainId: 11155111, + address: "0x49fCaC04AE71dbD074304Fb12071bD771e0E927A", + }, + ], + }, + { + name: "Arbitrum", + symbol: "ARB", + decimals: 18, + coingeckoId: "arbitrum", + addresses: [ + { + chainId: 1, + address: "0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1", + }, + { + chainId: 42161, + address: "0x912CE59144191C1204E64559FE8253a0e49E6548", + }, + ], + }, + { + name: "Aleph Zero", + symbol: "AZERO", + decimals: 18, + coingeckoId: "aleph-zero", + addresses: [ + { + chainId: 1, + address: "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe", + }, + { + chainId: 41455, + address: "0xb7Da55D7040ef9C887e20374D76A88F93A59119E", + }, + ], + }, + { + name: "Badger", + symbol: "BADGER", + decimals: 18, + coingeckoId: "badger-dao", + addresses: [ + { + chainId: 1, + address: "0x3472A5A71965499acd81997a54BBA8D852C6E53d", + }, + { + chainId: 137, + address: "0x1FcbE5937B0cc2adf69772D228fA4205aCF4D9b2", + }, + { + chainId: 42161, + address: "0xBfa641051Ba0a0Ad1b0AcF549a89536A0D76472E", + }, + ], + }, + { + name: "Balancer", + symbol: "BAL", + decimals: 18, + coingeckoId: "balancer", + addresses: [ + { + chainId: 1, + address: "0xba100000625a3754423978a60c9317c58a424e3D", + }, + { + chainId: 10, + address: "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921", + }, + { + chainId: 137, + address: "0x9a71012B13CA4d3D0Cdc72A177DF3ef03b0E76A3", + }, + { + chainId: 8453, + address: "0x4158734D47Fc9692176B5085E0F52ee0Da5d47F1", + }, + { + chainId: 42161, + address: "0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8", + }, + { + chainId: 59144, + address: "0x660edb0A46c3f69be9eFF5446318593b9469F9e2", + }, + ], + }, + { + name: "BNB", + symbol: "BNB", + decimals: 18, + coingeckoId: "binancecoin", + addresses: [ + { + chainId: 1, + address: "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", + }, + { + chainId: 56, + address: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + }, + ], + }, + { + name: "Boba", + symbol: "BOBA", + decimals: 18, + coingeckoId: "boba-network", + addresses: [ + { + chainId: 1, + address: "0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc", + }, + { + chainId: 288, + address: "0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7", + }, + ], + }, + { + name: "PancakeSwap Token", + symbol: "CAKE", + decimals: 18, + coingeckoId: "pancakeswap-token", + addresses: [ + { + chainId: 1, + address: "0x152649eA73beAb28c5b49B26eb48f7EAD6d4c898", + }, + { + chainId: 56, + address: "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", + }, + ], + }, + { + name: "Dai Stablecoin", + symbol: "DAI", + decimals: 18, + coingeckoId: "dai", + addresses: [ + { + chainId: 1, + address: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + }, + { + chainId: 10, + address: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + }, + { + chainId: 137, + address: "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063", + }, + { + chainId: 288, + address: "0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35", + }, + { + chainId: 324, + address: "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656", + }, + { + chainId: 8453, + address: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + }, + { + chainId: 42161, + address: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + }, + { + chainId: 59144, + address: "0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5", + }, + ], + }, + { + name: "Ether", + symbol: "ETH", + decimals: 18, + coingeckoId: "ethereum", + addresses: [ + { + chainId: 1, + address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + }, + { + chainId: 10, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 56, + address: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + }, + { + chainId: 130, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 137, + address: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + }, + { + chainId: 232, + address: "0xE5ecd226b3032910CEaa43ba92EE8232f8237553", + }, + { + chainId: 288, + address: "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", + }, + { + chainId: 300, + address: "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD", + }, + { + chainId: 324, + address: "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", + }, + { + chainId: 480, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 690, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 919, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 1135, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 1301, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 1868, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 4202, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 4326, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 8453, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 9745, + address: "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB", + }, + { + chainId: 34443, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 37111, + address: "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16", + }, + { + chainId: 41455, + address: "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3", + }, + { + chainId: 42161, + address: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + }, + { + chainId: 57073, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 59144, + address: "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", + }, + { + chainId: 60808, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 80002, + address: "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E", + }, + { + chainId: 81457, + address: "0x4300000000000000000000000000000000000004", + }, + { + chainId: 84532, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 421614, + address: "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73", + }, + { + chainId: 534351, + address: "0x5300000000000000000000000000000000000004", + }, + { + chainId: 534352, + address: "0x5300000000000000000000000000000000000004", + }, + { + chainId: 763373, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 808813, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 7777777, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 11155111, + address: "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14", + }, + { + chainId: 11155420, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 168587773, + address: "0x4200000000000000000000000000000000000023", + }, + ], + }, + { + name: "Renzo Restaked ETH", + symbol: "ezETH", + decimals: 18, + coingeckoId: "renzo-restaked-eth", + addresses: [ + { + chainId: 1, + address: "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", + }, + { + chainId: 10, + address: "0x2416092f143378750bb29b79eD961ab195CcEea5", + }, + { + chainId: 56, + address: "0x2416092f143378750bb29b79eD961ab195CcEea5", + }, + { + chainId: 130, + address: "0x2416092f143378750bb29b79eD961ab195CcEea5", + }, + { + chainId: 480, + address: "0x2416092f143378750bb29b79eD961ab195CcEea5", + }, + { + chainId: 8453, + address: "0x2416092f143378750bb29b79eD961ab195CcEea5", + }, + { + chainId: 34443, + address: "0x2416092f143378750bb29b79eD961ab195CcEea5", + }, + { + chainId: 42161, + address: "0x2416092f143378750bb29b79eD961ab195CcEea5", + }, + { + chainId: 59144, + address: "0x2416092f143378750bb29b79eD961ab195CcEea5", + }, + { + chainId: 81457, + address: "0x2416092f143378750bb29b79eD961ab195CcEea5", + }, + ], + }, + { + name: "Gho Token", + symbol: "GHO", + decimals: 18, + coingeckoId: "gho", + addresses: [ + { + chainId: 1, + address: "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f", + }, + { + chainId: 232, + address: "0x000000000000000000000000000000000000800A", + }, + { + chainId: 84532, + address: "0x7CFa3f3d1cded0Da930881c609D4Dbf0012c14Bb", + }, + { + chainId: 421614, + address: "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810", + }, + { + chainId: 11155111, + address: "0xc4bF5CbDaBE595361438F8c6a187bDc330539c60", + }, + { + chainId: 11155420, + address: "0xb13Cfa6f8B2Eed2C37fB00fF0c1A59807C585810", + }, + ], + }, + { + name: "Grass", + symbol: "GRASS", + decimals: 18, + coingeckoId: "gho", + addresses: [ + { + chainId: 37111, + address: "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8", + }, + { + chainId: 11155111, + address: "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df", + }, + ], + }, + { + name: "Hyperliquid", + symbol: "HYPE", + decimals: 18, + coingeckoId: "hyperliquid", + addresses: [ + { + chainId: 998, + address: "0x5555555555555555555555555555555555555555", + }, + { + chainId: 999, + address: "0x5555555555555555555555555555555555555555", + }, + ], + }, + { + name: "Wrapped Hyperliquid", + symbol: "WHYPE", + decimals: 18, + coingeckoId: "hyperliquid", + addresses: [ + { + chainId: 998, + address: "0x5555555555555555555555555555555555555555", + }, + { + chainId: 999, + address: "0x5555555555555555555555555555555555555555", + }, + ], + }, + { + name: "Lisk", + symbol: "LSK", + decimals: 18, + coingeckoId: "lisk", + addresses: [ + { + chainId: 1, + address: "0x6033F7f88332B8db6ad452B7C6D5bB643990aE3f", + }, + { + chainId: 1135, + address: "0xac485391EB2d7D88253a7F1eF18C37f4242D1A24", + }, + ], + }, + { + name: "Matic", + symbol: "MATIC", + decimals: 18, + coingeckoId: "polygon-ecosystem-token", + addresses: [ + { + chainId: 1, + address: "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", + }, + { + chainId: 80002, + address: "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", + }, + { + chainId: 11155111, + address: "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", + }, + ], + }, + { + name: "Monad", + symbol: "MON", + decimals: 18, + coingeckoId: "monad", + addresses: [ + { + chainId: 143, + address: "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A", + }, + { + chainId: 10143, + address: "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701", + }, + ], + }, + { + name: "Optimism", + symbol: "OP", + decimals: 18, + coingeckoId: "optimism", + addresses: [ + { + chainId: 10, + address: "0x4200000000000000000000000000000000000042", + }, + ], + }, + { + name: "Polygon Ecosystem Token", + symbol: "POL", + decimals: 18, + coingeckoId: "polygon-ecosystem-token", + addresses: [ + { + chainId: 1, + address: "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", + }, + { + chainId: 80002, + address: "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", + }, + { + chainId: 11155111, + address: "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", + }, + ], + }, + { + name: "PoolTogether", + symbol: "POOL", + decimals: 18, + coingeckoId: "pooltogether", + addresses: [ + { + chainId: 1, + address: "0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e", + }, + { + chainId: 10, + address: "0x395Ae52bB17aef68C2888d941736A71dC6d4e125", + }, + { + chainId: 137, + address: "0x25788a1a171ec66Da6502f9975a15B609fF54CF6", + }, + { + chainId: 480, + address: "0x7077C71B4AF70737a08287E279B717Dcf64fdC57", + }, + { + chainId: 8453, + address: "0xd652C5425aea2Afd5fb142e120FeCf79e18fafc3", + }, + { + chainId: 42161, + address: "0xCF934E2402A5e072928a39a956964eb8F2B5B79C", + }, + { + chainId: 534352, + address: "0xF9Af83FC41e0cc2af2fba93644D542Df6eA0F2b7", + }, + ], + }, + { + name: "pathUSD", + symbol: "pathUSD", + decimals: 6, + coingeckoId: "pathusd", + addresses: [ + { + chainId: 4217, + address: "0x20C0000000000000000000000000000000000000", + }, + ], + }, + { + name: "Synthetix", + symbol: "SNX", + decimals: 18, + coingeckoId: "havven", + addresses: [ + { + chainId: 1, + address: "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", + }, + { + chainId: 10, + address: "0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4", + }, + ], + }, + { + name: "Solana", + symbol: "SOL", + decimals: 9, + coingeckoId: "solana", + addresses: [ + { + chainId: 34268394551451, + address: "So11111111111111111111111111111111111111112", + }, + { + chainId: 133268194659241, + address: "So11111111111111111111111111111111111111112", + }, + ], + }, + { + name: "UMA Voting Token", + symbol: "UMA", + decimals: 18, + coingeckoId: "uma", + addresses: [ + { + chainId: 1, + address: "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", + }, + { + chainId: 10, + address: "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea", + }, + { + chainId: 137, + address: "0x3066818837c5e6eD6601bd5a91B0762877A6B731", + }, + { + chainId: 288, + address: "0x780f33Ad21314d9A1Ffb6867Fe53d48a76Ec0D16", + }, + { + chainId: 42161, + address: "0xd693Ec944A85eeca4247eC1c3b130DCa9B0C3b22", + }, + ], + }, + { + name: "USDB", + symbol: "USDB", + decimals: 18, + coingeckoId: "usdb", + addresses: [ + { + chainId: 1, + address: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + }, + { + chainId: 81457, + address: "0x4300000000000000000000000000000000000003", + }, + ], + }, + { + name: "USD Coin", + symbol: "USDC", + decimals: 6, + coingeckoId: "usd-coin", + addresses: [ + { + chainId: 1, + address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + }, + { + chainId: 10, + address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", + }, + { + chainId: 130, + address: "0x078D782b760474a361dDA0AF3839290b0EF57AD6", + }, + { + chainId: 137, + address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + }, + { + chainId: 143, + address: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603", + }, + { + chainId: 232, + address: "0x88F08E304EC4f90D644Cec3Fb69b8aD414acf884", + }, + { + chainId: 480, + address: "0x79A02482A880bCE3F13e09Da970dC34db4CD24d1", + }, + { + chainId: 998, + address: "0x2B3370eE501B4a559b57D449569354196457D8Ab", + }, + { + chainId: 999, + address: "0xb88339CB7199b77E23DB6E890353E22632Ba630f", + }, + { + chainId: 1301, + address: "0x31d0220469e10c4E71834a79b1f276d740d3768F", + }, + { + chainId: 8453, + address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + }, + { + chainId: 10143, + address: "0xf817257fed379853cDe0fa4F97AB987181B1E5Ea", + }, + { + chainId: 42161, + address: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + }, + { + chainId: 57073, + address: "0x2D270e6886d130D724215A266106e6832161EAEd", + }, + { + chainId: 59144, + address: "0x176211869cA2b568f2A7D4EE941E073a821EE1ff", + }, + { + chainId: 80002, + address: "0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582", + }, + { + chainId: 84532, + address: "0x036CbD53842c5426634e7929541eC2318f3dCF7e", + }, + { + chainId: 421614, + address: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d", + }, + { + chainId: 534352, + address: "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4", + }, + { + chainId: 11155111, + address: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238", + }, + { + chainId: 11155420, + address: "0x5fd84259d66Cd46123540766Be93DFE6D43130D7", + }, + { + chainId: 34268394551451, + address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + }, + { + chainId: 133268194659241, + address: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU", + }, + ], + }, + { + name: "USD Coin (bridged)", + symbol: "USDC.e", + decimals: 6, + coingeckoId: "usd-coin-ethereum-bridged", + addresses: [ + { + chainId: 1, + address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + }, + { + chainId: 10, + address: "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + }, + { + chainId: 137, + address: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + }, + { + chainId: 288, + address: "0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc", + }, + { + chainId: 324, + address: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + }, + { + chainId: 1135, + address: "0xF242275d3a6527d877f2c927a82D9b057609cc71", + }, + { + chainId: 1868, + address: "0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369", + }, + { + chainId: 4217, + address: "0x20C000000000000000000000b9537d11c60E8b50", + }, + { + chainId: 34443, + address: "0xd988097fb8612cc24eeC14542bC03424c656005f", + }, + { + chainId: 41455, + address: "0x18d25B4e18165c97e1285212e5d1f80eDD6d3Aa7", + }, + { + chainId: 42161, + address: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + }, + { + chainId: 11155420, + address: "0x9552a0a6624A23B848060AE5901659CDDa1f83f8", + }, + ], + }, + { + name: "USD Coin (bridged)", + symbol: "USDbC", + decimals: 6, + coingeckoId: "bridged-usd-coin-base", + addresses: [ + { + chainId: 1, + address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + }, + { + chainId: 8453, + address: "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", + }, + { + chainId: 84532, + address: "0xE634Ec56B73779eCFfa78109a653FA0aE33D243f", + }, + ], + }, + { + name: "USD Coin (bridged)", + symbol: "USDzC", + decimals: 6, + coingeckoId: "usd-coin-ethereum-bridged", + addresses: [ + { + chainId: 1, + address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + }, + { + chainId: 7777777, + address: "0xCccCCccc7021b32EBb4e8C08314bD62F7c653EC4", + }, + ], + }, + { + name: "USD Coin", + symbol: "USDC-BNB", + decimals: 18, + coingeckoId: "usd-coin", + l1TokenDecimals: 6, + addresses: [ + { + chainId: 1, + address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + }, + { + chainId: 56, + address: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", + }, + ], + }, + { + name: "Hyperliquid USD", + symbol: "USDH", + decimals: 6, + coingeckoId: "usdh-2", + addresses: [ + { + chainId: 998, + address: "0x111111a1a0667d36bD57c0A9f569b98057111111", + }, + { + chainId: 999, + address: "0x111111a1a0667d36bD57c0A9f569b98057111111", + }, + ], + }, + { + name: "Hyperliquid USD", + symbol: "USDH-SPOT", + decimals: 8, + coingeckoId: "usdh-2", + addresses: [ + { + chainId: 1337, + address: "0x2000000000000000000000000000000000000168", + }, + ], + }, + { + name: "MegaUSD", + symbol: "USDM", + decimals: 18, + coingeckoId: "megausd", + addresses: [ + { + chainId: 1, + address: "0xEc2AF1C8B110a61fD9C3Fa6a554a031Ca9943926", + }, + { + chainId: 4326, + address: "0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7", + }, + ], + }, + { + name: "Tether USD", + symbol: "USDT", + decimals: 6, + coingeckoId: "tether", + addresses: [ + { + chainId: 1, + address: "0xdAC17F958D2ee523a2206206994597C13D831ec7", + }, + { + chainId: 10, + address: "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", + }, + { + chainId: 130, + address: "0x9151434b16b9763660705744891fA906F660EcC5", + }, + { + chainId: 137, + address: "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", + }, + { + chainId: 143, + address: "0xe7cd86e13AC4309349F30B3435a9d337750fC82D", + }, + { + chainId: 288, + address: "0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d", + }, + { + chainId: 324, + address: "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C", + }, + { + chainId: 999, + address: "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb", + }, + { + chainId: 1135, + address: "0x05D032ac25d322df992303dCa074EE7392C117b9", + }, + { + chainId: 4326, + address: "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb", + }, + { + chainId: 8453, + address: "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2", + }, + { + chainId: 9745, + address: "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb", + }, + { + chainId: 9746, + address: "0x12adA0e58293017eA3e5e6c1C0976F0f162A411b", + }, + { + chainId: 10143, + address: "0x88b8E2161DEDC77EF4ab7585569D2415a1C1055D", + }, + { + chainId: 34443, + address: "0xf0F161fDA2712DB8b566946122a5af183995e2eD", + }, + { + chainId: 41455, + address: "0xD648529D4803d3467bA8850577BEd4e4b8Ae583C", + }, + { + chainId: 42161, + address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", + }, + { + chainId: 57073, + address: "0x0200C29006150606B650577BBE7B6248F58470c1", + }, + { + chainId: 59144, + address: "0xA219439258ca9da29E9Cc4cE5596924745e12B93", + }, + { + chainId: 534352, + address: "0xf55BEC9cafDbE8730f096Aa55dad6D22d44099Df", + }, + { + chainId: 11155111, + address: "0x7169D38820dfd117C3FA1f22a697dBA58d90BA06", + }, + ], + }, + { + name: "Tether USD", + symbol: "USDT-BNB", + decimals: 18, + coingeckoId: "tether", + l1TokenDecimals: 6, + addresses: [ + { + chainId: 1, + address: "0xdAC17F958D2ee523a2206206994597C13D831ec7", + }, + { + chainId: 56, + address: "0x55d398326f99059fF775485246999027B3197955", + }, + ], + }, + { + name: "Tether USD", + symbol: "USDT-SPOT", + decimals: 8, + coingeckoId: "tether", + l1TokenDecimals: 6, + addresses: [ + { + chainId: 1, + address: "0xdAC17F958D2ee523a2206206994597C13D831ec7", + }, + { + chainId: 1337, + address: "0x200000000000000000000000000000000000010C", + }, + ], + }, + { + name: "Velora", + symbol: "VLR", + decimals: 18, + coingeckoId: "velora", + addresses: [ + { + chainId: 1, + address: "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74", + }, + { + chainId: 10, + address: "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74", + }, + { + chainId: 8453, + address: "0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74", + }, + ], + }, + { + name: "Plasma", + symbol: "XPL", + decimals: 18, + coingeckoId: "plasma", + addresses: [ + { + chainId: 9745, + address: "0x6100E367285b01F48D07953803A2d8dCA5D19873", + }, + { + chainId: 9746, + address: "0x6100E367285b01F48D07953803A2d8dCA5D19873", + }, + ], + }, + { + name: "Wrapped AZERO", + symbol: "WAZERO", + decimals: 18, + coingeckoId: "aleph-zero", + addresses: [ + { + chainId: 1, + address: "0xdD0ae774F7E300CdAA4EA371cD55169665Ee6AFe", + }, + { + chainId: 41455, + address: "0xb7Da55D7040ef9C887e20374D76A88F93A59119E", + }, + ], + }, + { + name: "Wrapped BNB", + symbol: "WBNB", + decimals: 18, + coingeckoId: "wbnb", + addresses: [ + { + chainId: 1, + address: "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", + }, + { + chainId: 56, + address: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c", + }, + ], + }, + { + name: "Wrapped Bitcoin", + symbol: "WBTC", + decimals: 8, + coingeckoId: "wrapped-bitcoin", + addresses: [ + { + chainId: 1, + address: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + }, + { + chainId: 10, + address: "0x68f180fcCe6836688e9084f035309E29Bf0A2095", + }, + { + chainId: 56, + address: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c", + }, + { + chainId: 130, + address: "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c", + }, + { + chainId: 137, + address: "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", + }, + { + chainId: 143, + address: "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c", + }, + { + chainId: 288, + address: "0xdc0486f8bf31DF57a952bcd3c1d3e166e3d9eC8b", + }, + { + chainId: 324, + address: "0xBBeB516fb02a01611cBBE0453Fe3c580D7281011", + }, + { + chainId: 480, + address: "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3", + }, + { + chainId: 1135, + address: "0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3", + }, + { + chainId: 10143, + address: "0xcf5a6076cfa32686c0Df13aBaDa2b40dec133F1d", + }, + { + chainId: 34443, + address: "0xcDd475325D6F564d27247D1DddBb0DAc6fA0a5CF", + }, + { + chainId: 42161, + address: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", + }, + { + chainId: 59144, + address: "0x3aAB2285ddcDdaD8edf438C1bAB47e1a9D05a9b4", + }, + { + chainId: 81457, + address: "0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692", + }, + { + chainId: 534352, + address: "0x3C1BCa5a656e69edCD0D4E36BEbb3FcDAcA60Cf1", + }, + { + chainId: 808813, + address: "0xAdCE1AB74C8e64c155953A8BdE37cBB06Cf7086D", + }, + { + chainId: 11155111, + address: "0x9D15Db83680572C9a48826d51b733ea3B0957De3", + }, + ], + }, + { + name: "Wrapped Ether", + symbol: "WETH", + decimals: 18, + coingeckoId: "weth", + addresses: [ + { + chainId: 1, + address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + }, + { + chainId: 10, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 56, + address: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + }, + { + chainId: 130, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 137, + address: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", + }, + { + chainId: 232, + address: "0xE5ecd226b3032910CEaa43ba92EE8232f8237553", + }, + { + chainId: 288, + address: "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", + }, + { + chainId: 300, + address: "0x2D6Db36B3117802E996f13073A08A685D3FeF7eD", + }, + { + chainId: 324, + address: "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91", + }, + { + chainId: 480, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 690, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 919, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 1135, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 1301, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 1868, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 4202, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 4326, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 8453, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 9745, + address: "0x9895D81bB462A195b4922ED7De0e3ACD007c32CB", + }, + { + chainId: 34443, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 37111, + address: "0xaA91D645D7a6C1aeaa5988e0547267B77d33fe16", + }, + { + chainId: 41455, + address: "0xB3f0eE446723f4258862D949B4c9688e7e7d35d3", + }, + { + chainId: 42161, + address: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + }, + { + chainId: 57073, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 59144, + address: "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f", + }, + { + chainId: 80002, + address: "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E", + }, + { + chainId: 81457, + address: "0x4300000000000000000000000000000000000004", + }, + { + chainId: 84532, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 421614, + address: "0x980B62Da83eFf3D4576C647993b0c1D7faf17c73", + }, + { + chainId: 534351, + address: "0x5300000000000000000000000000000000000004", + }, + { + chainId: 534352, + address: "0x5300000000000000000000000000000000000004", + }, + { + chainId: 763373, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 808813, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 7777777, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 11155111, + address: "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14", + }, + { + chainId: 11155420, + address: "0x4200000000000000000000000000000000000006", + }, + { + chainId: 168587773, + address: "0x4200000000000000000000000000000000000023", + }, + ], + }, + { + name: "Wrapped GHO Token", + symbol: "WGHO", + decimals: 18, + coingeckoId: "gho", + addresses: [ + { + chainId: 1, + address: "0x1ff1dC3cB9eeDbC6Eb2d99C03b30A05cA625fB5a", + }, + { + chainId: 232, + address: "0x6bDc36E20D267Ff0dd6097799f82e78907105e2F", + }, + ], + }, + { + name: "Wrapped Grass", + symbol: "WGRASS", + decimals: 18, + coingeckoId: "gho", + addresses: [ + { + chainId: 37111, + address: "0xeee5a340Cdc9c179Db25dea45AcfD5FE8d4d3eB8", + }, + { + chainId: 11155111, + address: "0x2Be68B15c693D3b5747F9F0D49D30A2E81BAA2Df", + }, + ], + }, + { + name: "Worldcoin", + symbol: "WLD", + decimals: 18, + coingeckoId: "worldcoin-wld", + addresses: [ + { + chainId: 1, + address: "0x163f8C2467924be0ae7B5347228CABF260318753", + }, + { + chainId: 10, + address: "0xdC6fF44d5d932Cbd77B52E5612Ba0529DC6226F1", + }, + { + chainId: 480, + address: "0x2cFc85d8E48F8EAB294be644d9E25C3030863003", + }, + ], + }, + { + name: "Matic", + symbol: "WMATIC", + decimals: 18, + coingeckoId: "wmatic", + addresses: [ + { + chainId: 1, + address: "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", + }, + { + chainId: 137, + address: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + }, + { + chainId: 80002, + address: "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", + }, + { + chainId: 11155111, + address: "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", + }, + ], + }, + { + name: "Wrapped Monad", + symbol: "WMON", + decimals: 18, + coingeckoId: "monad", + addresses: [ + { + chainId: 143, + address: "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A", + }, + { + chainId: 10143, + address: "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701", + }, + ], + }, + { + name: "Wrapped Polygon Ecosystem Token", + symbol: "WPOL", + decimals: 18, + coingeckoId: "wmatic", + addresses: [ + { + chainId: 1, + address: "0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6", + }, + { + chainId: 137, + address: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + }, + { + chainId: 80002, + address: "0x360ad4f9a9A8EFe9A8DCB5f461c4Cc1047E1Dcf9", + }, + { + chainId: 11155111, + address: "0x3fd0A53F4Bf853985a95F4Eb3F9C9FDE1F8e2b53", + }, + ], + }, + { + name: "Wrapped SOL", + symbol: "WSOL", + decimals: 9, + coingeckoId: "wrapped-solana", + addresses: [ + { + chainId: 34268394551451, + address: "So11111111111111111111111111111111111111112", + }, + { + chainId: 133268194659241, + address: "So11111111111111111111111111111111111111112", + }, + ], + }, + { + name: "Wrapped Plasma", + symbol: "WXPL", + decimals: 18, + coingeckoId: "plasma", + addresses: [ + { + chainId: 9745, + address: "0x6100E367285b01F48D07953803A2d8dCA5D19873", + }, + { + chainId: 9746, + address: "0x6100E367285b01F48D07953803A2d8dCA5D19873", + }, + ], + }, + { + name: "XYZ Token", + symbol: "XYZ", + decimals: 18, + coingeckoId: "xyz", + addresses: [ + { + chainId: 84532, + address: "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9", + }, + { + chainId: 11155111, + address: "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9", + }, + { + chainId: 11155420, + address: "0x180D555759e4d1d5Cf70C3BaBbAE4B8F410BDAD9", + }, + ], + }, + ], + tokenEquivalences: [ + { + symbol: "pathUSD", + targetSymbol: "USDC", + }, + { + symbol: "USDH", + targetSymbol: "USDC", + }, + { + symbol: "USDC.e", + targetSymbol: "USDC", + }, + { + symbol: "USDbC", + targetSymbol: "USDC", + }, + { + symbol: "USDzC", + targetSymbol: "USDC", + }, + { + symbol: "USDB", + targetSymbol: "DAI", + }, + { + symbol: "USDC-BNB", + targetSymbol: "USDC", + }, + { + symbol: "USDT-BNB", + targetSymbol: "USDT", + }, + { + symbol: "USDT-SPOT", + targetSymbol: "USDT", + }, + { + symbol: "LGHO", + targetSymbol: "WGHO", + }, + { + symbol: "ETH", + targetSymbol: "WETH", + }, + { + symbol: "BNB", + targetSymbol: "WBNB", + }, + { + symbol: "HYPE", + targetSymbol: "WHYPE", + }, + { + symbol: "XPL", + targetSymbol: "WXPL", + }, + ], +}; + +export default constantsV1; From cab690940397ff035bb6cb17ae473b8e5c22cd79 Mon Sep 17 00:00:00 2001 From: Ihor Farion Date: Fri, 20 Mar 2026 20:00:56 -0700 Subject: [PATCH 3/4] roll back node version Signed-off-by: Ihor Farion --- .eslintrc.cjs | 14 +++++++++----- package.json | 3 --- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 8424b07..ef64d86 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -5,17 +5,21 @@ module.exports = { mocha: true, node: true, }, - settings: { - node: { - version: ">=22.0.0", - }, - }, plugins: ["@typescript-eslint"], extends: ["standard", "plugin:prettier/recommended", "plugin:node/recommended"], parser: "@typescript-eslint/parser", parserOptions: { ecmaVersion: 12, }, + overrides: [ + { + files: ["scripts/**/*.mjs"], + rules: { + "node/no-unsupported-features/es-builtins": ["error", { version: ">=16.0.0" }], + "node/no-unsupported-features/node-builtins": ["error", { version: ">=16.0.0" }], + }, + }, + ], rules: { "node/no-unsupported-features/es-syntax": ["error", { ignores: ["modules"] }], "@typescript-eslint/no-var-requires": 0, diff --git a/package.json b/package.json index 7b67d39..ffe0d49 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,6 @@ "author": "hello@umaproject.org", "license": "AGPL-3.0-only", "private": false, - "engines": { - "node": ">=22.0.0" - }, "publishConfig": { "registry": "https://registry.npmjs.org/", "access": "public" From 80c446a9c99f8b97dfcdef77cee1ef964fa3b5db Mon Sep 17 00:00:00 2001 From: Ihor Farion Date: Fri, 20 Mar 2026 20:36:29 -0700 Subject: [PATCH 4/4] rename package + fix testnet mapping inconsintency vs. the legacy version Signed-off-by: Ihor Farion --- AGENTS.md | 8 ++++++-- README.md | 27 ++++++++++++++------------- package.json | 2 +- scripts/generate-legacy.mjs | 9 ++++++++- 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 2cdd652..d9b66bb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,6 @@ # AGENTS.md - constants -This repository contains `@across-protocol/constants` — a shared library exporting network, token, and address definitions used across the Across Protocol ecosystem. +This repository contains `@across-protocol/json-constants` — a shared library exporting network, token, and address definitions used across the Across Protocol ecosystem. ## How to use docs in this repo @@ -111,6 +111,10 @@ Recommended flow: 3. Run `yarn build`. 4. Run `yarn verify:legacy-equivalence`. +Legacy compatibility note: + +- `TESTNET_CHAIN_IDs` must continue to include both `testnet` and `testnet_sepolia` chains, matching the historical TypeScript API. + Do not edit `src/generated/canonical-types.ts`, `src/generated/constants.v1.ts`, `src/networks.ts`, or `src/tokens.ts` by hand. ## Publish process @@ -124,5 +128,5 @@ Do not edit `src/generated/canonical-types.ts`, `src/generated/constants.v1.ts`, ## Consumers - Existing TypeScript consumers should continue using the root package exports. -- TypeScript consumers that want the language-agnostic shape can use `@across-protocol/constants/canonical`. +- TypeScript consumers that want the language-agnostic shape can use `@across-protocol/json-constants/canonical`. - Non-TypeScript consumers should consume `data/constants.v1.json` against `schema/constants.v1.schema.json`. diff --git a/README.md b/README.md index 82aa26b..206916c 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,25 @@ # Across Constants -[![npm](https://img.shields.io/npm/v/@across-protocol/constants)](https://www.npmjs.com/package/@across-protocol/constants) +[![npm](https://img.shields.io/npm/v/@across-protocol/json-constants)](https://www.npmjs.com/package/@across-protocol/json-constants) Shared library exporting network, token, and address definitions used across the Across Protocol ecosystem. This package now has two public surfaces: -- The root package, `@across-protocol/constants`, which preserves the existing TypeScript legacy API. +- The root package, `@across-protocol/json-constants`, which preserves the existing TypeScript legacy API. - A canonical language-agnostic contract consisting of: - `data/constants.v1.json` - `schema/constants.v1.schema.json` - - `@across-protocol/constants/canonical` + - `@across-protocol/json-constants/canonical` ## Installation ```bash # npm -npm install @across-protocol/constants +npm install @across-protocol/json-constants # yarn -yarn add @across-protocol/constants +yarn add @across-protocol/json-constants ``` ## Usage @@ -27,7 +27,7 @@ yarn add @across-protocol/constants Legacy TypeScript surface: ```ts -import { TOKEN_SYMBOLS_MAP } from "@across-protocol/constants" +import { TOKEN_SYMBOLS_MAP } from "@across-protocol/json-constants" const usdc = TOKEN_SYMBOLS_MAP.USDC console.log(usdc.decimals) @@ -37,7 +37,7 @@ console.log(usdc.addresses[1]) Canonical TypeScript surface: ```ts -import { CONSTANTS_V1 } from "@across-protocol/constants/canonical" +import { CONSTANTS_V1 } from "@across-protocol/json-constants/canonical" const mainnet = CONSTANTS_V1.networks.find((network) => network.chainId === 1) console.log(mainnet?.name) @@ -45,12 +45,12 @@ console.log(mainnet?.name) ## Package Layout -| Surface | Description | -| -------------------------------------- | -------------------------------------------------- | -| `@across-protocol/constants` | Backward-compatible legacy TypeScript exports | -| `@across-protocol/constants/canonical` | Canonical TypeScript wrapper around canonical JSON | -| `data/constants.v1.json` | Canonical source of truth | -| `schema/constants.v1.schema.json` | Canonical JSON Schema | +| Surface | Description | +| ------------------------------------------- | -------------------------------------------------- | +| `@across-protocol/json-constants` | Backward-compatible legacy TypeScript exports | +| `@across-protocol/json-constants/canonical` | Canonical TypeScript wrapper around canonical JSON | +| `data/constants.v1.json` | Canonical source of truth | +| `schema/constants.v1.schema.json` | Canonical JSON Schema | The canonical JSON is the source of truth. The legacy root TypeScript exports are generated from it during `yarn build`. @@ -93,6 +93,7 @@ Do not edit generated files in `src/generated/`, `src/networks.ts`, or `src/toke - Canonical TypeScript types are generated from JSON Schema with `json-schema-to-typescript`. - The canonical TypeScript runtime module is generated from `data/constants.v1.json`. - Legacy TypeScript exports are generated from canonical JSON by `scripts/generate-legacy.mjs`. +- `TESTNET_CHAIN_IDs` intentionally preserves the legacy behavior of including both `testnet` and `testnet_sepolia` chains. ## Publishing diff --git a/package.json b/package.json index ffe0d49..a41956f 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@across-protocol/constants", + "name": "@across-protocol/json-constants", "version": "3.1.102", "description": "Export commonly re-used values for Across repositories", "repository": { diff --git a/scripts/generate-legacy.mjs b/scripts/generate-legacy.mjs index 3c01d8f..96f0fb2 100644 --- a/scripts/generate-legacy.mjs +++ b/scripts/generate-legacy.mjs @@ -20,6 +20,13 @@ const buildChainGroup = (group) => canonical.chains.filter((chain) => chain.groups.includes(group)).map((chain) => [chain.key, chain.chainId]), ); +const buildLegacyTestnetChainIds = () => + Object.fromEntries( + canonical.chains + .filter((chain) => chain.groups.includes("testnet") || chain.groups.includes("testnet_sepolia")) + .map((chain) => [chain.key, chain.chainId]), + ); + const buildOftMap = (group) => Object.fromEntries( canonical.networks @@ -48,7 +55,7 @@ const buildNetworks = (group) => const legacy = { TESTNET_SEPOLIA_CHAIN_IDs: buildChainGroup("testnet_sepolia"), - TESTNET_CHAIN_IDs: buildChainGroup("testnet"), + TESTNET_CHAIN_IDs: buildLegacyTestnetChainIds(), MAINNET_CHAIN_IDs: buildChainGroup("mainnet"), CHAIN_IDs: Object.fromEntries(canonical.chains.map((chain) => [chain.key, chain.chainId])), PRODUCTION_OFT_EIDs: buildOftMap("production"),