@uniswap/smart-order-router
Version:
Uniswap Smart Order Router
770 lines • 62.5 kB
JavaScript
"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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