UNPKG

@maxosllc/smart-order-router

Version:
730 lines 56.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 = exports.ChainId = void 0; const sdk_core_1 = require("@uniswap/sdk-core"); var ChainId; (function (ChainId) { ChainId[ChainId["MAINNET"] = 1] = "MAINNET"; ChainId[ChainId["GOERLI"] = 5] = "GOERLI"; ChainId[ChainId["SEPOLIA"] = 11155111] = "SEPOLIA"; ChainId[ChainId["OPTIMISM"] = 10] = "OPTIMISM"; ChainId[ChainId["OPTIMISM_GOERLI"] = 420] = "OPTIMISM_GOERLI"; ChainId[ChainId["OPTIMISM_SEPOLIA"] = 11155420] = "OPTIMISM_SEPOLIA"; ChainId[ChainId["ARBITRUM_ONE"] = 42161] = "ARBITRUM_ONE"; ChainId[ChainId["ARBITRUM_GOERLI"] = 421613] = "ARBITRUM_GOERLI"; ChainId[ChainId["ARBITRUM_SEPOLIA"] = 421614] = "ARBITRUM_SEPOLIA"; ChainId[ChainId["POLYGON"] = 137] = "POLYGON"; ChainId[ChainId["POLYGON_MUMBAI"] = 80001] = "POLYGON_MUMBAI"; ChainId[ChainId["CELO"] = 42220] = "CELO"; ChainId[ChainId["CELO_ALFAJORES"] = 44787] = "CELO_ALFAJORES"; ChainId[ChainId["GNOSIS"] = 100] = "GNOSIS"; ChainId[ChainId["MOONBEAM"] = 1284] = "MOONBEAM"; ChainId[ChainId["BNB"] = 56] = "BNB"; ChainId[ChainId["AVALANCHE"] = 43114] = "AVALANCHE"; ChainId[ChainId["BASE_GOERLI"] = 84531] = "BASE_GOERLI"; ChainId[ChainId["BASE_SEPOLIA"] = 84532] = "BASE_SEPOLIA"; ChainId[ChainId["BASE"] = 8453] = "BASE"; ChainId[ChainId["ZORA"] = 7777777] = "ZORA"; ChainId[ChainId["ZORA_SEPOLIA"] = 999999999] = "ZORA_SEPOLIA"; ChainId[ChainId["ROOTSTOCK"] = 30] = "ROOTSTOCK"; ChainId[ChainId["BLAST"] = 81457] = "BLAST"; ChainId[ChainId["ZKSYNC"] = 324] = "ZKSYNC"; ChainId[ChainId["WORLDCHAIN"] = 480] = "WORLDCHAIN"; ChainId[ChainId["UNICHAIN_SEPOLIA"] = 1301] = "UNICHAIN_SEPOLIA"; ChainId[ChainId["UNICHAIN"] = 130] = "UNICHAIN"; ChainId[ChainId["MONAD_TESTNET"] = 10143] = "MONAD_TESTNET"; ChainId[ChainId["SONEIUM"] = 1868] = "SONEIUM"; ChainId[ChainId["BLOCKDAG_TESTNET"] = 1043] = "BLOCKDAG_TESTNET"; })(ChainId = exports.ChainId || (exports.ChainId = {})); // WIP: Gnosis, Moonbeam exports.SUPPORTED_CHAINS = [ ChainId.MAINNET, ChainId.OPTIMISM, ChainId.OPTIMISM_GOERLI, ChainId.OPTIMISM_SEPOLIA, ChainId.ARBITRUM_ONE, ChainId.ARBITRUM_GOERLI, ChainId.ARBITRUM_SEPOLIA, ChainId.POLYGON, ChainId.POLYGON_MUMBAI, ChainId.SEPOLIA, ChainId.CELO_ALFAJORES, ChainId.CELO, ChainId.BNB, ChainId.AVALANCHE, ChainId.BASE, ChainId.BLAST, ChainId.ZORA, ChainId.ZKSYNC, ChainId.WORLDCHAIN, ChainId.UNICHAIN, ChainId.UNICHAIN_SEPOLIA, ChainId.MONAD_TESTNET, ChainId.BASE_SEPOLIA, ChainId.SONEIUM, // Gnosis and Moonbeam don't yet have contracts deployed yet ChainId.BLOCKDAG_TESTNET ]; exports.V2_SUPPORTED = [ ChainId.MAINNET, ChainId.SEPOLIA, ChainId.ARBITRUM_ONE, ChainId.OPTIMISM, ChainId.POLYGON, ChainId.BASE, ChainId.BNB, ChainId.AVALANCHE, ChainId.MONAD_TESTNET, ChainId.UNICHAIN_SEPOLIA, ChainId.UNICHAIN, ChainId.SONEIUM, ChainId.BLOCKDAG_TESTNET, ]; exports.V4_SUPPORTED = [ ChainId.MAINNET, ChainId.SEPOLIA, ChainId.ARBITRUM_ONE, ChainId.OPTIMISM, ChainId.POLYGON, ChainId.BASE, ChainId.BNB, ChainId.AVALANCHE, ChainId.MONAD_TESTNET, ChainId.UNICHAIN_SEPOLIA, ChainId.UNICHAIN, ChainId.SONEIUM, ChainId.BLOCKDAG_TESTNET, ]; exports.MIXED_SUPPORTED = [ ChainId.MAINNET, ChainId.SEPOLIA, ChainId.GOERLI, ChainId.BASE, ChainId.UNICHAIN, ChainId.BASE, ChainId.ARBITRUM_ONE, ChainId.POLYGON, ChainId.OPTIMISM, ChainId.AVALANCHE, ChainId.BNB, ChainId.WORLDCHAIN, ChainId.ZORA, ChainId.SONEIUM, ChainId.BLOCKDAG_TESTNET, ]; exports.HAS_L1_FEE = [ ChainId.OPTIMISM, ChainId.OPTIMISM_GOERLI, ChainId.OPTIMISM_SEPOLIA, ChainId.ARBITRUM_ONE, ChainId.ARBITRUM_GOERLI, ChainId.ARBITRUM_SEPOLIA, ChainId.BASE, ChainId.BASE_GOERLI, ChainId.BLAST, ChainId.ZORA, ChainId.WORLDCHAIN, ChainId.UNICHAIN_SEPOLIA, ChainId.MONAD_TESTNET, ChainId.UNICHAIN, ChainId.SONEIUM, ]; exports.NETWORKS_WITH_SAME_UNISWAP_ADDRESSES = [ ChainId.MAINNET, ChainId.GOERLI, ChainId.OPTIMISM, ChainId.ARBITRUM_ONE, ChainId.POLYGON, ChainId.POLYGON_MUMBAI, ]; const ID_TO_CHAIN_ID = (id) => { switch (id) { case 1: return ChainId.MAINNET; case 5: return ChainId.GOERLI; case 11155111: return ChainId.SEPOLIA; case 56: return ChainId.BNB; case 10: return ChainId.OPTIMISM; case 420: return ChainId.OPTIMISM_GOERLI; case 11155420: return ChainId.OPTIMISM_SEPOLIA; case 42161: return ChainId.ARBITRUM_ONE; case 421613: return ChainId.ARBITRUM_GOERLI; case 421614: return ChainId.ARBITRUM_SEPOLIA; case 137: return ChainId.POLYGON; case 80001: return ChainId.POLYGON_MUMBAI; case 42220: return ChainId.CELO; case 44787: return ChainId.CELO_ALFAJORES; case 100: return ChainId.GNOSIS; case 1284: return ChainId.MOONBEAM; case 43114: return ChainId.AVALANCHE; case 8453: return ChainId.BASE; case 84531: return ChainId.BASE_GOERLI; case 84532: return ChainId.BASE_SEPOLIA; case 81457: return ChainId.BLAST; case 7777777: return ChainId.ZORA; case 324: return ChainId.ZKSYNC; case 480: return ChainId.WORLDCHAIN; case 1301: return ChainId.UNICHAIN_SEPOLIA; case 10143: return ChainId.MONAD_TESTNET; case 130: return ChainId.UNICHAIN; case 1868: return ChainId.SONEIUM; case 1043: return ChainId.BLOCKDAG_TESTNET; 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["BLOCKDAG_TESTNET"] = "blockdag-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["BDAG"] = "BDAG"; })(NativeCurrencyName = exports.NativeCurrencyName || (exports.NativeCurrencyName = {})); exports.NATIVE_NAMES_BY_ID = { [ChainId.BLOCKDAG_TESTNET]: [ 'BDAG', 'BDAG', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.MAINNET]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.GOERLI]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.SEPOLIA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.OPTIMISM]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.OPTIMISM_GOERLI]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.OPTIMISM_SEPOLIA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.ARBITRUM_ONE]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.ARBITRUM_GOERLI]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.ARBITRUM_SEPOLIA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.POLYGON]: ['MATIC', '0x0000000000000000000000000000000000001010'], [ChainId.POLYGON_MUMBAI]: [ 'MATIC', '0x0000000000000000000000000000000000001010', ], [ChainId.CELO]: ['CELO'], [ChainId.CELO_ALFAJORES]: ['CELO'], [ChainId.GNOSIS]: ['XDAI'], [ChainId.MOONBEAM]: ['GLMR'], [ChainId.BNB]: ['BNB', 'BNB', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'], [ChainId.AVALANCHE]: [ 'AVAX', 'AVALANCHE', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.BASE]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.BLAST]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.ZORA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.ZKSYNC]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.WORLDCHAIN]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.UNICHAIN_SEPOLIA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.MONAD_TESTNET]: [ 'MON', 'MONAD', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.BASE_SEPOLIA]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.UNICHAIN]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], [ChainId.SONEIUM]: [ 'ETH', 'ETHER', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', ], }; exports.NATIVE_CURRENCY = { [ChainId.MAINNET]: NativeCurrencyName.ETHER, [ChainId.GOERLI]: NativeCurrencyName.ETHER, [ChainId.SEPOLIA]: NativeCurrencyName.ETHER, [ChainId.OPTIMISM]: NativeCurrencyName.ETHER, [ChainId.OPTIMISM_GOERLI]: NativeCurrencyName.ETHER, [ChainId.OPTIMISM_SEPOLIA]: NativeCurrencyName.ETHER, [ChainId.ARBITRUM_ONE]: NativeCurrencyName.ETHER, [ChainId.ARBITRUM_GOERLI]: NativeCurrencyName.ETHER, [ChainId.ARBITRUM_SEPOLIA]: NativeCurrencyName.ETHER, [ChainId.POLYGON]: NativeCurrencyName.MATIC, [ChainId.POLYGON_MUMBAI]: NativeCurrencyName.MATIC, [ChainId.CELO]: NativeCurrencyName.CELO, [ChainId.CELO_ALFAJORES]: NativeCurrencyName.CELO, [ChainId.GNOSIS]: NativeCurrencyName.GNOSIS, [ChainId.MOONBEAM]: NativeCurrencyName.MOONBEAM, [ChainId.BNB]: NativeCurrencyName.BNB, [ChainId.AVALANCHE]: NativeCurrencyName.AVALANCHE, [ChainId.BASE]: NativeCurrencyName.ETHER, [ChainId.BLAST]: NativeCurrencyName.ETHER, [ChainId.ZORA]: NativeCurrencyName.ETHER, [ChainId.ZKSYNC]: NativeCurrencyName.ETHER, [ChainId.WORLDCHAIN]: NativeCurrencyName.ETHER, [ChainId.UNICHAIN_SEPOLIA]: NativeCurrencyName.ETHER, [ChainId.MONAD_TESTNET]: NativeCurrencyName.MONAD, [ChainId.BASE_SEPOLIA]: NativeCurrencyName.ETHER, [ChainId.UNICHAIN]: NativeCurrencyName.ETHER, [ChainId.SONEIUM]: 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; case 1868: return ChainName.SONEIUM; case 1043: return ChainName.BLOCKDAG_TESTNET; default: throw new Error(`Unknown chain id: ${id}`); } }; exports.ID_TO_NETWORK_NAME = ID_TO_NETWORK_NAME; exports.CHAIN_IDS_LIST = Object.values(ChainId).map((c) => c.toString()); const ID_TO_PROVIDER = (id) => { switch (id) { case ChainId.MAINNET: return process.env.JSON_RPC_PROVIDER; case ChainId.GOERLI: return process.env.JSON_RPC_PROVIDER_GORLI; case ChainId.SEPOLIA: return process.env.JSON_RPC_PROVIDER_SEPOLIA; case ChainId.OPTIMISM: return process.env.JSON_RPC_PROVIDER_OPTIMISM; case ChainId.OPTIMISM_GOERLI: return process.env.JSON_RPC_PROVIDER_OPTIMISM_GOERLI; case ChainId.OPTIMISM_SEPOLIA: return process.env.JSON_RPC_PROVIDER_OPTIMISM_SEPOLIA; case ChainId.ARBITRUM_ONE: return process.env.JSON_RPC_PROVIDER_ARBITRUM_ONE; case ChainId.ARBITRUM_GOERLI: return process.env.JSON_RPC_PROVIDER_ARBITRUM_GOERLI; case ChainId.ARBITRUM_SEPOLIA: return process.env.JSON_RPC_PROVIDER_ARBITRUM_SEPOLIA; case ChainId.POLYGON: return process.env.JSON_RPC_PROVIDER_POLYGON; case ChainId.POLYGON_MUMBAI: return process.env.JSON_RPC_PROVIDER_POLYGON_MUMBAI; case ChainId.CELO: return process.env.JSON_RPC_PROVIDER_CELO; case ChainId.CELO_ALFAJORES: return process.env.JSON_RPC_PROVIDER_CELO_ALFAJORES; case ChainId.BNB: return process.env.JSON_RPC_PROVIDER_BNB; case ChainId.AVALANCHE: return process.env.JSON_RPC_PROVIDER_AVALANCHE; case ChainId.BASE: return process.env.JSON_RPC_PROVIDER_BASE; case ChainId.BLAST: return process.env.JSON_RPC_PROVIDER_BLAST; case ChainId.ZORA: return process.env.JSON_RPC_PROVIDER_ZORA; case ChainId.ZKSYNC: return process.env.JSON_RPC_PROVIDER_ZKSYNC; case ChainId.WORLDCHAIN: return process.env.JSON_RPC_PROVIDER_WORLDCHAIN; case ChainId.UNICHAIN_SEPOLIA: return process.env.JSON_RPC_PROVIDER_UNICHAIN_SEPOLIA; case ChainId.MONAD_TESTNET: return process.env.JSON_RPC_PROVIDER_MONAD_TESTNET; case ChainId.BASE_SEPOLIA: return process.env.JSON_RPC_PROVIDER_BASE_SEPOLIA; case ChainId.UNICHAIN: return process.env.JSON_RPC_PROVIDER_UNICHAIN; case ChainId.SONEIUM: return process.env.JSON_RPC_PROVIDER_SONEIUM; case ChainId.BLOCKDAG_TESTNET: return process.env.JSON_RPC_PROVIDER_BLOCKDAG_TESTNET; default: throw new Error(`Chain id: ${id} not supported`); } }; exports.ID_TO_PROVIDER = ID_TO_PROVIDER; exports.WRAPPED_NATIVE_CURRENCY = { [ChainId.BLOCKDAG_TESTNET]: new sdk_core_1.Token(1043, '0xC97B4e92fB267bB11b1CD2d475F9E8c16b433289', 18, 'WETH', 'Wrapped Ether'), [ChainId.MAINNET]: new sdk_core_1.Token(1, '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', 18, 'WETH', 'Wrapped Ether'), [ChainId.GOERLI]: new sdk_core_1.Token(5, '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', 18, 'WETH', 'Wrapped Ether'), [ChainId.SEPOLIA]: new sdk_core_1.Token(11155111, '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14', 18, 'WETH', 'Wrapped Ether'), [ChainId.BNB]: new sdk_core_1.Token(56, '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', 18, 'WBNB', 'Wrapped BNB'), [ChainId.OPTIMISM]: new sdk_core_1.Token(ChainId.OPTIMISM, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.OPTIMISM_GOERLI]: new sdk_core_1.Token(ChainId.OPTIMISM_GOERLI, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.OPTIMISM_SEPOLIA]: new sdk_core_1.Token(ChainId.OPTIMISM_SEPOLIA, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.ARBITRUM_ONE]: new sdk_core_1.Token(ChainId.ARBITRUM_ONE, '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', 18, 'WETH', 'Wrapped Ether'), [ChainId.ARBITRUM_GOERLI]: new sdk_core_1.Token(ChainId.ARBITRUM_GOERLI, '0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3', 18, 'WETH', 'Wrapped Ether'), [ChainId.ARBITRUM_SEPOLIA]: new sdk_core_1.Token(ChainId.ARBITRUM_SEPOLIA, '0x980B62Da83eFf3D4576C647993b0c1D7faf17c73', 18, 'WETH', 'Wrapped Ether'), [ChainId.POLYGON]: new sdk_core_1.Token(ChainId.POLYGON, '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', 18, 'WMATIC', 'Wrapped MATIC'), [ChainId.POLYGON_MUMBAI]: new sdk_core_1.Token(ChainId.POLYGON_MUMBAI, '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', 18, 'WMATIC', 'Wrapped MATIC'), // The Celo native currency 'CELO' implements the erc-20 token standard [ChainId.CELO]: new sdk_core_1.Token(ChainId.CELO, '0x471EcE3750Da237f93B8E339c536989b8978a438', 18, 'CELO', 'Celo native asset'), [ChainId.CELO_ALFAJORES]: new sdk_core_1.Token(ChainId.CELO_ALFAJORES, '0xF194afDf50B03e69Bd7D057c1Aa9e10c9954E4C9', 18, 'CELO', 'Celo native asset'), [ChainId.GNOSIS]: new sdk_core_1.Token(ChainId.GNOSIS, '0xe91d153e0b41518a2ce8dd3d7944fa863463a97d', 18, 'WXDAI', 'Wrapped XDAI on Gnosis'), [ChainId.MOONBEAM]: new sdk_core_1.Token(ChainId.MOONBEAM, '0xAcc15dC74880C9944775448304B263D191c6077F', 18, 'WGLMR', 'Wrapped GLMR'), [ChainId.AVALANCHE]: new sdk_core_1.Token(ChainId.AVALANCHE, '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', 18, 'WAVAX', 'Wrapped AVAX'), [ChainId.BASE]: new sdk_core_1.Token(ChainId.BASE, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.BASE_GOERLI]: new sdk_core_1.Token(ChainId.BASE_GOERLI, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.ROOTSTOCK]: new sdk_core_1.Token(ChainId.ROOTSTOCK, '0x542fDA317318eBF1d3DEAf76E0b632741A7e677d', 18, 'WRBTC', 'Wrapped BTC'), [ChainId.ZORA]: new sdk_core_1.Token(ChainId.ZORA, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.ZORA_SEPOLIA]: new sdk_core_1.Token(ChainId.ZORA_SEPOLIA, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.BLAST]: new sdk_core_1.Token(ChainId.BLAST, '0x4300000000000000000000000000000000000004', 18, 'WETH', 'Wrapped Ether'), [ChainId.ZKSYNC]: new sdk_core_1.Token(ChainId.ZKSYNC, '0x5aea5775959fbc2557cc8789bc1bf90a239d9a91', 18, 'WETH', 'Wrapped Ether'), [ChainId.WORLDCHAIN]: new sdk_core_1.Token(ChainId.WORLDCHAIN, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.UNICHAIN_SEPOLIA]: new sdk_core_1.Token(ChainId.UNICHAIN_SEPOLIA, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.UNICHAIN]: new sdk_core_1.Token(ChainId.UNICHAIN, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.MONAD_TESTNET]: new sdk_core_1.Token(ChainId.MONAD_TESTNET, '0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701', 18, 'WMON', 'Wrapped Monad'), [ChainId.BASE_SEPOLIA]: new sdk_core_1.Token(ChainId.BASE_SEPOLIA, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.SONEIUM]: new sdk_core_1.Token(ChainId.SONEIUM, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), }; function isMatic(chainId) { return chainId === ChainId.POLYGON_MUMBAI || chainId === 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 === ChainId.CELO_ALFAJORES || chainId === 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 === 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 === 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 === 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 === 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWwvY2hhaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQUsyQjtBQUUzQixJQUFZLE9BZ0NYO0FBaENELFdBQVksT0FBTztJQUNqQiwyQ0FBVyxDQUFBO0lBQ1gseUNBQVUsQ0FBQTtJQUNWLGtEQUFrQixDQUFBO0lBQ2xCLDhDQUFhLENBQUE7SUFDYiw2REFBcUIsQ0FBQTtJQUNyQixvRUFBMkIsQ0FBQTtJQUMzQix5REFBb0IsQ0FBQTtJQUNwQixnRUFBd0IsQ0FBQTtJQUN4QixrRUFBeUIsQ0FBQTtJQUN6Qiw2Q0FBYSxDQUFBO0lBQ2IsNkRBQXNCLENBQUE7SUFDdEIseUNBQVksQ0FBQTtJQUNaLDZEQUFzQixDQUFBO0lBQ3RCLDJDQUFZLENBQUE7SUFDWixnREFBZSxDQUFBO0lBQ2Ysb0NBQVEsQ0FBQTtJQUNSLG1EQUFpQixDQUFBO0lBQ2pCLHVEQUFtQixDQUFBO0lBQ25CLHlEQUFvQixDQUFBO0lBQ3BCLHdDQUFXLENBQUE7SUFDWCwyQ0FBYyxDQUFBO0lBQ2QsNkRBQXdCLENBQUE7SUFDeEIsZ0RBQWMsQ0FBQTtJQUNkLDJDQUFhLENBQUE7SUFDYiwyQ0FBWSxDQUFBO0lBQ1osbURBQWdCLENBQUE7SUFDaEIsZ0VBQXVCLENBQUE7SUFDdkIsK0NBQWMsQ0FBQTtJQUNkLDJEQUFxQixDQUFBO0lBQ3JCLDhDQUFjLENBQUE7SUFDZCxnRUFBdUIsQ0FBQTtBQUN6QixDQUFDLEVBaENXLE9BQU8sR0FBUCxlQUFPLEtBQVAsZUFBTyxRQWdDbEI7QUFFRCx3QkFBd0I7QUFDWCxRQUFBLGdCQUFnQixHQUFjO0lBQ3pDLE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLFFBQVE7SUFDaEIsT0FBTyxDQUFDLGVBQWU7SUFDdkIsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsWUFBWTtJQUNwQixPQUFPLENBQUMsZUFBZTtJ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