UNPKG

@uniswap/smart-order-router

Version:
647 lines 53.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.nativeOnChain = exports.ExtendedEther = exports.WRAPPED_NATIVE_CURRENCY = exports.ID_TO_PROVIDER = exports.CHAIN_IDS_LIST = exports.ID_TO_NETWORK_NAME = exports.NATIVE_CURRENCY = exports.NATIVE_NAMES_BY_ID = exports.NativeCurrencyName = exports.ChainName = exports.ID_TO_CHAIN_ID = exports.NETWORKS_WITH_SAME_UNISWAP_ADDRESSES = exports.HAS_L1_FEE = exports.MIXED_SUPPORTED = exports.V4_SUPPORTED = exports.V2_SUPPORTED = exports.SUPPORTED_CHAINS = void 0; const sdk_core_1 = require("@uniswap/sdk-core"); // WIP: Gnosis, Moonbeam exports.SUPPORTED_CHAINS = [ sdk_core_1.ChainId.MAINNET, sdk_core_1.ChainId.OPTIMISM, sdk_core_1.ChainId.OPTIMISM_GOERLI, sdk_core_1.ChainId.OPTIMISM_SEPOLIA, sdk_core_1.ChainId.ARBITRUM_ONE, sdk_core_1.ChainId.ARBITRUM_GOERLI, sdk_core_1.ChainId.ARBITRUM_SEPOLIA, sdk_core_1.ChainId.POLYGON, sdk_core_1.ChainId.POLYGON_MUMBAI, sdk_core_1.ChainId.SEPOLIA, sdk_core_1.ChainId.CELO_ALFAJORES, sdk_core_1.ChainId.CELO, sdk_core_1.ChainId.BNB, sdk_core_1.ChainId.AVALANCHE, sdk_core_1.ChainId.BASE, sdk_core_1.ChainId.BLAST, sdk_core_1.ChainId.ZORA, sdk_core_1.ChainId.ZKSYNC, sdk_core_1.ChainId.WORLDCHAIN, sdk_core_1.ChainId.UNICHAIN, sdk_core_1.ChainId.UNICHAIN_SEPOLIA, sdk_core_1.ChainId.MONAD_TESTNET, sdk_core_1.ChainId.BASE_SEPOLIA, // Gnosis and Moonbeam don't yet have contracts deployed yet ]; exports.V2_SUPPORTED = [ sdk_core_1.ChainId.MAINNET, sdk_core_1.ChainId.SEPOLIA, sdk_core_1.ChainId.ARBITRUM_ONE, sdk_core_1.ChainId.OPTIMISM, sdk_core_1.ChainId.POLYGON, sdk_core_1.ChainId.BASE, sdk_core_1.ChainId.BNB, sdk_core_1.ChainId.AVALANCHE, sdk_core_1.ChainId.MONAD_TESTNET, sdk_core_1.ChainId.UNICHAIN_SEPOLIA, sdk_core_1.ChainId.UNICHAIN, ]; exports.V4_SUPPORTED = [sdk_core_1.ChainId.SEPOLIA]; exports.MIXED_SUPPORTED = [ sdk_core_1.ChainId.MAINNET, sdk_core_1.ChainId.SEPOLIA, sdk_core_1.ChainId.GOERLI, sdk_core_1.ChainId.BASE, sdk_core_1.ChainId.UNICHAIN, sdk_core_1.ChainId.BASE, sdk_core_1.ChainId.ARBITRUM_ONE, sdk_core_1.ChainId.POLYGON, sdk_core_1.ChainId.OPTIMISM, sdk_core_1.ChainId.AVALANCHE, sdk_core_1.ChainId.BNB, sdk_core_1.ChainId.WORLDCHAIN, sdk_core_1.ChainId.ZORA, ]; exports.HAS_L1_FEE = [ sdk_core_1.ChainId.OPTIMISM, sdk_core_1.ChainId.OPTIMISM_GOERLI, sdk_core_1.ChainId.OPTIMISM_SEPOLIA, sdk_core_1.ChainId.ARBITRUM_ONE, sdk_core_1.ChainId.ARBITRUM_GOERLI, sdk_core_1.ChainId.ARBITRUM_SEPOLIA, sdk_core_1.ChainId.BASE, sdk_core_1.ChainId.BASE_GOERLI, sdk_core_1.ChainId.BLAST, sdk_core_1.ChainId.ZORA, sdk_core_1.ChainId.WORLDCHAIN, sdk_core_1.ChainId.UNICHAIN_SEPOLIA, sdk_core_1.ChainId.MONAD_TESTNET, sdk_core_1.ChainId.UNICHAIN, ]; exports.NETWORKS_WITH_SAME_UNISWAP_ADDRESSES = [ sdk_core_1.ChainId.MAINNET, sdk_core_1.ChainId.GOERLI, sdk_core_1.ChainId.OPTIMISM, sdk_core_1.ChainId.ARBITRUM_ONE, sdk_core_1.ChainId.POLYGON, sdk_core_1.ChainId.POLYGON_MUMBAI, ]; const ID_TO_CHAIN_ID = (id) => { switch (id) { case 1: return sdk_core_1.ChainId.MAINNET; case 5: return sdk_core_1.ChainId.GOERLI; case 11155111: return sdk_core_1.ChainId.SEPOLIA; case 56: return sdk_core_1.ChainId.BNB; case 10: return sdk_core_1.ChainId.OPTIMISM; case 420: return sdk_core_1.ChainId.OPTIMISM_GOERLI; case 11155420: return sdk_core_1.ChainId.OPTIMISM_SEPOLIA; case 42161: return sdk_core_1.ChainId.ARBITRUM_ONE; case 421613: return sdk_core_1.ChainId.ARBITRUM_GOERLI; case 421614: return sdk_core_1.ChainId.ARBITRUM_SEPOLIA; case 137: return sdk_core_1.ChainId.POLYGON; case 80001: return sdk_core_1.ChainId.POLYGON_MUMBAI; case 42220: return sdk_core_1.ChainId.CELO; case 44787: return sdk_core_1.ChainId.CELO_ALFAJORES; case 100: return sdk_core_1.ChainId.GNOSIS; case 1284: return sdk_core_1.ChainId.MOONBEAM; case 43114: return sdk_core_1.ChainId.AVALANCHE; case 8453: return sdk_core_1.ChainId.BASE; case 84531: return sdk_core_1.ChainId.BASE_GOERLI; case 84532: return sdk_core_1.ChainId.BASE_SEPOLIA; case 81457: return sdk_core_1.ChainId.BLAST; case 7777777: return sdk_core_1.ChainId.ZORA; case 324: return sdk_core_1.ChainId.ZKSYNC; case 480: return sdk_core_1.ChainId.WORLDCHAIN; case 1301: return sdk_core_1.ChainId.UNICHAIN_SEPOLIA; case 10143: return sdk_core_1.ChainId.MONAD_TESTNET; case 130: return sdk_core_1.ChainId.UNICHAIN; default: throw new Error(`Unknown chain id: ${id}`); } }; exports.ID_TO_CHAIN_ID = ID_TO_CHAIN_ID; var ChainName; (function (ChainName) { ChainName["MAINNET"] = "mainnet"; ChainName["GOERLI"] = "goerli"; ChainName["SEPOLIA"] = "sepolia"; ChainName["OPTIMISM"] = "optimism-mainnet"; ChainName["OPTIMISM_GOERLI"] = "optimism-goerli"; ChainName["OPTIMISM_SEPOLIA"] = "optimism-sepolia"; ChainName["ARBITRUM_ONE"] = "arbitrum-mainnet"; ChainName["ARBITRUM_GOERLI"] = "arbitrum-goerli"; ChainName["ARBITRUM_SEPOLIA"] = "arbitrum-sepolia"; ChainName["POLYGON"] = "polygon-mainnet"; ChainName["POLYGON_MUMBAI"] = "polygon-mumbai"; ChainName["CELO"] = "celo-mainnet"; ChainName["CELO_ALFAJORES"] = "celo-alfajores"; ChainName["GNOSIS"] = "gnosis-mainnet"; ChainName["MOONBEAM"] = "moonbeam-mainnet"; ChainName["BNB"] = "bnb-mainnet"; ChainName["AVALANCHE"] = "avalanche-mainnet"; ChainName["BASE"] = "base-mainnet"; ChainName["BASE_GOERLI"] = "base-goerli"; ChainName["BASE_SEPOLIA"] = "base-sepolia"; ChainName["BLAST"] = "blast-mainnet"; ChainName["ZORA"] = "zora-mainnet"; ChainName["ZKSYNC"] = "zksync-mainnet"; ChainName["WORLDCHAIN"] = "worldchain-mainnet"; ChainName["UNICHAIN_SEPOLIA"] = "unichain-sepolia"; ChainName["UNICHAIN"] = "unichain-mainnet"; ChainName["MONAD_TESTNET"] = "monad-testnet"; })(ChainName = exports.ChainName || (exports.ChainName = {})); var NativeCurrencyName; (function (NativeCurrencyName) { // Strings match input for CLI NativeCurrencyName["ETHER"] = "ETH"; NativeCurrencyName["MATIC"] = "MATIC"; NativeCurrencyName["CELO"] = "CELO"; NativeCurrencyName["GNOSIS"] = "XDAI"; NativeCurrencyName["MOONBEAM"] = "GLMR"; NativeCurrencyName["BNB"] = "BNB"; NativeCurrencyName["AVALANCHE"] = "AVAX"; NativeCurrencyName["MONAD"] = "MON"; })(NativeCurrencyName = exports.NativeCurrencyName || (exports.NativeCurrencyName = {})); exports.NATIVE_NAMES_BY_ID = { [sdk_core_1.ChainId.MAINNET]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.GOERLI]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.SEPOLIA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.OPTIMISM]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.OPTIMISM_GOERLI]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.OPTIMISM_SEPOLIA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.ARBITRUM_ONE]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.ARBITRUM_GOERLI]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.ARBITRUM_SEPOLIA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.POLYGON]: ['MATIC', '0x0000000000000000000000000000000000001010'], [sdk_core_1.ChainId.POLYGON_MUMBAI]: [ 'MATIC', '0x0000000000000000000000000000000000001010', ], [sdk_core_1.ChainId.CELO]: ['CELO'], [sdk_core_1.ChainId.CELO_ALFAJORES]: ['CELO'], [sdk_core_1.ChainId.GNOSIS]: ['XDAI'], [sdk_core_1.ChainId.MOONBEAM]: ['GLMR'], [sdk_core_1.ChainId.BNB]: ['BNB', 'BNB', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'], [sdk_core_1.ChainId.AVALANCHE]: [ 'AVAX', 'AVALANCHE', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.BASE]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.BLAST]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.ZORA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.ZKSYNC]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.WORLDCHAIN]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.UNICHAIN_SEPOLIA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.MONAD_TESTNET]: [ 'MON', 'MONAD', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.BASE_SEPOLIA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.UNICHAIN]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], }; exports.NATIVE_CURRENCY = { [sdk_core_1.ChainId.MAINNET]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.GOERLI]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.SEPOLIA]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.OPTIMISM]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.OPTIMISM_GOERLI]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.OPTIMISM_SEPOLIA]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.ARBITRUM_ONE]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.ARBITRUM_GOERLI]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.ARBITRUM_SEPOLIA]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.POLYGON]: NativeCurrencyName.MATIC, [sdk_core_1.ChainId.POLYGON_MUMBAI]: NativeCurrencyName.MATIC, [sdk_core_1.ChainId.CELO]: NativeCurrencyName.CELO, [sdk_core_1.ChainId.CELO_ALFAJORES]: NativeCurrencyName.CELO, [sdk_core_1.ChainId.GNOSIS]: NativeCurrencyName.GNOSIS, [sdk_core_1.ChainId.MOONBEAM]: NativeCurrencyName.MOONBEAM, [sdk_core_1.ChainId.BNB]: NativeCurrencyName.BNB, [sdk_core_1.ChainId.AVALANCHE]: NativeCurrencyName.AVALANCHE, [sdk_core_1.ChainId.BASE]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.BLAST]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.ZORA]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.ZKSYNC]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.WORLDCHAIN]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.UNICHAIN_SEPOLIA]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.MONAD_TESTNET]: NativeCurrencyName.MONAD, [sdk_core_1.ChainId.BASE_SEPOLIA]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.UNICHAIN]: NativeCurrencyName.ETHER, }; const ID_TO_NETWORK_NAME = (id) => { switch (id) { case 1: return ChainName.MAINNET; case 5: return ChainName.GOERLI; case 11155111: return ChainName.SEPOLIA; case 56: return ChainName.BNB; case 10: return ChainName.OPTIMISM; case 420: return ChainName.OPTIMISM_GOERLI; case 11155420: return ChainName.OPTIMISM_SEPOLIA; case 42161: return ChainName.ARBITRUM_ONE; case 421613: return ChainName.ARBITRUM_GOERLI; case 421614: return ChainName.ARBITRUM_SEPOLIA; case 137: return ChainName.POLYGON; case 80001: return ChainName.POLYGON_MUMBAI; case 42220: return ChainName.CELO; case 44787: return ChainName.CELO_ALFAJORES; case 100: return ChainName.GNOSIS; case 1284: return ChainName.MOONBEAM; case 43114: return ChainName.AVALANCHE; case 8453: return ChainName.BASE; case 84531: return ChainName.BASE_GOERLI; case 84532: return ChainName.BASE_SEPOLIA; case 81457: return ChainName.BLAST; case 7777777: return ChainName.ZORA; case 324: return ChainName.ZKSYNC; case 480: return ChainName.WORLDCHAIN; case 1301: return ChainName.UNICHAIN_SEPOLIA; case 130: return ChainName.UNICHAIN; case 10143: return ChainName.MONAD_TESTNET; default: throw new Error(`Unknown chain id: ${id}`); } }; exports.ID_TO_NETWORK_NAME = ID_TO_NETWORK_NAME; exports.CHAIN_IDS_LIST = Object.values(sdk_core_1.ChainId).map((c) => c.toString()); const ID_TO_PROVIDER = (id) => { switch (id) { case sdk_core_1.ChainId.MAINNET: return process.env.JSON_RPC_PROVIDER; case sdk_core_1.ChainId.GOERLI: return process.env.JSON_RPC_PROVIDER_GORLI; case sdk_core_1.ChainId.SEPOLIA: return process.env.JSON_RPC_PROVIDER_SEPOLIA; case sdk_core_1.ChainId.OPTIMISM: return process.env.JSON_RPC_PROVIDER_OPTIMISM; case sdk_core_1.ChainId.OPTIMISM_GOERLI: return process.env.JSON_RPC_PROVIDER_OPTIMISM_GOERLI; case sdk_core_1.ChainId.OPTIMISM_SEPOLIA: return process.env.JSON_RPC_PROVIDER_OPTIMISM_SEPOLIA; case sdk_core_1.ChainId.ARBITRUM_ONE: return process.env.JSON_RPC_PROVIDER_ARBITRUM_ONE; case sdk_core_1.ChainId.ARBITRUM_GOERLI: return process.env.JSON_RPC_PROVIDER_ARBITRUM_GOERLI; case sdk_core_1.ChainId.ARBITRUM_SEPOLIA: return process.env.JSON_RPC_PROVIDER_ARBITRUM_SEPOLIA; case sdk_core_1.ChainId.POLYGON: return process.env.JSON_RPC_PROVIDER_POLYGON; case sdk_core_1.ChainId.POLYGON_MUMBAI: return process.env.JSON_RPC_PROVIDER_POLYGON_MUMBAI; case sdk_core_1.ChainId.CELO: return process.env.JSON_RPC_PROVIDER_CELO; case sdk_core_1.ChainId.CELO_ALFAJORES: return process.env.JSON_RPC_PROVIDER_CELO_ALFAJORES; case sdk_core_1.ChainId.BNB: return process.env.JSON_RPC_PROVIDER_BNB; case sdk_core_1.ChainId.AVALANCHE: return process.env.JSON_RPC_PROVIDER_AVALANCHE; case sdk_core_1.ChainId.BASE: return process.env.JSON_RPC_PROVIDER_BASE; case sdk_core_1.ChainId.BLAST: return process.env.JSON_RPC_PROVIDER_BLAST; case sdk_core_1.ChainId.ZORA: return process.env.JSON_RPC_PROVIDER_ZORA; case sdk_core_1.ChainId.ZKSYNC: return process.env.JSON_RPC_PROVIDER_ZKSYNC; case sdk_core_1.ChainId.WORLDCHAIN: return process.env.JSON_RPC_PROVIDER_WORLDCHAIN; case sdk_core_1.ChainId.UNICHAIN_SEPOLIA: return process.env.JSON_RPC_PROVIDER_UNICHAIN_SEPOLIA; case sdk_core_1.ChainId.MONAD_TESTNET: return process.env.JSON_RPC_PROVIDER_MONAD_TESTNET; case sdk_core_1.ChainId.BASE_SEPOLIA: return process.env.JSON_RPC_PROVIDER_BASE_SEPOLIA; case sdk_core_1.ChainId.UNICHAIN: return process.env.JSON_RPC_PROVIDER_UNICHAIN; default: throw new Error(`Chain id: ${id} not supported`); } }; exports.ID_TO_PROVIDER = ID_TO_PROVIDER; exports.WRAPPED_NATIVE_CURRENCY = { [sdk_core_1.ChainId.MAINNET]: new sdk_core_1.Token(1, '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.GOERLI]: new sdk_core_1.Token(5, '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.SEPOLIA]: new sdk_core_1.Token(11155111, '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.BNB]: new sdk_core_1.Token(56, '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', 18, 'WBNB', 'Wrapped BNB'), [sdk_core_1.ChainId.OPTIMISM]: new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.OPTIMISM_GOERLI]: new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM_GOERLI, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.OPTIMISM_SEPOLIA]: new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM_SEPOLIA, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.ARBITRUM_ONE]: new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_ONE, '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.ARBITRUM_GOERLI]: new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_GOERLI, '0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.ARBITRUM_SEPOLIA]: new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_SEPOLIA, '0xc556bAe1e86B2aE9c22eA5E036b07E55E7596074', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.POLYGON]: new sdk_core_1.Token(sdk_core_1.ChainId.POLYGON, '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', 18, 'WMATIC', 'Wrapped MATIC'), [sdk_core_1.ChainId.POLYGON_MUMBAI]: new sdk_core_1.Token(sdk_core_1.ChainId.POLYGON_MUMBAI, '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', 18, 'WMATIC', 'Wrapped MATIC'), // The Celo native currency 'CELO' implements the erc-20 token standard [sdk_core_1.ChainId.CELO]: new sdk_core_1.Token(sdk_core_1.ChainId.CELO, '0x471EcE3750Da237f93B8E339c536989b8978a438', 18, 'CELO', 'Celo native asset'), [sdk_core_1.ChainId.CELO_ALFAJORES]: new sdk_core_1.Token(sdk_core_1.ChainId.CELO_ALFAJORES, '0xF194afDf50B03e69Bd7D057c1Aa9e10c9954E4C9', 18, 'CELO', 'Celo native asset'), [sdk_core_1.ChainId.GNOSIS]: new sdk_core_1.Token(sdk_core_1.ChainId.GNOSIS, '0xe91d153e0b41518a2ce8dd3d7944fa863463a97d', 18, 'WXDAI', 'Wrapped XDAI on Gnosis'), [sdk_core_1.ChainId.MOONBEAM]: new sdk_core_1.Token(sdk_core_1.ChainId.MOONBEAM, '0xAcc15dC74880C9944775448304B263D191c6077F', 18, 'WGLMR', 'Wrapped GLMR'), [sdk_core_1.ChainId.AVALANCHE]: new sdk_core_1.Token(sdk_core_1.ChainId.AVALANCHE, '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', 18, 'WAVAX', 'Wrapped AVAX'), [sdk_core_1.ChainId.BASE]: new sdk_core_1.Token(sdk_core_1.ChainId.BASE, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.BASE_GOERLI]: new sdk_core_1.Token(sdk_core_1.ChainId.BASE_GOERLI, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.ROOTSTOCK]: new sdk_core_1.Token(sdk_core_1.ChainId.ROOTSTOCK, '0x542fDA317318eBF1d3DEAf76E0b632741A7e677d', 18, 'WRBTC', 'Wrapped BTC'), [sdk_core_1.ChainId.ZORA]: new sdk_core_1.Token(sdk_core_1.ChainId.ZORA, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.ZORA_SEPOLIA]: new sdk_core_1.Token(sdk_core_1.ChainId.ZORA_SEPOLIA, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.BLAST]: new sdk_core_1.Token(sdk_core_1.ChainId.BLAST, '0x4300000000000000000000000000000000000004', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.ZKSYNC]: new sdk_core_1.Token(sdk_core_1.ChainId.ZKSYNC, '0x5aea5775959fbc2557cc8789bc1bf90a239d9a91', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.WORLDCHAIN]: new sdk_core_1.Token(sdk_core_1.ChainId.WORLDCHAIN, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.UNICHAIN_SEPOLIA]: new sdk_core_1.Token(sdk_core_1.ChainId.UNICHAIN_SEPOLIA, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.UNICHAIN]: new sdk_core_1.Token(sdk_core_1.ChainId.UNICHAIN, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.MONAD_TESTNET]: new sdk_core_1.Token(sdk_core_1.ChainId.MONAD_TESTNET, '0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701', 18, 'WMON', 'Wrapped Monad'), [sdk_core_1.ChainId.BASE_SEPOLIA]: new sdk_core_1.Token(sdk_core_1.ChainId.BASE_SEPOLIA, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), }; function isMatic(chainId) { return chainId === sdk_core_1.ChainId.POLYGON_MUMBAI || chainId === sdk_core_1.ChainId.POLYGON; } class MaticNativeCurrency extends sdk_core_1.NativeCurrency { equals(other) { return other.isNative && other.chainId === this.chainId; } get wrapped() { if (!isMatic(this.chainId)) throw new Error('Not matic'); const nativeCurrency = exports.WRAPPED_NATIVE_CURRENCY[this.chainId]; if (nativeCurrency) { return nativeCurrency; } throw new Error(`Does not support this chain ${this.chainId}`); } constructor(chainId) { if (!isMatic(chainId)) throw new Error('Not matic'); super(chainId, 18, 'MATIC', 'Polygon Matic'); } } function isCelo(chainId) { return chainId === sdk_core_1.ChainId.CELO_ALFAJORES || chainId === sdk_core_1.ChainId.CELO; } class CeloNativeCurrency extends sdk_core_1.NativeCurrency { equals(other) { return other.isNative && other.chainId === this.chainId; } get wrapped() { if (!isCelo(this.chainId)) throw new Error('Not celo'); const nativeCurrency = exports.WRAPPED_NATIVE_CURRENCY[this.chainId]; if (nativeCurrency) { return nativeCurrency; } throw new Error(`Does not support this chain ${this.chainId}`); } constructor(chainId) { if (!isCelo(chainId)) throw new Error('Not celo'); super(chainId, 18, 'CELO', 'Celo'); } } function isGnosis(chainId) { return chainId === sdk_core_1.ChainId.GNOSIS; } class GnosisNativeCurrency extends sdk_core_1.NativeCurrency { equals(other) { return other.isNative && other.chainId === this.chainId; } get wrapped() { if (!isGnosis(this.chainId)) throw new Error('Not gnosis'); const nativeCurrency = exports.WRAPPED_NATIVE_CURRENCY[this.chainId]; if (nativeCurrency) { return nativeCurrency; } throw new Error(`Does not support this chain ${this.chainId}`); } constructor(chainId) { if (!isGnosis(chainId)) throw new Error('Not gnosis'); super(chainId, 18, 'XDAI', 'xDai'); } } function isBnb(chainId) { return chainId === sdk_core_1.ChainId.BNB; } class BnbNativeCurrency extends sdk_core_1.NativeCurrency { equals(other) { return other.isNative && other.chainId === this.chainId; } get wrapped() { if (!isBnb(this.chainId)) throw new Error('Not bnb'); const nativeCurrency = exports.WRAPPED_NATIVE_CURRENCY[this.chainId]; if (nativeCurrency) { return nativeCurrency; } throw new Error(`Does not support this chain ${this.chainId}`); } constructor(chainId) { if (!isBnb(chainId)) throw new Error('Not bnb'); super(chainId, 18, 'BNB', 'BNB'); } } function isMoonbeam(chainId) { return chainId === sdk_core_1.ChainId.MOONBEAM; } class MoonbeamNativeCurrency extends sdk_core_1.NativeCurrency { equals(other) { return other.isNative && other.chainId === this.chainId; } get wrapped() { if (!isMoonbeam(this.chainId)) throw new Error('Not moonbeam'); const nativeCurrency = exports.WRAPPED_NATIVE_CURRENCY[this.chainId]; if (nativeCurrency) { return nativeCurrency; } throw new Error(`Does not support this chain ${this.chainId}`); } constructor(chainId) { if (!isMoonbeam(chainId)) throw new Error('Not moonbeam'); super(chainId, 18, 'GLMR', 'Glimmer'); } } function isAvax(chainId) { return chainId === sdk_core_1.ChainId.AVALANCHE; } class AvalancheNativeCurrency extends sdk_core_1.NativeCurrency { equals(other) { return other.isNative && other.chainId === this.chainId; } get wrapped() { if (!isAvax(this.chainId)) throw new Error('Not avalanche'); const nativeCurrency = exports.WRAPPED_NATIVE_CURRENCY[this.chainId]; if (nativeCurrency) { return nativeCurrency; } throw new Error(`Does not support this chain ${this.chainId}`); } constructor(chainId) { if (!isAvax(chainId)) throw new Error('Not avalanche'); super(chainId, 18, 'AVAX', 'Avalanche'); } } class ExtendedEther extends sdk_core_1.Ether { get wrapped() { if (this.chainId in exports.WRAPPED_NATIVE_CURRENCY) { return exports.WRAPPED_NATIVE_CURRENCY[this.chainId]; } throw new Error('Unsupported chain ID'); } static onChain(chainId) { var _a; return ((_a = this._cachedExtendedEther[chainId]) !== null && _a !== void 0 ? _a : (this._cachedExtendedEther[chainId] = new ExtendedEther(chainId))); } } exports.ExtendedEther = ExtendedEther; ExtendedEther._cachedExtendedEther = {}; const cachedNativeCurrency = {}; function nativeOnChain(chainId) { if (cachedNativeCurrency[chainId] != undefined) { return cachedNativeCurrency[chainId]; } if (isMatic(chainId)) { cachedNativeCurrency[chainId] = new MaticNativeCurrency(chainId); } else if (isCelo(chainId)) { cachedNativeCurrency[chainId] = new CeloNativeCurrency(chainId); } else if (isGnosis(chainId)) { cachedNativeCurrency[chainId] = new GnosisNativeCurrency(chainId); } else if (isMoonbeam(chainId)) { cachedNativeCurrency[chainId] = new MoonbeamNativeCurrency(chainId); } else if (isBnb(chainId)) { cachedNativeCurrency[chainId] = new BnbNativeCurrency(chainId); } else if (isAvax(chainId)) { cachedNativeCurrency[chainId] = new AvalancheNativeCurrency(chainId); } else { cachedNativeCurrency[chainId] = ExtendedEther.onChain(chainId); } return cachedNativeCurrency[chainId]; } exports.nativeOnChain = nativeOnChain; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWwvY2hhaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQU0yQjtBQUUzQix3QkFBd0I7QUFDWCxRQUFBLGdCQUFnQixHQUFjO0lBQ3pDLGtCQUFPLENBQUMsT0FBTztJQUNmLGtCQUFPLENBQUMsUUFBUTtJQUNoQixrQkFBTyxDQUFDLGVBQWU7SUFDdkIsa0JBQU8sQ0FBQyxnQkFBZ0I7SUFDeEIsa0JBQU8sQ0FBQyxZQUFZO0lBQ3BCLGtCQUFPLENBQUMsZUFBZTtJQUN2QixrQkFBTyxDQUFDLGdCQUFnQjtJQUN4QixrQkFBTyxDQUFDLE9BQU87SUFDZixrQkFBTyxDQUFDLGNBQWM7SUFDdEIsa0JBQU8sQ0FBQyxPQUFPO0lBQ2Ysa0JBQU8sQ0FBQyxjQUFjO0lBQ3RCLGtCQUFPLENBQUMsSUFBSTtJQUNaLGtCQUFPLENBQUMsR0FBRztJQUNYLGtCQUFPLENBQUMsU0FBUztJQUNqQixrQkFBTyxDQUFDLElBQUk7SUFDWixrQkFBTyxDQUFDLEtBQUs7SUFDYixrQkFBTyxDQUFDLElBQUk7SUFDWixrQkFBTyxDQUFDLE1BQU07SUFDZCxrQkFBTyxDQUFDLFVBQVU7SUFDbEIsa0JBQU8sQ0FBQyxRQUFRO0lBQ2hCLGtCQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLGtCQUFPLENBQUMsYUFBYTtJQUNyQixrQkFBTyxDQUFDLFlBQVk7SUFDcEIsNERBQTREO0NBQzdELENBQUM7QUFFVyxRQUFBLFlBQVksR0FBRztJQUMxQixrQkFBTyxDQUFDLE9BQU87SUFDZixrQkFBTyxDQUFDLE9BQU87SUFDZixrQkFBTyxDQUFDLFlBQVk7SUFDcEIsa0JBQU8sQ0FBQyxRQUFRO0lBQ2hCLGtCQUFPLENBQUMsT0FBTztJQUNmLGtCQUFPLENBQUMsSUFBSTtJQUNaLGtCQUFPLENBQUMsR0FBRztJQUNYLGtCQUFPLENBQUMsU0FBUztJQUNqQixrQkFBTyxDQUFDLGFB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