UNPKG

quickswap-smart-order-router

Version:
211 lines 18.1 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.NativeCurrencyName = exports.ChainName = exports.ID_TO_CHAIN_ID = exports.HAS_L1_FEE = 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["ROPSTEN"] = 3] = "ROPSTEN"; ChainId[ChainId["RINKEBY"] = 4] = "RINKEBY"; ChainId[ChainId["G\u00D6RLI"] = 5] = "G\u00D6RLI"; ChainId[ChainId["KOVAN"] = 42] = "KOVAN"; ChainId[ChainId["OPTIMISM"] = 10] = "OPTIMISM"; ChainId[ChainId["OPTIMISTIC_KOVAN"] = 69] = "OPTIMISTIC_KOVAN"; ChainId[ChainId["ARBITRUM_ONE"] = 42161] = "ARBITRUM_ONE"; ChainId[ChainId["ARBITRUM_RINKEBY"] = 421611] = "ARBITRUM_RINKEBY"; ChainId[ChainId["POLYGON"] = 137] = "POLYGON"; ChainId[ChainId["POLYGON_MUMBAI"] = 80001] = "POLYGON_MUMBAI"; })(ChainId = exports.ChainId || (exports.ChainId = {})); exports.SUPPORTED_CHAINS = [ ChainId.POLYGON, ChainId.POLYGON_MUMBAI, ]; exports.V2_SUPPORTED = [ ChainId.POLYGON, ChainId.POLYGON_MUMBAI, ]; exports.HAS_L1_FEE = [ ChainId.OPTIMISM, ChainId.OPTIMISTIC_KOVAN, ChainId.ARBITRUM_ONE, ChainId.ARBITRUM_RINKEBY, ]; const ID_TO_CHAIN_ID = (id) => { switch (id) { case 1: return ChainId.MAINNET; case 3: return ChainId.ROPSTEN; case 4: return ChainId.RINKEBY; case 5: return ChainId.GÖRLI; case 42: return ChainId.KOVAN; case 10: return ChainId.OPTIMISM; case 69: return ChainId.OPTIMISTIC_KOVAN; case 42161: return ChainId.ARBITRUM_ONE; case 421611: return ChainId.ARBITRUM_RINKEBY; case 137: return ChainId.POLYGON; case 80001: return ChainId.POLYGON_MUMBAI; default: throw new Error(`Unknown chain id: ${id}`); } }; exports.ID_TO_CHAIN_ID = ID_TO_CHAIN_ID; var ChainName; (function (ChainName) { // ChainNames match infura network strings ChainName["MAINNET"] = "mainnet"; ChainName["ROPSTEN"] = "ropsten"; ChainName["RINKEBY"] = "rinkeby"; ChainName["G\u00D6RLI"] = "goerli"; ChainName["KOVAN"] = "kovan"; ChainName["OPTIMISM"] = "optimism-mainnet"; ChainName["OPTIMISTIC_KOVAN"] = "optimism-kovan"; ChainName["ARBITRUM_ONE"] = "arbitrum-mainnet"; ChainName["ARBITRUM_RINKEBY"] = "arbitrum-rinkeby"; ChainName["POLYGON"] = "polygon-mainnet"; ChainName["POLYGON_MUMBAI"] = "polygon-mumbai"; })(ChainName = exports.ChainName || (exports.ChainName = {})); var NativeCurrencyName; (function (NativeCurrencyName) { // Strings match input for CLI NativeCurrencyName["ETHER"] = "ETH"; NativeCurrencyName["MATIC"] = "MATIC"; })(NativeCurrencyName = exports.NativeCurrencyName || (exports.NativeCurrencyName = {})); exports.NATIVE_CURRENCY = { [ChainId.MAINNET]: NativeCurrencyName.ETHER, [ChainId.ROPSTEN]: NativeCurrencyName.ETHER, [ChainId.RINKEBY]: NativeCurrencyName.ETHER, [ChainId.GÖRLI]: NativeCurrencyName.ETHER, [ChainId.KOVAN]: NativeCurrencyName.ETHER, [ChainId.OPTIMISM]: NativeCurrencyName.ETHER, [ChainId.OPTIMISTIC_KOVAN]: NativeCurrencyName.ETHER, [ChainId.ARBITRUM_ONE]: NativeCurrencyName.ETHER, [ChainId.ARBITRUM_RINKEBY]: NativeCurrencyName.ETHER, [ChainId.POLYGON]: NativeCurrencyName.MATIC, [ChainId.POLYGON_MUMBAI]: NativeCurrencyName.MATIC, }; const ID_TO_NETWORK_NAME = (id) => { switch (id) { case 1: return ChainName.MAINNET; case 3: return ChainName.ROPSTEN; case 4: return ChainName.RINKEBY; case 5: return ChainName.GÖRLI; case 42: return ChainName.KOVAN; case 10: return ChainName.OPTIMISM; case 69: return ChainName.OPTIMISTIC_KOVAN; case 42161: return ChainName.ARBITRUM_ONE; case 421611: return ChainName.ARBITRUM_RINKEBY; case 137: return ChainName.POLYGON; case 80001: return ChainName.POLYGON_MUMBAI; 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.ROPSTEN: return process.env.JSON_RPC_PROVIDER_ROPSTEN; case ChainId.RINKEBY: return process.env.JSON_RPC_PROVIDER_RINKEBY; case ChainId.GÖRLI: return process.env.JSON_RPC_PROVIDER_GORLI; case ChainId.KOVAN: return process.env.JSON_RPC_PROVIDER_KOVAN; case ChainId.OPTIMISM: return process.env.JSON_RPC_PROVIDER_OPTIMISM; case ChainId.OPTIMISTIC_KOVAN: return process.env.JSON_RPC_PROVIDER_OPTIMISTIC_KOVAN; case ChainId.ARBITRUM_ONE: return process.env.JSON_RPC_PROVIDER_ARBITRUM_ONE; case ChainId.ARBITRUM_RINKEBY: return process.env.JSON_RPC_PROVIDER_ARBITRUM_RINKEBY; case ChainId.POLYGON: return process.env.JSON_RPC_PROVIDER_POLYGON; case ChainId.POLYGON_MUMBAI: return process.env.JSON_RPC_PROVIDER_POLYGON_MUMBAI; default: throw new Error(`Chain id: ${id} not supported`); } }; exports.ID_TO_PROVIDER = ID_TO_PROVIDER; exports.WRAPPED_NATIVE_CURRENCY = { [ChainId.MAINNET]: new sdk_core_1.Token(1, '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', 18, 'WETH', 'Wrapped Ether'), [ChainId.ROPSTEN]: new sdk_core_1.Token(3, '0xc778417E063141139Fce010982780140Aa0cD5Ab', 18, 'WETH', 'Wrapped Ether'), [ChainId.RINKEBY]: new sdk_core_1.Token(4, '0xc778417E063141139Fce010982780140Aa0cD5Ab', 18, 'WETH', 'Wrapped Ether'), [ChainId.GÖRLI]: new sdk_core_1.Token(5, '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', 18, 'WETH', 'Wrapped Ether'), [ChainId.KOVAN]: new sdk_core_1.Token(42, '0xd0A1E359811322d97991E03f863a0C30C2cF029C', 18, 'WETH', 'Wrapped Ether'), [ChainId.OPTIMISM]: new sdk_core_1.Token(ChainId.OPTIMISM, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.OPTIMISTIC_KOVAN]: new sdk_core_1.Token(ChainId.OPTIMISTIC_KOVAN, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), [ChainId.ARBITRUM_ONE]: new sdk_core_1.Token(ChainId.ARBITRUM_ONE, '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', 18, 'WETH', 'Wrapped Ether'), [ChainId.ARBITRUM_RINKEBY]: new sdk_core_1.Token(ChainId.ARBITRUM_RINKEBY, '0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681', 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'), }; 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'); } } 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) { var _a; return ((_a = cachedNativeCurrency[chainId]) !== null && _a !== void 0 ? _a : (cachedNativeCurrency[chainId] = isMatic(chainId) ? new MaticNativeCurrency(chainId) : ExtendedEther.onChain(chainId))); } exports.nativeOnChain = nativeOnChain; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWwvY2hhaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQUEyRTtBQUMzRSxJQUFZLE9BWVg7QUFaRCxXQUFZLE9BQU87SUFDakIsMkNBQVcsQ0FBQTtJQUNYLDJDQUFXLENBQUE7SUFDWCwyQ0FBVyxDQUFBO0lBQ1gsaURBQVMsQ0FBQTtJQUNULHdDQUFVLENBQUE7SUFDViw4Q0FBYSxDQUFBO0lBQ2IsOERBQXFCLENBQUE7SUFDckIseURBQW9CLENBQUE7SUFDcEIsa0VBQXlCLENBQUE7SUFDekIsNkNBQWEsQ0FBQTtJQUNiLDZEQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFaVyxPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFZbEI7QUFFWSxRQUFBLGdCQUFnQixHQUFjO0lBQ3pDLE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLGNBQWM7Q0FDdkIsQ0FBQztBQUVXLFFBQUEsWUFBWSxHQUFHO0lBQzFCLE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLGNBQWM7Q0FDdkIsQ0FBQztBQUVXLFFBQUEsVUFBVSxHQUFHO0lBQ3hCLE9BQU8sQ0FBQyxRQUFRO0lBQ2hCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFDeEIsT0FBTyxDQUFDLFlBQVk7SUFDcEIsT0FBTyxDQUFDLGdCQUFnQjtDQUN6QixDQUFDO0FBRUssTUFBTSxjQUFjLEdBQUcsQ0FBQyxFQUFVLEVBQVcsRUFBRTtJQUNwRCxRQUFRLEVBQUUsRUFBRTtRQUNWLEtBQUssQ0FBQztZQUNKLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUN6QixLQUFLLENBQUM7WUFDSixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDekIsS0FBSyxDQUFDO1lBQ0osT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3pCLEtBQUssQ0FBQztZQUNKLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQztR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