UNPKG

@elkdex/sdk

Version:

🛠 An SDK for building applications on top of Elk Finance.

741 lines (601 loc) • 52.8 kB
import JSBI from 'jsbi'; export { default as JSBI } from 'jsbi'; import invariant from 'tiny-invariant'; import _Decimal from 'decimal.js-light'; import _Big from 'big.js'; import toFormat from 'toformat'; import { getAddress } from '@ethersproject/address'; var ChainId; (function (ChainId) { ChainId[ChainId["MUMBAI"] = 80001] = "MUMBAI"; ChainId[ChainId["MATIC"] = 137] = "MATIC"; ChainId[ChainId["FUJI"] = 43113] = "FUJI"; ChainId[ChainId["AVALANCHE"] = 43114] = "AVALANCHE"; ChainId[ChainId["FANTOM_TESTNET"] = 4002] = "FANTOM_TESTNET"; ChainId[ChainId["FANTOM"] = 250] = "FANTOM"; ChainId[ChainId["HUOBIECO_TESTNET"] = 256] = "HUOBIECO_TESTNET"; ChainId[ChainId["HUOBIECO"] = 128] = "HUOBIECO"; ChainId[ChainId["REEF"] = 13939] = "REEF"; ChainId[ChainId["XDAI"] = 100] = "XDAI"; ChainId[ChainId["FUSE"] = 122] = "FUSE"; ChainId[ChainId["OPTIMISM"] = 10] = "OPTIMISM"; ChainId[ChainId["OPTIMISM_TESTNET"] = 69] = "OPTIMISM_TESTNET"; ChainId[ChainId["KUCOIN"] = 321] = "KUCOIN"; ChainId[ChainId["KUCOIN_TESTNET"] = 322] = "KUCOIN_TESTNET"; ChainId[ChainId["ETHERLITE"] = 111] = "ETHERLITE"; ChainId[ChainId["ETHEREUM_CLASSIC"] = 61] = "ETHEREUM_CLASSIC"; ChainId[ChainId["ETHEREUM_CLASSIC_TESTNET"] = 62] = "ETHEREUM_CLASSIC_TESTNET"; ChainId[ChainId["MOONBEAM_TESTNET"] = 1287] = "MOONBEAM_TESTNET"; ChainId[ChainId["CLOVER_TESTNET"] = 123] = "CLOVER_TESTNET"; ChainId[ChainId["CELO"] = 42220] = "CELO"; ChainId[ChainId["ALFAJORES"] = 44787] = "ALFAJORES"; ChainId[ChainId["ARBITRUM_TESTNET"] = 421611] = "ARBITRUM_TESTNET"; ChainId[ChainId["ARBITRUM"] = 42161] = "ARBITRUM"; ChainId[ChainId["FLARE"] = 14] = "FLARE"; ChainId[ChainId["FLARE_TESTNET"] = 16] = "FLARE_TESTNET"; ChainId[ChainId["FUSION"] = 32659] = "FUSION"; ChainId[ChainId["HARMONY"] = 1666600000] = "HARMONY"; ChainId[ChainId["OKEX"] = 66] = "OKEX"; ChainId[ChainId["IOTEX"] = 4689] = "IOTEX"; ChainId[ChainId["HOO"] = 70] = "HOO"; ChainId[ChainId["ELAETH"] = 20] = "ELAETH"; ChainId[ChainId["MOONRIVER"] = 1285] = "MOONRIVER"; ChainId[ChainId["TELOS"] = 40] = "TELOS"; ChainId[ChainId["CRONOS"] = 25] = "CRONOS"; ChainId[ChainId["KAVA"] = 2222] = "KAVA"; ChainId[ChainId["BTTC"] = 199] = "BTTC"; ChainId[ChainId["BTTC_TESTNET"] = 1029] = "BTTC_TESTNET"; ChainId[ChainId["BINANCE_TESTNET"] = 97] = "BINANCE_TESTNET"; ChainId[ChainId["BINANCE"] = 56] = "BINANCE"; ChainId[ChainId["ROPSTEN"] = 3] = "ROPSTEN"; ChainId[ChainId["ETHEREUM"] = 1] = "ETHEREUM"; ChainId[ChainId["NEON_TESTNET"] = 245022926] = "NEON_TESTNET"; ChainId[ChainId["NEON_MAINNET"] = 245022934] = "NEON_MAINNET"; ChainId[ChainId["Q"] = 35441] = "Q"; ChainId[ChainId["BITGERT"] = 32520] = "BITGERT"; ChainId[ChainId["WANCHAIN"] = 888] = "WANCHAIN"; ChainId[ChainId["METIS"] = 1088] = "METIS"; ChainId[ChainId["ASTAR"] = 592] = "ASTAR"; ChainId[ChainId["ARTHERA_TESTNET"] = 10243] = "ARTHERA_TESTNET"; ChainId[ChainId["ARTHERA"] = 10242] = "ARTHERA"; ChainId[ChainId["PULSECHAIN"] = 369] = "PULSECHAIN"; ChainId[ChainId["BASE"] = 8453] = "BASE"; ChainId[ChainId["VELAS"] = 106] = "VELAS"; ChainId[ChainId["LINEA"] = 59144] = "LINEA"; ChainId[ChainId["ROOTSTOCK"] = 30] = "ROOTSTOCK"; ChainId[ChainId["BOBA"] = 288] = "BOBA"; ChainId[ChainId["BOBA_BNB"] = 56288] = "BOBA_BNB"; ChainId[ChainId["CLOVER"] = 1024] = "CLOVER"; ChainId[ChainId["AURORA"] = 1313161554] = "AURORA"; ChainId[ChainId["ZKSYNC"] = 324] = "ZKSYNC"; ChainId[ChainId["SCROLL"] = 534352] = "SCROLL"; ChainId[ChainId["BLAST"] = 238] = "BLAST"; ChainId[ChainId["OPBNB"] = 204] = "OPBNB"; ChainId[ChainId["MOONBEAM"] = 1284] = "MOONBEAM"; ChainId[ChainId["MANTLE"] = 5000] = "MANTLE"; ChainId[ChainId["POLYGON_ZKEVM"] = 1101] = "POLYGON_ZKEVM"; ChainId[ChainId["SONIC"] = 146] = "SONIC"; ChainId[ChainId["BERA"] = 80094] = "BERA"; ChainId[ChainId["EXPCHAIN_TESTNET"] = 18880] = "EXPCHAIN_TESTNET"; ChainId[ChainId["CYTONIC_TESTNET"] = 52226] = "CYTONIC_TESTNET"; })(ChainId || (ChainId = {})); var TradeType; (function (TradeType) { TradeType[TradeType["EXACT_INPUT"] = 0] = "EXACT_INPUT"; TradeType[TradeType["EXACT_OUTPUT"] = 1] = "EXACT_OUTPUT"; })(TradeType || (TradeType = {})); var Rounding; (function (Rounding) { Rounding[Rounding["ROUND_DOWN"] = 0] = "ROUND_DOWN"; Rounding[Rounding["ROUND_HALF_UP"] = 1] = "ROUND_HALF_UP"; Rounding[Rounding["ROUND_UP"] = 2] = "ROUND_UP"; })(Rounding || (Rounding = {})); var MaxUint256 = /*#__PURE__*/JSBI.BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'); var ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } var _toSignificantRoundin, _toFixedRounding; var Decimal = /*#__PURE__*/toFormat(_Decimal); var Big = /*#__PURE__*/toFormat(_Big); var toSignificantRounding = (_toSignificantRoundin = {}, _toSignificantRoundin[Rounding.ROUND_DOWN] = Decimal.ROUND_DOWN, _toSignificantRoundin[Rounding.ROUND_HALF_UP] = Decimal.ROUND_HALF_UP, _toSignificantRoundin[Rounding.ROUND_UP] = Decimal.ROUND_UP, _toSignificantRoundin); var toFixedRounding = (_toFixedRounding = {}, _toFixedRounding[Rounding.ROUND_DOWN] = 0, _toFixedRounding[Rounding.ROUND_HALF_UP] = 1, _toFixedRounding[Rounding.ROUND_UP] = 3, _toFixedRounding); var Fraction = /*#__PURE__*/function () { function Fraction(numerator, denominator) { if (denominator === void 0) { denominator = JSBI.BigInt(1); } this.numerator = JSBI.BigInt(numerator); this.denominator = JSBI.BigInt(denominator); } Fraction.tryParseFraction = function tryParseFraction(fractionish) { if (fractionish instanceof JSBI || typeof fractionish === 'number' || typeof fractionish === 'string') return new Fraction(fractionish); if ('numerator' in fractionish && 'denominator' in fractionish) return fractionish; throw new Error('Could not parse fraction'); } // performs floor division ; var _proto = Fraction.prototype; _proto.invert = function invert() { return new Fraction(this.denominator, this.numerator); }; _proto.add = function add(other) { var otherParsed = Fraction.tryParseFraction(other); if (JSBI.equal(this.denominator, otherParsed.denominator)) { return new Fraction(JSBI.add(this.numerator, otherParsed.numerator), this.denominator); } return new Fraction(JSBI.add(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator)), JSBI.multiply(this.denominator, otherParsed.denominator)); }; _proto.subtract = function subtract(other) { var otherParsed = Fraction.tryParseFraction(other); if (JSBI.equal(this.denominator, otherParsed.denominator)) { return new Fraction(JSBI.subtract(this.numerator, otherParsed.numerator), this.denominator); } return new Fraction(JSBI.subtract(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator)), JSBI.multiply(this.denominator, otherParsed.denominator)); }; _proto.lessThan = function lessThan(other) { var otherParsed = Fraction.tryParseFraction(other); return JSBI.lessThan(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator)); }; _proto.equalTo = function equalTo(other) { var otherParsed = Fraction.tryParseFraction(other); return JSBI.equal(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator)); }; _proto.greaterThan = function greaterThan(other) { var otherParsed = Fraction.tryParseFraction(other); return JSBI.greaterThan(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator)); }; _proto.multiply = function multiply(other) { var otherParsed = Fraction.tryParseFraction(other); return new Fraction(JSBI.multiply(this.numerator, otherParsed.numerator), JSBI.multiply(this.denominator, otherParsed.denominator)); }; _proto.divide = function divide(other) { var otherParsed = Fraction.tryParseFraction(other); return new Fraction(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(this.denominator, otherParsed.numerator)); }; _proto.toSignificant = function toSignificant(significantDigits, format, rounding) { if (format === void 0) { format = { groupSeparator: '' }; } if (rounding === void 0) { rounding = Rounding.ROUND_HALF_UP; } !Number.isInteger(significantDigits) ? process.env.NODE_ENV !== "production" ? invariant(false, significantDigits + " is not an integer.") : invariant(false) : void 0; !(significantDigits > 0) ? process.env.NODE_ENV !== "production" ? invariant(false, significantDigits + " is not positive.") : invariant(false) : void 0; Decimal.set({ precision: significantDigits + 1, rounding: toSignificantRounding[rounding] }); var quotient = new Decimal(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(significantDigits); return quotient.toFormat(quotient.decimalPlaces(), format); }; _proto.toFixed = function toFixed(decimalPlaces, format, rounding) { if (format === void 0) { format = { groupSeparator: '' }; } if (rounding === void 0) { rounding = Rounding.ROUND_HALF_UP; } !Number.isInteger(decimalPlaces) ? process.env.NODE_ENV !== "production" ? invariant(false, decimalPlaces + " is not an integer.") : invariant(false) : void 0; !(decimalPlaces >= 0) ? process.env.NODE_ENV !== "production" ? invariant(false, decimalPlaces + " is negative.") : invariant(false) : void 0; Big.DP = decimalPlaces; Big.RM = toFixedRounding[rounding]; return new Big(this.numerator.toString()).div(this.denominator.toString()).toFormat(decimalPlaces, format); } /** * Helper method for converting any super class back to a fraction */ ; _createClass(Fraction, [{ key: "quotient", get: function get() { return JSBI.divide(this.numerator, this.denominator); } // remainder after floor division }, { key: "remainder", get: function get() { return new Fraction(JSBI.remainder(this.numerator, this.denominator), this.denominator); } }, { key: "asFraction", get: function get() { return new Fraction(this.numerator, this.denominator); } }]); return Fraction; }(); var Big$1 = /*#__PURE__*/toFormat(_Big); var CurrencyAmount = /*#__PURE__*/function (_Fraction) { _inheritsLoose(CurrencyAmount, _Fraction); function CurrencyAmount(currency, numerator, denominator) { var _this; _this = _Fraction.call(this, numerator, denominator) || this; !JSBI.lessThanOrEqual(_this.quotient, MaxUint256) ? process.env.NODE_ENV !== "production" ? invariant(false, 'AMOUNT') : invariant(false) : void 0; _this.currency = currency; _this.decimalScale = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(currency.decimals)); return _this; } /** * Returns a new currency amount instance from the unitless amount of token, i.e. the raw amount * @param currency the currency in the amount * @param rawAmount the raw token or ether amount */ CurrencyAmount.fromRawAmount = function fromRawAmount(currency, rawAmount) { return new CurrencyAmount(currency, rawAmount); } /** * Construct a currency amount with a denominator that is not equal to 1 * @param currency the currency * @param numerator the numerator of the fractional token amount * @param denominator the denominator of the fractional token amount */ ; CurrencyAmount.fromFractionalAmount = function fromFractionalAmount(currency, numerator, denominator) { return new CurrencyAmount(currency, numerator, denominator); }; var _proto = CurrencyAmount.prototype; _proto.add = function add(other) { !this.currency.equals(other.currency) ? process.env.NODE_ENV !== "production" ? invariant(false, 'CURRENCY') : invariant(false) : void 0; var added = _Fraction.prototype.add.call(this, other); return CurrencyAmount.fromFractionalAmount(this.currency, added.numerator, added.denominator); }; _proto.subtract = function subtract(other) { !this.currency.equals(other.currency) ? process.env.NODE_ENV !== "production" ? invariant(false, 'CURRENCY') : invariant(false) : void 0; var subtracted = _Fraction.prototype.subtract.call(this, other); return CurrencyAmount.fromFractionalAmount(this.currency, subtracted.numerator, subtracted.denominator); }; _proto.multiply = function multiply(other) { var multiplied = _Fraction.prototype.multiply.call(this, other); return CurrencyAmount.fromFractionalAmount(this.currency, multiplied.numerator, multiplied.denominator); }; _proto.divide = function divide(other) { var divided = _Fraction.prototype.divide.call(this, other); return CurrencyAmount.fromFractionalAmount(this.currency, divided.numerator, divided.denominator); }; _proto.toSignificant = function toSignificant(significantDigits, format, rounding) { if (significantDigits === void 0) { significantDigits = 6; } if (rounding === void 0) { rounding = Rounding.ROUND_DOWN; } return _Fraction.prototype.divide.call(this, this.decimalScale).toSignificant(significantDigits, format, rounding); }; _proto.toFixed = function toFixed(decimalPlaces, format, rounding) { if (decimalPlaces === void 0) { decimalPlaces = this.currency.decimals; } if (rounding === void 0) { rounding = Rounding.ROUND_DOWN; } !(decimalPlaces <= this.currency.decimals) ? process.env.NODE_ENV !== "production" ? invariant(false, 'DECIMALS') : invariant(false) : void 0; return _Fraction.prototype.divide.call(this, this.decimalScale).toFixed(decimalPlaces, format, rounding); }; _proto.toExact = function toExact(format) { if (format === void 0) { format = { groupSeparator: '' }; } Big$1.DP = this.currency.decimals; return new Big$1(this.quotient.toString()).div(this.decimalScale.toString()).toFormat(format); }; _createClass(CurrencyAmount, [{ key: "wrapped", get: function get() { if (this.currency.isToken) return this; return CurrencyAmount.fromFractionalAmount(this.currency.wrapped, this.numerator, this.denominator); } }]); return CurrencyAmount; }(Fraction); var ONE_HUNDRED = /*#__PURE__*/new Fraction( /*#__PURE__*/JSBI.BigInt(100)); /** * Converts a fraction to a percent * @param fraction the fraction to convert */ function toPercent(fraction) { return new Percent(fraction.numerator, fraction.denominator); } var Percent = /*#__PURE__*/function (_Fraction) { _inheritsLoose(Percent, _Fraction); function Percent() { var _this; _this = _Fraction.apply(this, arguments) || this; /** * This boolean prevents a fraction from being interpreted as a Percent */ _this.isPercent = true; return _this; } var _proto = Percent.prototype; _proto.add = function add(other) { return toPercent(_Fraction.prototype.add.call(this, other)); }; _proto.subtract = function subtract(other) { return toPercent(_Fraction.prototype.subtract.call(this, other)); }; _proto.multiply = function multiply(other) { return toPercent(_Fraction.prototype.multiply.call(this, other)); }; _proto.divide = function divide(other) { return toPercent(_Fraction.prototype.divide.call(this, other)); }; _proto.toSignificant = function toSignificant(significantDigits, format, rounding) { if (significantDigits === void 0) { significantDigits = 5; } return _Fraction.prototype.multiply.call(this, ONE_HUNDRED).toSignificant(significantDigits, format, rounding); }; _proto.toFixed = function toFixed(decimalPlaces, format, rounding) { if (decimalPlaces === void 0) { decimalPlaces = 2; } return _Fraction.prototype.multiply.call(this, ONE_HUNDRED).toFixed(decimalPlaces, format, rounding); }; return Percent; }(Fraction); var Price = /*#__PURE__*/function (_Fraction) { _inheritsLoose(Price, _Fraction); /** * Construct a price, either with the base and quote currency amount, or the * @param args */ function Price() { var _this; var baseCurrency, quoteCurrency, denominator, numerator; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (args.length === 4) { baseCurrency = args[0]; quoteCurrency = args[1]; denominator = args[2]; numerator = args[3]; } else { var result = args[0].quoteAmount.divide(args[0].baseAmount); var _ref = [args[0].baseAmount.currency, args[0].quoteAmount.currency, result.denominator, result.numerator]; baseCurrency = _ref[0]; quoteCurrency = _ref[1]; denominator = _ref[2]; numerator = _ref[3]; } _this = _Fraction.call(this, numerator, denominator) || this; _this.baseCurrency = baseCurrency; _this.quoteCurrency = quoteCurrency; _this.scalar = new Fraction(JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(baseCurrency.decimals)), JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(quoteCurrency.decimals))); return _this; } /** * Flip the price, switching the base and quote currency */ var _proto = Price.prototype; _proto.invert = function invert() { return new Price(this.quoteCurrency, this.baseCurrency, this.numerator, this.denominator); } /** * Multiply the price by another price, returning a new price. The other price must have the same base currency as this price's quote currency * @param other the other price */ ; _proto.multiply = function multiply(other) { !this.quoteCurrency.equals(other.baseCurrency) ? process.env.NODE_ENV !== "production" ? invariant(false, 'TOKEN') : invariant(false) : void 0; var fraction = _Fraction.prototype.multiply.call(this, other); return new Price(this.baseCurrency, other.quoteCurrency, fraction.denominator, fraction.numerator); } /** * Return the amount of quote currency corresponding to a given amount of the base currency * @param currencyAmount the amount of base currency to quote against the price */ ; _proto.quote = function quote(currencyAmount) { !currencyAmount.currency.equals(this.baseCurrency) ? process.env.NODE_ENV !== "production" ? invariant(false, 'TOKEN') : invariant(false) : void 0; var result = _Fraction.prototype.multiply.call(this, currencyAmount); return CurrencyAmount.fromFractionalAmount(this.quoteCurrency, result.numerator, result.denominator); } /** * Get the value scaled by decimals for formatting * @private */ ; _proto.toSignificant = function toSignificant(significantDigits, format, rounding) { if (significantDigits === void 0) { significantDigits = 6; } return this.adjustedForDecimals.toSignificant(significantDigits, format, rounding); }; _proto.toFixed = function toFixed(decimalPlaces, format, rounding) { if (decimalPlaces === void 0) { decimalPlaces = 4; } return this.adjustedForDecimals.toFixed(decimalPlaces, format, rounding); }; _createClass(Price, [{ key: "adjustedForDecimals", get: function get() { return _Fraction.prototype.multiply.call(this, this.scalar); } }]); return Price; }(Fraction); /** * A currency is any fungible financial instrument, including Ether, all ERC20 tokens, and other chain-native currencies */ var BaseCurrency = /** * Constructs an instance of the base class `BaseCurrency`. * @param chainId the chain ID on which this currency resides * @param decimals decimals of the currency * @param symbol symbol of the currency * @param name of the currency */ function BaseCurrency(chainId, decimals, symbol, name) { !Number.isSafeInteger(chainId) ? process.env.NODE_ENV !== "production" ? invariant(false, 'CHAIN_ID') : invariant(false) : void 0; !(decimals >= 0 && decimals < 255 && Number.isInteger(decimals)) ? process.env.NODE_ENV !== "production" ? invariant(false, 'DECIMALS') : invariant(false) : void 0; this.chainId = chainId; this.decimals = decimals; this.symbol = symbol; this.name = name; }; /** * Represents the native currency of the chain on which it resides, e.g. */ var NativeCurrency = /*#__PURE__*/function (_BaseCurrency) { _inheritsLoose(NativeCurrency, _BaseCurrency); function NativeCurrency() { var _this; _this = _BaseCurrency.apply(this, arguments) || this; _this.isNative = true; _this.isToken = false; return _this; } return NativeCurrency; }(BaseCurrency); /** * Validates an address and returns the parsed (checksummed) version of that address * @param address the unchecksummed hex address */ function validateAndParseAddress(address) { try { return getAddress(address); } catch (error) { throw new Error(address + " is not a valid address."); } } // Checks a string starts with 0x, is 42 characters long and contains only hex characters after 0x var startsWith0xLen42HexRegex = /^0x[0-9a-fA-F]{40}$/; /** * Checks if an address is valid by checking 0x prefix, length === 42 and hex encoding. * @param address the unchecksummed hex address */ function checkValidAddress(address) { if (startsWith0xLen42HexRegex.test(address)) { return address; } throw new Error(address + " is not a valid address."); } /** * Represents an ERC20 token with a unique address and some metadata. */ var Token = /*#__PURE__*/function (_BaseCurrency) { _inheritsLoose(Token, _BaseCurrency); /** * * @param chainId {@link BaseCurrency#chainId} * @param address The contract address on the chain on which this token lives * @param decimals {@link BaseCurrency#decimals} * @param symbol {@link BaseCurrency#symbol} * @param name {@link BaseCurrency#name} * @param bypassChecksum If true it only checks for length === 42, startsWith 0x and contains only hex characters */ function Token(chainId, address, decimals, symbol, name, bypassChecksum) { var _this; _this = _BaseCurrency.call(this, chainId, decimals, symbol, name) || this; _this.isNative = false; _this.isToken = true; if (bypassChecksum) { _this.address = checkValidAddress(address); } else { _this.address = validateAndParseAddress(address); } return _this; } /** * Returns true if the two tokens are equivalent, i.e. have the same chainId and address. * @param other other token to compare */ var _proto = Token.prototype; _proto.equals = function equals(other) { return other.isToken && this.chainId === other.chainId && this.address === other.address; } /** * Returns true if the address of this token sorts before the address of the other token * @param other other token to compare * @throws if the tokens have the same address * @throws if the tokens are on different chains */ ; _proto.sortsBefore = function sortsBefore(other) { !(this.chainId === other.chainId) ? process.env.NODE_ENV !== "production" ? invariant(false, 'CHAIN_IDS') : invariant(false) : void 0; !(this.address !== other.address) ? process.env.NODE_ENV !== "production" ? invariant(false, 'ADDRESSES') : invariant(false) : void 0; return this.address.toLowerCase() < other.address.toLowerCase(); } /** * Return this token, which does not need to be wrapped */ ; _createClass(Token, [{ key: "wrapped", get: function get() { return this; } }]); return Token; }(BaseCurrency); var _WETH, _WETH2; /** * Known WETH9 implementation addresses, used in our implementation of Ether#wrapped */ var WETH9 = (_WETH = {}, _WETH[1] = /*#__PURE__*/new Token(1, '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', 18, 'WETH', 'Wrapped Ether'), _WETH[3] = /*#__PURE__*/new Token(3, '0xc778417E063141139Fce010982780140Aa0cD5Ab', 18, 'WETH', 'Wrapped Ether'), _WETH[4] = /*#__PURE__*/new Token(4, '0xc778417E063141139Fce010982780140Aa0cD5Ab', 18, 'WETH', 'Wrapped Ether'), _WETH[5] = /*#__PURE__*/new Token(5, '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', 18, 'WETH', 'Wrapped Ether'), _WETH[42] = /*#__PURE__*/new Token(42, '0xd0A1E359811322d97991E03f863a0C30C2cF029C', 18, 'WETH', 'Wrapped Ether'), _WETH[10] = /*#__PURE__*/new Token(10, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), _WETH[69] = /*#__PURE__*/new Token(69, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped Ether'), _WETH[42161] = /*#__PURE__*/new Token(42161, '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', 18, 'WETH', 'Wrapped Ether'), _WETH[421611] = /*#__PURE__*/new Token(421611, '0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681', 18, 'WETH', 'Wrapped Ether'), _WETH); // @todo merge WETH with WETH9? var WETH = (_WETH2 = {}, _WETH2[ChainId.MUMBAI] = /*#__PURE__*/new Token(ChainId.MUMBAI, '0x5B67676a984807a212b1c59eBFc9B3568a474F0a', 18, 'WPOL', 'Wrapped POL'), _WETH2[ChainId.MATIC] = /*#__PURE__*/new Token(ChainId.MATIC, '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', 18, 'WPOL', 'Wrapped POL'), _WETH2[ChainId.FUJI] = /*#__PURE__*/new Token(ChainId.FUJI, '0xd00ae08403B9bbb9124bB305C09058E32C39A48c', 18, 'WAVAX', 'Wrapped AVAX'), _WETH2[ChainId.AVALANCHE] = /*#__PURE__*/new Token(ChainId.AVALANCHE, '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', 18, 'WAVAX', 'Wrapped AVAX'), _WETH2[ChainId.FANTOM_TESTNET] = /*#__PURE__*/new Token(ChainId.FANTOM_TESTNET, '0xf1277d1Ed8AD466beddF92ef448A132661956621', 18, 'WFTM', 'Wrapped FTM'), _WETH2[ChainId.FANTOM] = /*#__PURE__*/new Token(ChainId.FANTOM, '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83', 18, 'WFTM', 'Wrapped FTM'), _WETH2[ChainId.HUOBIECO_TESTNET] = /*#__PURE__*/new Token(ChainId.HUOBIECO_TESTNET, '0x7aF326B6351C8A9b8fb8CD205CBe11d4Ac5FA836', 18, 'WHT', 'Wrapped HT'), _WETH2[ChainId.HUOBIECO] = /*#__PURE__*/new Token(ChainId.HUOBIECO, '0x5545153CCFcA01fbd7Dd11C0b23ba694D9509A6F', 18, 'WHT', 'Wrapped HT'), _WETH2[ChainId.REEF] = /*#__PURE__*/new Token(ChainId.REEF, ZERO_ADDRESS, 18, 'WREEF', 'Wrapped REEF'), _WETH2[ChainId.XDAI] = /*#__PURE__*/new Token(ChainId.XDAI, '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d', 18, 'WXDAI', 'Wrapped XDAI'), _WETH2[ChainId.FUSE] = /*#__PURE__*/new Token(ChainId.FUSE, '0x0BE9e53fd7EDaC9F859882AfdDa116645287C629', 18, 'WFUSE', 'Wrapped FUSE'), _WETH2[ChainId.OPTIMISM] = /*#__PURE__*/new Token(ChainId.OPTIMISM, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.OPTIMISM_TESTNET] = /*#__PURE__*/new Token(ChainId.OPTIMISM_TESTNET, ZERO_ADDRESS, 18, 'WKOR', 'Wrapped KOR'), _WETH2[ChainId.KUCOIN] = /*#__PURE__*/new Token(ChainId.KUCOIN, '0x4446Fc4eb47f2f6586f9fAAb68B3498F86C07521', 18, 'WKCS', 'Wrapped KCS'), _WETH2[ChainId.KUCOIN_TESTNET] = /*#__PURE__*/new Token(ChainId.KUCOIN_TESTNET, ZERO_ADDRESS, 18, 'WtKCS', 'Wrapped tKCS'), _WETH2[ChainId.ETHERLITE] = /*#__PURE__*/new Token(ChainId.ETHERLITE, ZERO_ADDRESS, 18, 'WETL', 'Wrapped ETL'), _WETH2[ChainId.ETHEREUM_CLASSIC] = /*#__PURE__*/new Token(ChainId.ETHEREUM_CLASSIC, ZERO_ADDRESS, 18, 'WETC', 'Wrapped ETC'), _WETH2[ChainId.ETHEREUM_CLASSIC_TESTNET] = /*#__PURE__*/new Token(ChainId.ETHEREUM_CLASSIC_TESTNET, ZERO_ADDRESS, 18, 'WCETC', 'Wrapped CETC'), _WETH2[ChainId.MOONBEAM] = /*#__PURE__*/new Token(ChainId.MOONBEAM, '0xAcc15dC74880C9944775448304B263D191c6077F', 18, 'WGLMR', 'Wrapped GLMR'), _WETH2[ChainId.MOONBEAM_TESTNET] = /*#__PURE__*/new Token(ChainId.MOONBEAM_TESTNET, ZERO_ADDRESS, 18, 'WDEV', 'Wrapped DEV'), _WETH2[ChainId.CLOVER] = /*#__PURE__*/new Token(ChainId.CLOVER, '0x1376C97C5c512d2d6F9173A9A3A016B6140b4536', 18, 'WCLV', 'Wrapped CLV'), _WETH2[ChainId.CLOVER_TESTNET] = /*#__PURE__*/new Token(ChainId.CLOVER_TESTNET, ZERO_ADDRESS, 18, 'WCLV', 'Wrapped CLV'), _WETH2[ChainId.CELO] = /*#__PURE__*/new Token(ChainId.CELO, ZERO_ADDRESS, 18, 'WCELO', 'Wrapped CELO'), _WETH2[ChainId.ALFAJORES] = /*#__PURE__*/new Token(ChainId.ALFAJORES, ZERO_ADDRESS, 18, 'WCELO', 'Wrapped CELO'), _WETH2[ChainId.ARBITRUM_TESTNET] = /*#__PURE__*/new Token(ChainId.ARBITRUM_TESTNET, ZERO_ADDRESS, 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.ARBITRUM] = /*#__PURE__*/new Token(ChainId.ARBITRUM, '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.FLARE] = /*#__PURE__*/new Token(ChainId.FLARE, ZERO_ADDRESS, 18, 'WFLR', 'Wrapped FLR'), _WETH2[ChainId.FLARE_TESTNET] = /*#__PURE__*/new Token(ChainId.FLARE_TESTNET, ZERO_ADDRESS, 18, 'WCFLR', 'Wrapped CFLR'), _WETH2[ChainId.FUSION] = /*#__PURE__*/new Token(ChainId.FUSION, ZERO_ADDRESS, 18, 'WFSN', 'Wrapped FSN'), _WETH2[ChainId.HARMONY] = /*#__PURE__*/new Token(ChainId.HARMONY, '0xcF664087a5bB0237a0BAd6742852ec6c8d69A27a', 18, 'WONE', 'Wrapped ONE'), _WETH2[ChainId.OKEX] = /*#__PURE__*/new Token(ChainId.OKEX, '0x8F8526dbfd6E38E3D8307702cA8469Bae6C56C15', 18, 'WOKT', 'Wrapped OKT'), _WETH2[ChainId.IOTEX] = /*#__PURE__*/new Token(ChainId.IOTEX, '0xA00744882684C3e4747faEFD68D283eA44099D03', 18, 'WIOTX', 'Wrapped IOTX'), _WETH2[ChainId.HOO] = /*#__PURE__*/new Token(ChainId.HOO, '0x3EFF9D389D13D6352bfB498BCF616EF9b1BEaC87', 18, 'WHOO', 'Wrapped HOO'), _WETH2[ChainId.ELAETH] = /*#__PURE__*/new Token(ChainId.ELAETH, '0x517E9e5d46C1EA8aB6f78677d6114Ef47F71f6c4', 18, 'WELA', 'Wrapped ELA'), _WETH2[ChainId.MOONRIVER] = /*#__PURE__*/new Token(ChainId.MOONRIVER, '0x98878B06940aE243284CA214f92Bb71a2b032B8A', 18, 'WMOVR', 'Wrapped MOVR'), _WETH2[ChainId.TELOS] = /*#__PURE__*/new Token(ChainId.TELOS, '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', 18, 'WTLOS', 'Wrapped TLOS'), _WETH2[ChainId.CRONOS] = /*#__PURE__*/new Token(ChainId.CRONOS, '0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23', 18, 'WCRO', 'Wrapped CRO'), _WETH2[ChainId.BTTC] = /*#__PURE__*/new Token(ChainId.BTTC, '0x8D193c6efa90BCFf940A98785d1Ce9D093d3DC8A', 18, 'WBTT', 'Wrapped BTT'), _WETH2[ChainId.BTTC_TESTNET] = /*#__PURE__*/new Token(ChainId.BTTC_TESTNET, '0x107742EB846b86CEaAF7528D5C85cddcad3e409A', 18, 'WBTT', 'Wrapped BTT'), _WETH2[ChainId.KAVA] = /*#__PURE__*/new Token(ChainId.KAVA, '0xc86c7C0eFbd6A49B35E8714C5f59D99De09A225b', 18, 'WKAVA', 'Wrapped KAVA'), _WETH2[ChainId.BINANCE_TESTNET] = /*#__PURE__*/new Token(ChainId.BINANCE_TESTNET, '0x094616F0BdFB0b526bD735Bf66Eca0Ad254ca81F', 18, 'WBNB', 'Wrapped BNB'), _WETH2[ChainId.BINANCE] = /*#__PURE__*/new Token(ChainId.BINANCE, '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', 18, 'WBNB', 'Wrapped BNB'), _WETH2[ChainId.ROPSTEN] = /*#__PURE__*/new Token(ChainId.ROPSTEN, '0x0a180A76e4466bF68A7F86fB029BEd3cCcFaAac5', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.ETHEREUM] = /*#__PURE__*/new Token(ChainId.ETHEREUM, '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.NEON_TESTNET] = /*#__PURE__*/new Token(ChainId.NEON_TESTNET, '0x11adC2d986E334137b9ad0a0F290771F31e9517F', 18, 'WNEON', 'Wrapped NEON'), _WETH2[ChainId.NEON_MAINNET] = /*#__PURE__*/new Token(ChainId.NEON_MAINNET, '0x202C35e517Fa803B537565c40F0a6965D7204609', 18, 'WNEON', 'Wrapped NEON'), _WETH2[ChainId.Q] = /*#__PURE__*/new Token(ChainId.Q, '0xd07178e3eCbC78De110Df84fe1A979D5f349784a', 18, 'WQOV', 'Wrapped QOV'), _WETH2[ChainId.BITGERT] = /*#__PURE__*/new Token(ChainId.BITGERT, '0x0eb9036cbE0f052386f36170c6b07eF0a0E3f710', 18, 'WBRISE', 'Wrapped BRISE'), _WETH2[ChainId.WANCHAIN] = /*#__PURE__*/new Token(ChainId.WANCHAIN, '0xdabD997aE5E4799BE47d6E69D9431615CBa28f48', 18, 'WWAN', 'Wrapped WAN'), _WETH2[ChainId.METIS] = /*#__PURE__*/new Token(ChainId.METIS, '0x75cb093E4D61d2A2e65D8e0BBb01DE8d89b53481', 18, 'WMETIS', 'Wrapped METIS'), _WETH2[ChainId.ASTAR] = /*#__PURE__*/new Token(ChainId.ASTAR, '0xAeaaf0e2c81Af264101B9129C00F4440cCF0F720', 18, 'WASTR', 'Wrapped ASTR'), _WETH2[ChainId.ARTHERA_TESTNET] = /*#__PURE__*/new Token(ChainId.ARTHERA_TESTNET, '0x5A1750f9cb8A7E98e1FD618922Af276493318710', 18, 'WAA', 'Wrapped AA'), _WETH2[ChainId.ARTHERA] = /*#__PURE__*/new Token(ChainId.ARTHERA, '0x69D349E2009Af35206EFc3937BaD6817424729F7', 18, 'WAA', 'Wrapped AA'), _WETH2[ChainId.PULSECHAIN] = /*#__PURE__*/new Token(ChainId.PULSECHAIN, '0xA1077a294dDE1B09bB078844df40758a5D0f9a27', 18, 'WPLS', 'Wrapped PLS'), _WETH2[ChainId.BASE] = /*#__PURE__*/new Token(ChainId.BASE, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.VELAS] = /*#__PURE__*/new Token(ChainId.VELAS, '0xc579D1f3CF86749E05CD06f7ADe17856c2CE3126', 18, 'VLX', 'Wrapped VLX'), _WETH2[ChainId.LINEA] = /*#__PURE__*/new Token(ChainId.LINEA, '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.ROOTSTOCK] = /*#__PURE__*/new Token(ChainId.ROOTSTOCK, '0x542fda317318ebf1d3deaf76e0b632741a7e677d', 18, 'WRBTC', 'Wrapped BTC'), _WETH2[ChainId.BOBA] = /*#__PURE__*/new Token(ChainId.BOBA, '0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.BOBA_BNB] = /*#__PURE__*/new Token(ChainId.BOBA_BNB, '0xC58aaD327D6D58D979882601ba8DDa0685B505eA', 18, 'WBOBA', 'Wrapped BOBA'), _WETH2[ChainId.AURORA] = /*#__PURE__*/new Token(ChainId.AURORA, '0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.ZKSYNC] = /*#__PURE__*/new Token(ChainId.ZKSYNC, '0x5aea5775959fbc2557cc8789bc1bf90a239d9a91', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.SCROLL] = /*#__PURE__*/new Token(ChainId.SCROLL, '0x5300000000000000000000000000000000000004', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.BLAST] = /*#__PURE__*/new Token(ChainId.BLAST, '0x4300000000000000000000000000000000000004', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.OPBNB] = /*#__PURE__*/new Token(ChainId.OPBNB, '0x4200000000000000000000000000000000000006', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.MANTLE] = /*#__PURE__*/new Token(ChainId.MANTLE, '0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8', 18, 'WMNT', 'Wrapped MNT'), _WETH2[ChainId.POLYGON_ZKEVM] = /*#__PURE__*/new Token(ChainId.POLYGON_ZKEVM, '0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9', 18, 'WETH', 'Wrapped ETH'), _WETH2[ChainId.BERA] = /*#__PURE__*/new Token(ChainId.BERA, '0x6969696969696969696969696969696969696969', 18, 'WBERA', 'Wrapped BERA'), _WETH2[ChainId.SONIC] = /*#__PURE__*/new Token(ChainId.SONIC, '0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38', 18, 'WS', 'Wrapped S'), _WETH2[ChainId.EXPCHAIN_TESTNET] = /*#__PURE__*/new Token(ChainId.EXPCHAIN_TESTNET, '0x46F2038afa5CDD1a8CD444DB923279ADe1208a48', 18, 'WTZKJ', 'Wrapped TZKJ'), _WETH2[ChainId.CYTONIC_TESTNET] = /*#__PURE__*/new Token(ChainId.CYTONIC_TESTNET, '0x30fDf316f8DFA2F0d10c7e2F900F43979ca4C60a', 18, 'WCCC', 'Wrapped CCC'), _WETH2); var _CETH, _CETH_NAME, _CETH_NAME_ROUTER; /** * Ether is the main usage of a 'native' currency, i.e. for Ethereum mainnet and all testnets */ var Ether = /*#__PURE__*/function (_NativeCurrency) { _inheritsLoose(Ether, _NativeCurrency); function Ether(chainId) { return _NativeCurrency.call(this, chainId, 18, 'ETH', 'Ether') || this; } Ether.onChain = function onChain(chainId) { var _this$_etherCache$cha; return (_this$_etherCache$cha = this._etherCache[chainId]) !== null && _this$_etherCache$cha !== void 0 ? _this$_etherCache$cha : this._etherCache[chainId] = new Ether(chainId); }; var _proto = Ether.prototype; _proto.equals = function equals(other) { return other.isNative && other.chainId === this.chainId; }; _createClass(Ether, [{ key: "wrapped", get: function get() { var weth9 = WETH9[this.chainId]; !!!weth9 ? process.env.NODE_ENV !== "production" ? invariant(false, 'WRAPPED') : invariant(false) : void 0; return weth9; } }]); return Ether; }(NativeCurrency); Ether._etherCache = {}; //@todo merge CETH with Ether var CETH = (_CETH = {}, _CETH[ChainId.MUMBAI] = /*#__PURE__*/new Token(ChainId.MUMBAI, ZERO_ADDRESS, 18, 'MATIC', 'Matic'), _CETH[ChainId.MATIC] = /*#__PURE__*/new Token(ChainId.MATIC, ZERO_ADDRESS, 18, 'MATIC', 'Matic'), _CETH[ChainId.FUJI] = /*#__PURE__*/new Token(ChainId.AVALANCHE, ZERO_ADDRESS, 18, 'AVAX', 'Avalanche'), _CETH[ChainId.AVALANCHE] = /*#__PURE__*/new Token(ChainId.AVALANCHE, ZERO_ADDRESS, 18, 'AVAX', 'Avalanche'), _CETH[ChainId.FANTOM_TESTNET] = /*#__PURE__*/new Token(ChainId.FANTOM_TESTNET, ZERO_ADDRESS, 18, 'FTM', 'Fantom'), _CETH[ChainId.FANTOM] = /*#__PURE__*/new Token(ChainId.FANTOM, ZERO_ADDRESS, 18, 'FTM', 'Fantom'), _CETH[ChainId.HUOBIECO_TESTNET] = /*#__PURE__*/new Token(ChainId.HUOBIECO_TESTNET, ZERO_ADDRESS, 18, 'HT', 'Huobi ECO'), _CETH[ChainId.HUOBIECO] = /*#__PURE__*/new Token(ChainId.HUOBIECO, ZERO_ADDRESS, 18, 'HT', 'Huobi ECO'), _CETH[ChainId.REEF] = /*#__PURE__*/new Token(ChainId.REEF, ZERO_ADDRESS, 18, 'REEF', 'Reef'), _CETH[ChainId.XDAI] = /*#__PURE__*/new Token(ChainId.XDAI, ZERO_ADDRESS, 18, 'XDAI', 'xDai'), _CETH[ChainId.FUSE] = /*#__PURE__*/new Token(ChainId.FUSE, ZERO_ADDRESS, 18, 'FUSE', 'Fuse'), _CETH[ChainId.OPTIMISM] = /*#__PURE__*/new Token(ChainId.OPTIMISM, ZERO_ADDRESS, 18, 'ETH', 'Optimism'), _CETH[ChainId.OPTIMISM_TESTNET] = /*#__PURE__*/new Token(ChainId.OPTIMISM_TESTNET, ZERO_ADDRESS, 18, 'ETH', 'Optimism'), _CETH[ChainId.KUCOIN] = /*#__PURE__*/new Token(ChainId.KUCOIN, ZERO_ADDRESS, 18, 'KCS', 'Kucoin'), _CETH[ChainId.KUCOIN_TESTNET] = /*#__PURE__*/new Token(ChainId.KUCOIN_TESTNET, ZERO_ADDRESS, 18, 'tKCS', 'Kucoin'), _CETH[ChainId.ETHERLITE] = /*#__PURE__*/new Token(ChainId.ETHERLITE, ZERO_ADDRESS, 18, 'ETL', 'Etherlite'), _CETH[ChainId.ETHEREUM_CLASSIC] = /*#__PURE__*/new Token(ChainId.ETHEREUM_CLASSIC, ZERO_ADDRESS, 18, 'ETC', 'Ethereum Classic'), _CETH[ChainId.ETHEREUM_CLASSIC_TESTNET] = /*#__PURE__*/new Token(ChainId.ETHEREUM_CLASSIC_TESTNET, ZERO_ADDRESS, 18, 'CETC', 'Ethereum Classic'), _CETH[ChainId.MOONBEAM] = /*#__PURE__*/new Token(ChainId.MOONBEAM, ZERO_ADDRESS, 18, 'GLMR', 'Moonbeam'), _CETH[ChainId.MOONBEAM_TESTNET] = /*#__PURE__*/new Token(ChainId.MOONBEAM_TESTNET, ZERO_ADDRESS, 18, 'DEV', 'Moonbeam'), _CETH[ChainId.CLOVER] = /*#__PURE__*/new Token(ChainId.CLOVER, ZERO_ADDRESS, 18, 'CLV', 'Clover'), _CETH[ChainId.CLOVER_TESTNET] = /*#__PURE__*/new Token(ChainId.CLOVER_TESTNET, ZERO_ADDRESS, 18, 'CLV', 'Clover'), _CETH[ChainId.CELO] = /*#__PURE__*/new Token(ChainId.CELO, ZERO_ADDRESS, 18, 'CELO', 'Celo'), _CETH[ChainId.ALFAJORES] = /*#__PURE__*/new Token(ChainId.ALFAJORES, ZERO_ADDRESS, 18, 'CELO', 'Celo'), _CETH[ChainId.ARBITRUM_TESTNET] = /*#__PURE__*/new Token(ChainId.ARBITRUM_TESTNET, ZERO_ADDRESS, 18, 'ETH', 'Arbitrum'), _CETH[ChainId.ARBITRUM] = /*#__PURE__*/new Token(ChainId.ARBITRUM, ZERO_ADDRESS, 18, 'ETH', 'Arbitrum'), _CETH[ChainId.FLARE] = /*#__PURE__*/new Token(ChainId.FLARE, ZERO_ADDRESS, 18, 'FLR', 'Flare'), _CETH[ChainId.FLARE_TESTNET] = /*#__PURE__*/new Token(ChainId.FLARE_TESTNET, ZERO_ADDRESS, 18, 'CFLR', 'Flare'), _CETH[ChainId.FUSION] = /*#__PURE__*/new Token(ChainId.FUSION, ZERO_ADDRESS, 18, 'FSN', 'Fusion'), _CETH[ChainId.HARMONY] = /*#__PURE__*/new Token(ChainId.HARMONY, ZERO_ADDRESS, 18, 'ONE', 'Harmony'), _CETH[ChainId.OKEX] = /*#__PURE__*/new Token(ChainId.OKEX, ZERO_ADDRESS, 18, 'OKT', 'OKEx'), _CETH[ChainId.IOTEX] = /*#__PURE__*/new Token(ChainId.IOTEX, ZERO_ADDRESS, 18, 'IOTX', 'IoTeX'), _CETH[ChainId.HOO] = /*#__PURE__*/new Token(ChainId.HOO, ZERO_ADDRESS, 18, 'HOO', 'HOO'), _CETH[ChainId.ELAETH] = /*#__PURE__*/new Token(ChainId.ELAETH, ZERO_ADDRESS, 18, 'ELA', 'ELA'), _CETH[ChainId.MOONRIVER] = /*#__PURE__*/new Token(ChainId.MOONRIVER, ZERO_ADDRESS, 18, 'MOVR', 'MOVR'), _CETH[ChainId.TELOS] = /*#__PURE__*/new Token(ChainId.TELOS, ZERO_ADDRESS, 18, 'TLOS', 'TLOS'), _CETH[ChainId.CRONOS] = /*#__PURE__*/new Token(ChainId.CRONOS, ZERO_ADDRESS, 18, 'CRO', 'CRO'), _CETH[ChainId.KAVA] = /*#__PURE__*/new Token(ChainId.KAVA, ZERO_ADDRESS, 18, 'KAVA', 'Kava'), _CETH[ChainId.BTTC] = /*#__PURE__*/new Token(ChainId.BTTC, ZERO_ADDRESS, 18, 'BTT', 'BTT'), _CETH[ChainId.BTTC_TESTNET] = /*#__PURE__*/new Token(ChainId.BTTC_TESTNET, ZERO_ADDRESS, 18, 'BTT', 'BTT'), _CETH[ChainId.BINANCE_TESTNET] = /*#__PURE__*/new Token(ChainId.BINANCE_TESTNET, ZERO_ADDRESS, 18, 'BSC', 'Binance'), _CETH[ChainId.BINANCE] = /*#__PURE__*/new Token(ChainId.BINANCE, ZERO_ADDRESS, 18, 'BNB', 'Binance'), _CETH[ChainId.ROPSTEN] = /*#__PURE__*/new Token(ChainId.ROPSTEN, ZERO_ADDRESS, 18, 'ETH', 'Ethereum'), _CETH[ChainId.ETHEREUM] = /*#__PURE__*/new Token(ChainId.ETHEREUM, ZERO_ADDRESS, 18, 'ETH', 'Ethereum'), _CETH[ChainId.NEON_TESTNET] = /*#__PURE__*/new Token(ChainId.NEON_TESTNET, ZERO_ADDRESS, 18, 'NEON', 'Neon'), _CETH[ChainId.NEON_MAINNET] = /*#__PURE__*/new Token(ChainId.NEON_MAINNET, ZERO_ADDRESS, 18, 'NEON', 'Neon'), _CETH[ChainId.Q] = /*#__PURE__*/new Token(ChainId.Q, ZERO_ADDRESS, 18, 'QGOV', 'QGOV'), _CETH[ChainId.BITGERT] = /*#__PURE__*/new Token(ChainId.BITGERT, ZERO_ADDRESS, 18, 'BRISE', 'Brise'), _CETH[ChainId.WANCHAIN] = /*#__PURE__*/new Token(ChainId.WANCHAIN, ZERO_ADDRESS, 18, 'WAN', 'WAN'), _CETH[ChainId.METIS] = /*#__PURE__*/new Token(ChainId.METIS, ZERO_ADDRESS, 18, 'METIS', 'METIS'), _CETH[ChainId.ASTAR] = /*#__PURE__*/new Token(ChainId.ASTAR, ZERO_ADDRESS, 18, 'ASTR', 'Astar'), _CETH[ChainId.ARTHERA_TESTNET] = /*#__PURE__*/new Token(ChainId.ARTHERA_TESTNET, ZERO_ADDRESS, 18, 'AA', 'Arthera'), _CETH[ChainId.ARTHERA] = /*#__PURE__*/new Token(ChainId.ARTHERA, ZERO_ADDRESS, 18, 'AA', 'Arthera'), _CETH[ChainId.PULSECHAIN] = /*#__PURE__*/new Token(ChainId.PULSECHAIN, ZERO_ADDRESS, 18, 'PLS', 'Pulse'), _CETH[ChainId.BASE] = /*#__PURE__*/new Token(ChainId.BASE, ZERO_ADDRESS, 18, 'ETH', 'Ethereum'), _CETH[ChainId.VELAS] = /*#__PURE__*/new Token(ChainId.VELAS, ZERO_ADDRESS, 18, 'VLX', 'Velas'), _CETH[ChainId.LINEA] = /*#__PURE__*/new Token(ChainId.LINEA, ZERO_ADDRESS, 18, 'ETH', 'Ethereum'), _CETH[ChainId.ROOTSTOCK] = /*#__PURE__*/new Token(ChainId.ROOTSTOCK, ZERO_ADDRESS, 18, 'RBTC', 'Rootstock'), _CETH[ChainId.BOBA] = /*#__PURE__*/new Token(ChainId.BOBA, ZERO_ADDRESS, 18, 'ETH', 'Boba ETH'), _CETH[ChainId.BOBA_BNB] = /*#__PURE__*/new Token(ChainId.BOBA_BNB, ZERO_ADDRESS, 18, 'BOBA', 'Boba BNB'), _CETH[ChainId.AURORA] = /*#__PURE__*/new Token(ChainId.AURORA, ZERO_ADDRESS, 18, 'ETH', 'Aurora'), _CETH[ChainId.ZKSYNC] = /*#__PURE__*/new Token(ChainId.ZKSYNC, ZERO_ADDRESS, 18, 'ETH', 'ZkSync'), _CETH[ChainId.SCROLL] = /*#__PURE__*/new Token(ChainId.SCROLL, ZERO_ADDRESS, 18, 'ETH', 'Scroll'), _CETH[ChainId.BLAST] = /*#__PURE__*/new Token(ChainId.BLAST, ZERO_ADDRESS, 18, 'ETH', 'Blast'), _CETH[ChainId.OPBNB] = /*#__PURE__*/new Token(ChainId.OPBNB, ZERO_ADDRESS, 18, 'BNB', 'opBNB'), _CETH[ChainId.MANTLE] = /*#__PURE__*/new Token(ChainId.MANTLE, ZERO_ADDRESS, 18, 'MNT', 'Mantle'), _CETH[ChainId.POLYGON_ZKEVM] = /*#__PURE__*/new Token(ChainId.POLYGON_ZKEVM, ZERO_ADDRESS, 18, 'ETH', 'Polygon zkEVM'), _CETH); var CETH_NAME = (_CETH_NAME = {}, _CETH_NAME[ChainId.MUMBAI] = 'MATIC', _CETH_NAME[ChainId.MATIC] = 'POL', _CETH_NAME[ChainId.FUJI] = 'AVAX', _CETH_NAME[ChainId.AVALANCHE] = 'AVAX', _CETH_NAME[ChainId.FANTOM_TESTNET] = 'FTM', _CETH_NAME[ChainId.FANTOM] = 'FTM', _CETH_NAME[ChainId.HUOBIECO_TESTNET] = 'HT', _CETH_NAME[ChainId.HUOBIECO] = 'HT', _CETH_NAME[ChainId.REEF] = 'REEF', _CETH_NAME[ChainId.XDAI] = 'xDAI', _CETH_NAME[ChainId.FUSE] = 'FUSE', _CETH_NAME[ChainId.OPTIMISM] = 'ETH', _CETH_NAME[ChainId.OPTIMISM_TESTNET] = 'KOR', _CETH_NAME[ChainId.KUCOIN] = 'KCS', _CETH_NAME[ChainId.KUCOIN_TESTNET] = 'tKCS', _CETH_NAME[ChainId.ETHERLITE] = 'ETL', _CETH_NAME[ChainId.ETHEREUM_CLASSIC] = 'ETC', _CETH_NAME[ChainId.ETHEREUM_CLASSIC_TESTNET] = 'CETC', _CETH_NAME[ChainId.MOONBEAM_TESTNET] = 'DEV', _CETH_NAME[ChainId.CLOVER_TESTNET] = 'CLV', _CETH_NAME[ChainId.CELO] = 'CELO', _CETH_NAME[ChainId.ALFAJORES] = 'CELO', _CETH_NAME[ChainId.ARBITRUM_TESTNET] = 'ETH', _CETH_NAME[ChainId.ARBITRUM] = 'ETH', _CETH_NAME[ChainId.FLARE] = 'FLR', _CETH_NAME[ChainId.FLARE_TESTNET] = 'CFLR', _CETH_NAME[ChainId.FUSION] = 'FSN', _CETH_NAME[ChainId.HARMONY] = 'ONE', _CETH_NAME[ChainId.OKEX] = 'OKT', _CETH_NAME[ChainId.IOTEX] = 'IOTX', _CETH_NAME[ChainId.HOO] = 'HOO', _CETH_NAME[ChainId.ELAETH] = 'ELA', _CETH_NAME[ChainId.MOONRIVER] = 'MOVR', _CETH_NAME[ChainId.TELOS] = 'TLOS', _CETH_NAME[ChainId.CRONOS] = 'CRO', _CETH_NAME[ChainId.KAVA] = 'KAVA', _CETH_NAME[ChainId.BTTC] = 'BTT', _CETH_NAME[ChainId.BTTC_TESTNET] = 'BTT', _CETH_NAME[ChainId.BINANCE_TESTNET] = 'BNB', _CETH_NAME[ChainId.BINANCE] = 'BNB', _CETH_NAME[ChainId.ROPSTEN] = 'ETH', _CETH_NAME[ChainId.ETHEREUM] = 'ETH', _CETH_NAME[ChainId.NEON_TESTNET] = 'tNEON', _CETH_NAME[ChainId.NEON_MAINNET] = 'NEON', _CETH_NAME[ChainId.Q] = 'QGOV', _CETH_NAME[ChainId.BITGERT] = 'BRISE', _CETH_NAME[ChainId.WANCHAIN] = 'WAN', _CETH_NAME[ChainId.METIS] = 'METIS', _CETH_NAME[ChainId.ASTAR] = 'ASTR', _CETH_NAME[ChainId.ARTHERA_TESTNET] = 'AA', _CETH_NAME[ChainId.ARTHERA] = 'AA', _CETH_NAME[ChainId.PULSECHAIN] = 'PLS', _CETH_NAME[ChainId.BASE] = 'ETH', _CETH_NAME[ChainId.VELAS] = 'VLX', _CETH_NAME[ChainId.LINEA] = 'ETH', _CETH_NAME[ChainId.ROOTSTOCK] = 'RBTC', _CETH_NAME[ChainId.BOBA] = 'ETH', _CETH_NAME[ChainId.BOBA_BNB] = 'BOBA', _CETH_NAME[ChainId.AURORA] = 'ETH', _CETH_NAME[ChainId.CLOVER] = 'CLV', _CETH_NAME[ChainId.ZKSYNC] = 'ETH', _CETH_NAME[ChainId.SCROLL] = 'ETH', _CETH_NAME[ChainId.BLAST] = 'ETH', _CETH_NAME[ChainId.OPBNB] = 'ETH', _CETH_NAME[ChainId.MOONBEAM] = 'GLMR', _CETH_NAME[ChainId.MANTLE] = 'MNT', _CETH_NAME[ChainId.POLYGON_ZKEVM] = 'ETH', _CETH_NAME[ChainId.BERA] = 'BERA', _CETH_NAME[ChainId.SONIC] = 'S', _CETH_NAME[ChainId.EXPCHAIN_TESTNET] = 'TZKJ', _CETH_NAME[ChainId.CYTONIC_TESTNET] = 'CCC', _CETH_NAME); var CETH_NAME_ROUTER = (_CETH_NAME_ROUTER = {}, _CETH_NAME_ROUTER[ChainId.MUMBAI] = 'MATIC', _CETH_NAME_ROUTER[ChainId.MATIC] = 'MATIC', _CETH_NAME_ROUTER[ChainId.FUJI] = 'AVAX', _CETH_NAME_ROUTER[ChainId.AVALANCHE] = 'AVAX', _CETH_NAME_ROUTER[ChainId.FANTOM_TESTNET] = 'FTM', _CETH_NAME_ROUTER[ChainId.FANTOM] = 'FTM', _CETH_NAME_ROUTER[ChainId.HUOBIECO_TESTNET] = 'HT', _CETH_NAME_ROUTER[ChainId.HUOBIECO] = 'HT', _CETH_NAME_ROUTER[ChainId.REEF] = 'ETH', _CETH_NAME_ROUTER[ChainId.XDAI] = 'xDAI', _CETH_NAME_ROUTER[ChainId.FUSE] = 'ETH', _CETH_NAME_ROUTER[ChainId.OPTIMISM] = 'ETH', _CETH_NAME_ROUTER[ChainId.OPTIMISM_TESTNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.KUCOIN] = 'ETH', _CETH_NAME_ROUTER[ChainId.KUCOIN_TESTNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.ETHERLITE] = 'ETH', _CETH_NAME_ROUTER[ChainId.ETHEREUM_CLASSIC] = 'ETH', _CETH_NAME_ROUTER[ChainId.ETHEREUM_CLASSIC_TESTNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.MOONBEAM_TESTNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.CLOVER_TESTNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.CELO] = 'ETH', _CETH_NAME_ROUTER[ChainId.ALFAJORES] = 'ETH', _CETH_NAME_ROUTER[ChainId.ARBITRUM_TESTNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.ARBITRUM] = 'ETH', _CETH_NAME_ROUTER[ChainId.FLARE] = 'ETH', _CETH_NAME_ROUTER[ChainId.FLARE_TESTNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.FUSION] = 'ETH', _CETH_NAME_ROUTER[ChainId.HARMONY] = 'ETH', _CETH_NAME_ROUTER[ChainId.OKEX] = 'ETH', _CETH_NAME_ROUTER[ChainId.IOTEX] = 'ETH', _CETH_NAME_ROUTER[ChainId.HOO] = 'ETH', _CETH_NAME_ROUTER[ChainId.ELAETH] = 'ETH', _CETH_NAME_ROUTER[ChainId.MOONRIVER] = 'ETH', _CETH_NAME_ROUTER[ChainId.TELOS] = 'ETH', _CETH_NAME_ROUTER[ChainId.CRONOS] = 'ETH', _CETH_NAME_ROUTER[ChainId.KAVA] = 'ETH', _CETH_NAME_ROUTER[ChainId.BTTC] = 'ETH', _CETH_NAME_ROUTER[ChainId.BTTC_TESTNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.BINANCE_TESTNET] = 'BNB', _CETH_NAME_ROUTER[ChainId.BINANCE] = 'BNB', _CETH_NAME_ROUTER[ChainId.ROPSTEN] = 'ETH', _CETH_NAME_ROUTER[ChainId.ETHEREUM] = 'ETH', _CETH_NAME_ROUTER[ChainId.NEON_TESTNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.NEON_MAINNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.Q] = 'ETH', _CETH_NAME_ROUTER[ChainId.BITGERT] = 'ETH', _CETH_NAME_ROUTER[ChainId.WANCHAIN] = 'ETH', _CETH_NAME_ROUTER[ChainId.METIS] = 'ETH', _CETH_NAME_ROUTER[ChainId.ASTAR] = 'ETH', _CETH_NAME_ROUTER[ChainId.ARTHERA_TESTNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.ARTHERA] = 'ETH', _CETH_NAME_ROUTER[ChainId.PULSECHAIN] = 'ETH', _CETH_NAME_ROUTER[ChainId.BASE] = 'ETH', _CETH_NAME_ROUTER[ChainId.VELAS] = 'ETH', _CETH_NAME_ROUTER[ChainId.LINEA] = 'ETH', _CETH_NAME_ROUTER[ChainId.ROOTSTOCK] = 'ETH', _CETH_NAME_ROUTER[ChainId.BOBA] = 'ETH', _CETH_NAME_ROUTER[ChainId.BOBA_BNB] = 'ETH', _CETH_NAME_ROUTER[ChainId.AURORA] = 'ETH', _CETH_NAME_ROUTER[ChainId.CLOVER] = 'ETH', _CETH_NAME_ROUTER[ChainId.ZKSYNC] = 'ETH', _CETH_NAME_ROUTER[ChainId.SCROLL] = 'ETH', _CETH_NAME_ROUTER[ChainId.BLAST] = 'ETH', _CETH_NAME_ROUTER[ChainId.OPBNB] = 'ETH', _CETH_NAME_ROUTER[ChainId.MOONBEAM] = 'ETH', _CETH_NAME_ROUTER[ChainId.MANTLE] = 'ETH', _CETH_NAME_ROUTER[ChainId.POLYGON_ZKEVM] = 'ETH', _CETH_NAME_ROUTER[ChainId.BERA] = 'ETH', _CETH_NAME_ROUTER[ChainId.SONIC] = 'ETH', _CETH_NAME_ROUTER[ChainId.EXPCHAIN_TESTNET] = 'ETH', _CETH_NAME_ROUTER[ChainId.CYTONIC_TESTNET] = 'ETH', _CETH_NAME_ROUTER); /** * Returns the percent d