UNPKG

@uniswap/smart-order-router

Version:
770 lines 62.5 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_CROSS_LIQUIDITY_V3_AGAINST_V4_SUPPORTED = 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.MONAD, sdk_core_1.ChainId.BASE_SEPOLIA, sdk_core_1.ChainId.SONEIUM, sdk_core_1.ChainId.XLAYER, // 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.MONAD, sdk_core_1.ChainId.UNICHAIN_SEPOLIA, sdk_core_1.ChainId.UNICHAIN, sdk_core_1.ChainId.SONEIUM, sdk_core_1.ChainId.XLAYER, ]; exports.V4_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.MONAD, sdk_core_1.ChainId.UNICHAIN_SEPOLIA, sdk_core_1.ChainId.UNICHAIN, sdk_core_1.ChainId.SONEIUM, sdk_core_1.ChainId.CELO, sdk_core_1.ChainId.XLAYER, ]; 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, // ChainId.MONAD, // ROUTE-760: enable this when monad is supported by the router 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, sdk_core_1.ChainId.SONEIUM, sdk_core_1.ChainId.XLAYER, sdk_core_1.ChainId.MONAD, ]; exports.MIXED_CROSS_LIQUIDITY_V3_AGAINST_V4_SUPPORTED = [sdk_core_1.ChainId.BASE]; 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.MONAD, sdk_core_1.ChainId.UNICHAIN, sdk_core_1.ChainId.SONEIUM, sdk_core_1.ChainId.XLAYER, ]; 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 143: return sdk_core_1.ChainId.MONAD; case 130: return sdk_core_1.ChainId.UNICHAIN; case 1868: return sdk_core_1.ChainId.SONEIUM; case 196: return sdk_core_1.ChainId.XLAYER; 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["SONEIUM"] = "soneium-mainnet"; ChainName["MONAD"] = "monad-mainnet"; ChainName["XLAYER"] = "xlayer-mainnet"; })(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["XLAYER"] = "OKB"; })(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.MONAD]: [ 'MON', 'MONAD', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.BASE_SEPOLIA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.UNICHAIN]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.SONEIUM]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [sdk_core_1.ChainId.XLAYER]: [ 'OKB', 'OKB', '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.MONAD]: NativeCurrencyName.MONAD, [sdk_core_1.ChainId.BASE_SEPOLIA]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.UNICHAIN]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.SONEIUM]: NativeCurrencyName.ETHER, [sdk_core_1.ChainId.XLAYER]: NativeCurrencyName.XLAYER, }; 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; case 143: return ChainName.MONAD; case 1868: return ChainName.SONEIUM; case 196: return ChainName.XLAYER; 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.MONAD: return process.env.JSON_RPC_PROVIDER_MONAD; 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; case sdk_core_1.ChainId.SONEIUM: return process.env.JSON_RPC_PROVIDER_SONEIUM; case sdk_core_1.ChainId.XLAYER: return process.env.JSON_RPC_PROVIDER_XLAYER; 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, '0x980B62Da83eFf3D4576C647993b0c1D7faf17c73', 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.MONAD]: new sdk_core_1.Token(sdk_core_1.ChainId.MONAD, '0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A', 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'), [sdk_core_1.ChainId.SONEIUM]: new sdk_core_1.Token(sdk_core_1.ChainId.SONEIUM, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [sdk_core_1.ChainId.XLAYER]: new sdk_core_1.Token(sdk_core_1.ChainId.XLAYER, '0xe538905cf8410324e03A5A23C1c177a474D59b2b', 18, 'WOKB', 'Wrapped OKB'), }; 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'); } } function isMonad(chainId) { return chainId === sdk_core_1.ChainId.MONAD; } class MonadNativeCurrency extends sdk_core_1.NativeCurrency { equals(other) { return other.isNative && other.chainId === this.chainId; } get wrapped() { if (!isMonad(this.chainId)) throw new Error('Not monad'); 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 (!isMonad(chainId)) throw new Error('Not monad'); super(chainId, 18, 'MON', 'Monad'); } } function isXLayer(chainId) { return chainId === sdk_core_1.ChainId.XLAYER; } class XLayerNativeCurrency extends sdk_core_1.NativeCurrency { equals(other) { return other.isNative && other.chainId === this.chainId; } get wrapped() { if (!isXLayer(this.chainId)) throw new Error('Not xlayer'); 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 (!isXLayer(chainId)) throw new Error('Not xlayer'); super(chainId, 18, 'OKB', 'OKB'); } } 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 if (isMonad(chainId)) { cachedNativeCurrency[chainId] = new MonadNativeCurrency(chainId); } else if (isXLayer(chainId)) { cachedNativeCurrency[chainId] = new XLayerNativeCurrency(chainId); } else { cachedNativeCurrency[chainId] = ExtendedEther.onChain(chainId); } return cachedNativeCurrency[chainId]; } exports.nativeOnChain = nativeOnChain; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWwvY2hhaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQU0yQjtBQUUzQix3QkFBd0I7QUFDWCxRQUFBLGdCQUFnQixHQUFjO0lBQ3pDLGtCQUFPLENBQUMsT0FBTztJQUNmLGtCQUFPLENBQUMsUUFBUTtJQUNoQixrQkFBTyxDQUFDLGVBQWU7SUFDdkIsa0JBQU8sQ0FBQyxnQkFBZ0I7SUFDeEIsa0JBQU8sQ0FBQyxZQUFZO0lBQ3BCLGtCQUFPLENBQUMsZUFBZTtJQUN2QixrQkFBTyxDQUFDLGdCQUFnQjtJQUN4QixrQkFBTyxDQUFDLE9BQU87SUFDZixrQkFBTyxDQUFDLGNBQWM7SUFDdEIsa0JBQU8sQ0FBQyxPQUFPO0lBQ2Ysa0JBQU8sQ0FBQyxjQUFjO0lBQ3RCLGtCQUFPLENBQUMsSUFBSTtJQUNaLGtCQUFPLENBQUMsR0FBRztJQUNYLGtCQUFPLENBQUMsU0FBUztJQUNqQixrQkFBTyxDQUFDLElBQUk7SUFDWixrQkFBTyxDQUFDLEtBQUs7SUFDYixrQkFBTyxDQUFDLElBQUk7SUFDWixrQkFBTyxDQUFDLE1BQU07SUFDZCxrQkFBTyxDQUFDLFVBQVU7SUFDbEIsa0JBQU8sQ0FBQyxRQUFRO0lBQ2hCLGtCQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLGtCQUFPLENBQUMsYUFBYTtJQUNyQixrQkFBTyxDQUFDLEtBQUs7SUFDYixrQkFBTyxDQUFDLFlBQVk7SUFDcEIsa0JBQU8sQ0FBQyxPQUFPO0lBQ2Ysa0JBQU8sQ0FBQyxNQUFNO0lBQ2QsNERBQTREO0NBQzdELENBQUM7QUFFVyxRQUFBLFlBQVksR0FBRztJQUMxQixrQkFBTyxDQUFDLE9BQU87SUFDZixrQkFBTyxDQUFDLE9BQU87SUFDZixrQkFBTyxDQUFDLFlBQVk7SUFDcEIsa0JBQU8sQ0FBQyxRQUFRO0lBQ2hCLGtCQUFPLENBQUMsT0FBTztJQUNmLGtCQUFPLENBQUMsSUFB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