@swapkit/helpers 1.0.0-rc.64 → 1.0.0-rc.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../api/dist/index.es.js","../src/helpers/asset.ts","../src/helpers/liquidity.ts","../src/helpers/memo.ts","../src/helpers/others.ts","../src/helpers/validators.ts","../src/modules/bigIntArithmetics.ts","../src/modules/assetValue.ts","../src/modules/swapKitError.ts","../src/modules/swapKitNumber.ts"],"sourcesContent":["var o = /* @__PURE__ */ ((t) => (t.INVALID_INPUT_PARAMETERS = \"1000\", t.UNKNOWN_PROVIDERS = \"1001\", t.CANNOT_FIND_INBOUND_ADDRESS = \"1002\", t.NO_INBOUND_ADDRESSES = \"1003\", t.CHAIN_HALTED_OR_UNSUPPORTED = \"1004\", t.MISSING_INPUT_PARAMETER = \"1005\", t.INVALID_TYPE_GENERIC = \"1100\", t.INVALID_NUMBER_STRING = \"1101\", t.INVALID_NUMBER = \"1102\", t.INVALID_BOOLEAN = \"1103\", t.INVALID_OBJECT = \"1104\", t.INVALID_ARRAY = \"1105\", t.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER = \"2000\", t.SELL_BUY_ASSETS_ARE_THE_SAME = \"2001\", t.MISSING_SOURCE_ADDRESS_FOR_SYNTH = \"2002\", t.AFF_ADDRESS_AND_BPS_OR_NEITHER = \"2003\", t.AFF_ADDRESS_TOO_LONG = \"2004\", t.AFF_BPS_INTEGER_MAX_500 = \"2005\", t.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN = \"2006\", t.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN = \"2007\", t.PREFERRED_PROVIDER_NOT_SUPPORTED = \"2008\", t.DESTINATION_ADDRESS_SMART_CONTRACT = \"2009\", t.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER = \"2010\", t.SOURCE_ADDRESS_SMART_CONTRACT = \"2011\", t.INVALID_PROVIDER = \"2100\", t.MISSING_CROSS_CHAIN_PROVIDER = \"2101\", t.MISSING_AVAX_PROVIDER = \"2102\", t.MISSING_BSC_PROVIDER = \"2103\", t.MISSING_ETH_PROVIDER = \"2104\", t.INVALID_PROVIDER_FOR_SWAP_OUT = \"2105\", t.MISSING_ARB_PROVIDER = \"2106\", t.INVALID_CHAIN = \"2200\", t.INVALID_ASSET = \"2201\", t.INVALID_ASSET_IDENTIFIER = \"2202\", t.UNSUPPORTED_CHAIN = \"2204\", t.UNSUPPORTED_ASSET = \"2203\", t.UNSUPPORTED_ASSET_FOR_SWAPOUT = \"2205\", t.INVALID_SOURCE_ADDRESS = \"2300\", t.INVALID_DESTINATION_ADDRESS = \"2301\", t.THORNODE_QUOTE_GENERIC_ERROR = \"3000\", t.NOT_ENOUGH_SYNTH_BALANCE = \"3001\", t.SYNTH_MINTING_CAP_REACHED = \"3002\", t.INVALID_QUOTE_MODE = \"4000\", t.NO_QUOTES = \"4001\", t.SERVICE_UNAVAILABLE_GENERIC = \"5000\", t.MISSING_GAS_DATA_GENERIC = \"5100\", t.MISSING_TOKEN_INFO_GENERIC = \"5200\", t.CANT_FIND_TOKEN_LIST = \"5201\", t.NO_PRICE = \"5202\", t.PRICE_IS_STALE = \"5203\", t.ADDRESS_NOT_WHITELISTED = \"6000\", t.ADDRESS_ALREADY_CLAIMED = \"6001\", t.TEMPORARY_ERROR = \"9999\", t))(o || {});\no.INVALID_INPUT_PARAMETERS + \"\", o.UNKNOWN_PROVIDERS + \"\", o.CANNOT_FIND_INBOUND_ADDRESS + \"\", o.NO_INBOUND_ADDRESSES + \"\", o.CHAIN_HALTED_OR_UNSUPPORTED + \"\", o.MISSING_INPUT_PARAMETER + \"\", o.INVALID_TYPE_GENERIC + \"\", o.INVALID_NUMBER_STRING + \"\", o.INVALID_NUMBER + \"\", o.INVALID_BOOLEAN + \"\", o.INVALID_OBJECT + \"\", o.INVALID_ARRAY + \"\", o.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER + \"\", o.SELL_BUY_ASSETS_ARE_THE_SAME + \"\", o.MISSING_SOURCE_ADDRESS_FOR_SYNTH + \"\", o.AFF_ADDRESS_AND_BPS_OR_NEITHER + \"\", o.AFF_ADDRESS_TOO_LONG + \"\", o.AFF_BPS_INTEGER_MAX_500 + \"\", o.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN + \"\", o.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN + \"\", o.PREFERRED_PROVIDER_NOT_SUPPORTED + \"\", o.SOURCE_ADDRESS_SMART_CONTRACT + \"\", o.DESTINATION_ADDRESS_SMART_CONTRACT + \"\", o.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER + \"\", o.INVALID_PROVIDER + \"\", o.MISSING_CROSS_CHAIN_PROVIDER + \"\", o.MISSING_AVAX_PROVIDER + \"\", o.MISSING_BSC_PROVIDER + \"\", o.MISSING_ETH_PROVIDER + \"\", o.MISSING_ARB_PROVIDER + \"\", o.INVALID_PROVIDER_FOR_SWAP_OUT + \"\", o.INVALID_CHAIN + \"\", o.INVALID_ASSET + \"\", o.UNSUPPORTED_CHAIN + \"\", o.UNSUPPORTED_ASSET + \"\", o.UNSUPPORTED_ASSET_FOR_SWAPOUT + \"\", o.THORNODE_QUOTE_GENERIC_ERROR + \"\", o.INVALID_SOURCE_ADDRESS + \"\", o.INVALID_DESTINATION_ADDRESS + \"\", o.NOT_ENOUGH_SYNTH_BALANCE + \"\", o.SYNTH_MINTING_CAP_REACHED + \"\", o.INVALID_QUOTE_MODE + \"\", o.NO_QUOTES + \"\", o.SERVICE_UNAVAILABLE_GENERIC + \"\", o.MISSING_GAS_DATA_GENERIC + \"\", o.MISSING_TOKEN_INFO_GENERIC + \"\", o.CANT_FIND_TOKEN_LIST + \"\", o.NO_PRICE + \"\", o.PRICE_IS_STALE + \"\", o.ADDRESS_NOT_WHITELISTED + \"\", o.ADDRESS_ALREADY_CLAIMED + \"\";\nvar I = /* @__PURE__ */ ((t) => (t.Arbitrum = \"ARB\", t.Avalanche = \"AVAX\", t.Binance = \"BNB\", t.BinanceSmartChain = \"BSC\", t.Bitcoin = \"BTC\", t.BitcoinCash = \"BCH\", t.Cosmos = \"GAIA\", t.Dogecoin = \"DOGE\", t.Ethereum = \"ETH\", t.Kujira = \"KUJI\", t.Litecoin = \"LTC\", t.Maya = \"MAYA\", t.Optimism = \"OP\", t.Polygon = \"MATIC\", t.THORChain = \"THOR\", t))(I || {}), f = /* @__PURE__ */ ((t) => (t.Arbitrum = \"42161\", t.ArbitrumHex = \"0xa4b1\", t.Avalanche = \"43114\", t.AvalancheHex = \"0xa86a\", t.Binance = \"Binance-Chain-Tigris\", t.BinanceSmartChain = \"56\", t.BinanceSmartChainHex = \"0x38\", t.Bitcoin = \"bitcoin\", t.BitcoinCash = \"bitcoincash\", t.Cosmos = \"cosmoshub-4\", t.Dogecoin = \"dogecoin\", t.Kujira = \"kaiyo-1\", t.Ethereum = \"1\", t.EthereumHex = \"0x1\", t.Litecoin = \"litecoin\", t.Maya = \"mayachain-mainnet-v1\", t.MayaStagenet = \"mayachain-stagenet-v1\", t.Optimism = \"10\", t.OptimismHex = \"0xa\", t.Polygon = \"137\", t.PolygonHex = \"0x89\", t.THORChain = \"thorchain-mainnet-v1\", t.THORChainStagenet = \"thorchain-stagenet-v2\", t))(f || {}), g = /* @__PURE__ */ ((t) => (t.Arbitrum = \"https://arb1.arbitrum.io/rpc\", t.Avalanche = \"https://node-router.thorswap.net/avalanche-c\", t.Binance = \"\", t.BinanceSmartChain = \"https://bsc-dataseed.binance.org\", t.Bitcoin = \"https://node-router.thorswap.net/bitcoin\", t.BitcoinCash = \"https://node-router.thorswap.net/bitcoin-cash\", t.Cosmos = \"https://node-router.thorswap.net/cosmos/rpc\", t.Kujira = \"https://rpc-kujira.synergynodes.com/\", t.Dogecoin = \"https://node-router.thorswap.net/dogecoin\", t.Ethereum = \"https://node-router.thorswap.net/ethereum\", t.Litecoin = \"https://node-router.thorswap.net/litecoin\", t.Maya = \"https://tendermint.mayachain.info\", t.MayaStagenet = \"https://stagenet.tendermint.mayachain.info\", t.Optimism = \"https://mainnet.optimism.io\", t.Polygon = \"https://polygon-rpc.com\", t.THORChain = \"https://rpc.thorswap.net\", t.THORChainStagenet = \"https://stagenet-rpc.ninerealms.com\", t))(g || {}), E = /* @__PURE__ */ ((t) => (t.Cosmos = \"https://node-router.thorswap.net/cosmos/rest\", t.Kujira = \"https://lcd-kujira.synergynodes.com/\", t.MayanodeMainnet = \"https://mayanode.mayachain.info\", t.MayanodeStagenet = \"https://stagenet.mayanode.mayachain.info\", t.ThornodeMainnet = \"https://thornode.thorswap.net\", t.ThornodeStagenet = \"https://stagenet-thornode.ninerealms.com\", t.ThorswapApi = \"https://api.thorswap.net\", t.ThorswapStatic = \"https://static.thorswap.net\", t))(E || {});\nconst N = Object.values(I), M = Object.keys(I), O = N.reduce(\n (t, e) => {\n const s = M.find((r) => I[r] === e);\n return s && (t[e] = s), t;\n },\n {}\n);\nN.reduce(\n (t, e) => (t[e] = f[O[e]], t),\n {}\n);\nN.reduce(\n (t, e) => (t[e] = g[O[e]], t),\n {}\n);\nN.reduce(\n (t, e) => {\n const s = `${O[e]}Hex`;\n return t[e] = f[s], t;\n },\n {}\n);\nclass m extends Error {\n constructor(e, s, r) {\n const i = e.status || e.status === 0 ? e.status : \"\", n = e.statusText || \"\", a = `${i} ${n}`.trim(), _ = a ? `status code ${a}` : \"an unknown error\";\n super(`Request failed with ${_}`), Object.defineProperty(this, \"response\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"request\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"options\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), this.name = \"HTTPError\", this.response = e, this.request = s, this.options = r;\n }\n}\nclass U extends Error {\n constructor(e) {\n super(\"Request timed out\"), Object.defineProperty(this, \"request\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), this.name = \"TimeoutError\", this.request = e;\n }\n}\nconst c = (t) => t !== null && typeof t == \"object\", d = (...t) => {\n for (const e of t)\n if ((!c(e) || Array.isArray(e)) && e !== void 0)\n throw new TypeError(\"The `options` argument must be an object\");\n return D({}, ...t);\n}, y = (t = {}, e = {}) => {\n const s = new globalThis.Headers(t), r = e instanceof globalThis.Headers, i = new globalThis.Headers(e);\n for (const [n, a] of i.entries())\n r && a === \"undefined\" || a === void 0 ? s.delete(n) : s.set(n, a);\n return s;\n}, D = (...t) => {\n let e = {}, s = {};\n for (const r of t)\n if (Array.isArray(r))\n Array.isArray(e) || (e = []), e = [...e, ...r];\n else if (c(r)) {\n for (let [i, n] of Object.entries(r))\n c(n) && i in e && (n = D(e[i], n)), e = { ...e, [i]: n };\n c(r.headers) && (s = y(s, r.headers), e.headers = s);\n }\n return e;\n}, v = (() => {\n let t = !1, e = !1;\n const s = typeof globalThis.ReadableStream == \"function\", r = typeof globalThis.Request == \"function\";\n return s && r && (e = new globalThis.Request(\"https://empty.invalid\", {\n body: new globalThis.ReadableStream(),\n method: \"POST\",\n // @ts-expect-error - Types are outdated.\n get duplex() {\n return t = !0, \"half\";\n }\n }).headers.has(\"Content-Type\")), t && !e;\n})(), G = typeof globalThis.AbortController == \"function\", W = typeof globalThis.ReadableStream == \"function\", F = typeof globalThis.FormData == \"function\", L = [\"get\", \"post\", \"put\", \"patch\", \"head\", \"delete\"], k = {\n json: \"application/json\",\n text: \"text/*\",\n formData: \"multipart/form-data\",\n arrayBuffer: \"*/*\",\n blob: \"*/*\"\n}, p = 2147483647, w = Symbol(\"stop\"), q = {\n json: !0,\n parseJson: !0,\n searchParams: !0,\n prefixUrl: !0,\n retry: !0,\n timeout: !0,\n hooks: !0,\n throwHttpErrors: !0,\n onDownloadProgress: !0,\n fetch: !0\n}, x = {\n method: !0,\n headers: !0,\n body: !0,\n mode: !0,\n credentials: !0,\n cache: !0,\n redirect: !0,\n referrer: !0,\n referrerPolicy: !0,\n integrity: !0,\n keepalive: !0,\n signal: !0,\n window: !0,\n dispatcher: !0,\n duplex: !0\n}, j = (t) => L.includes(t) ? t.toUpperCase() : t, X = [\"get\", \"put\", \"head\", \"delete\", \"options\", \"trace\"], Y = [408, 413, 429, 500, 502, 503, 504], V = [413, 429, 503], P = {\n limit: 2,\n methods: X,\n statusCodes: Y,\n afterStatusCodes: V,\n maxRetryAfter: Number.POSITIVE_INFINITY,\n backoffLimit: Number.POSITIVE_INFINITY,\n delay: (t) => 0.3 * 2 ** (t - 1) * 1e3\n}, $ = (t = {}) => {\n if (typeof t == \"number\")\n return {\n ...P,\n limit: t\n };\n if (t.methods && !Array.isArray(t.methods))\n throw new Error(\"retry.methods must be an array\");\n if (t.statusCodes && !Array.isArray(t.statusCodes))\n throw new Error(\"retry.statusCodes must be an array\");\n return {\n ...P,\n ...t,\n afterStatusCodes: V\n };\n};\nasync function K(t, e, s, r) {\n return new Promise((i, n) => {\n const a = setTimeout(() => {\n s && s.abort(), n(new U(t));\n }, r.timeout);\n r.fetch(t, e).then(i).catch(n).then(() => {\n clearTimeout(a);\n });\n });\n}\nasync function J(t, { signal: e }) {\n return new Promise((s, r) => {\n e && (e.throwIfAborted(), e.addEventListener(\"abort\", i, { once: !0 }));\n function i() {\n clearTimeout(n), r(e.reason);\n }\n const n = setTimeout(() => {\n e == null || e.removeEventListener(\"abort\", i), s();\n }, t);\n });\n}\nconst Q = (t, e) => {\n const s = {};\n for (const r in e)\n !(r in x) && !(r in q) && !(r in t) && (s[r] = e[r]);\n return s;\n};\nclass l {\n static create(e, s) {\n const r = new l(e, s), i = async () => {\n if (typeof r._options.timeout == \"number\" && r._options.timeout > p)\n throw new RangeError(`The \\`timeout\\` option cannot be greater than ${p}`);\n await Promise.resolve();\n let _ = await r._fetch();\n for (const u of r._options.hooks.afterResponse) {\n const A = await u(r.request, r._options, r._decorateResponse(_.clone()));\n A instanceof globalThis.Response && (_ = A);\n }\n if (r._decorateResponse(_), !_.ok && r._options.throwHttpErrors) {\n let u = new m(_, r.request, r._options);\n for (const A of r._options.hooks.beforeError)\n u = await A(u);\n throw u;\n }\n if (r._options.onDownloadProgress) {\n if (typeof r._options.onDownloadProgress != \"function\")\n throw new TypeError(\"The `onDownloadProgress` option must be a function\");\n if (!W)\n throw new Error(\"Streams are not supported in your environment. `ReadableStream` is missing.\");\n return r._stream(_.clone(), r._options.onDownloadProgress);\n }\n return _;\n }, a = r._options.retry.methods.includes(r.request.method.toLowerCase()) ? r._retry(i) : i();\n for (const [_, u] of Object.entries(k))\n a[_] = async () => {\n r.request.headers.set(\"accept\", r.request.headers.get(\"accept\") || u);\n const R = (await a).clone();\n if (_ === \"json\") {\n if (R.status === 204 || (await R.clone().arrayBuffer()).byteLength === 0)\n return \"\";\n if (s.parseJson)\n return s.parseJson(await R.text());\n }\n return R[_]();\n };\n return a;\n }\n // eslint-disable-next-line complexity\n constructor(e, s = {}) {\n if (Object.defineProperty(this, \"request\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"abortController\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"_retryCount\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: 0\n }), Object.defineProperty(this, \"_input\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"_options\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), this._input = e, this._options = {\n // TODO: credentials can be removed when the spec change is implemented in all browsers. Context: https://www.chromestatus.com/feature/4539473312350208\n credentials: this._input.credentials || \"same-origin\",\n ...s,\n headers: y(this._input.headers, s.headers),\n hooks: D({\n beforeRequest: [],\n beforeRetry: [],\n beforeError: [],\n afterResponse: []\n }, s.hooks),\n method: j(s.method ?? this._input.method),\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n prefixUrl: String(s.prefixUrl || \"\"),\n retry: $(s.retry),\n throwHttpErrors: s.throwHttpErrors !== !1,\n timeout: s.timeout ?? 1e4,\n fetch: s.fetch ?? globalThis.fetch.bind(globalThis)\n }, typeof this._input != \"string\" && !(this._input instanceof URL || this._input instanceof globalThis.Request))\n throw new TypeError(\"`input` must be a string, URL, or Request\");\n if (this._options.prefixUrl && typeof this._input == \"string\") {\n if (this._input.startsWith(\"/\"))\n throw new Error(\"`input` must not begin with a slash when using `prefixUrl`\");\n this._options.prefixUrl.endsWith(\"/\") || (this._options.prefixUrl += \"/\"), this._input = this._options.prefixUrl + this._input;\n }\n if (G) {\n if (this.abortController = new globalThis.AbortController(), this._options.signal) {\n const r = this._options.signal;\n this._options.signal.addEventListener(\"abort\", () => {\n this.abortController.abort(r.reason);\n });\n }\n this._options.signal = this.abortController.signal;\n }\n if (v && (this._options.duplex = \"half\"), this.request = new globalThis.Request(this._input, this._options), this._options.searchParams) {\n const i = \"?\" + (typeof this._options.searchParams == \"string\" ? this._options.searchParams.replace(/^\\?/, \"\") : new URLSearchParams(this._options.searchParams).toString()), n = this.request.url.replace(/(?:\\?.*?)?(?=#|$)/, i);\n (F && this._options.body instanceof globalThis.FormData || this._options.body instanceof URLSearchParams) && !(this._options.headers && this._options.headers[\"content-type\"]) && this.request.headers.delete(\"content-type\"), this.request = new globalThis.Request(new globalThis.Request(n, { ...this.request }), this._options);\n }\n this._options.json !== void 0 && (this._options.body = JSON.stringify(this._options.json), this.request.headers.set(\"content-type\", this._options.headers.get(\"content-type\") ?? \"application/json\"), this.request = new globalThis.Request(this.request, { body: this._options.body }));\n }\n _calculateRetryDelay(e) {\n if (this._retryCount++, this._retryCount <= this._options.retry.limit && !(e instanceof U)) {\n if (e instanceof m) {\n if (!this._options.retry.statusCodes.includes(e.response.status))\n return 0;\n const r = e.response.headers.get(\"Retry-After\");\n if (r && this._options.retry.afterStatusCodes.includes(e.response.status)) {\n let i = Number(r);\n return Number.isNaN(i) ? i = Date.parse(r) - Date.now() : i *= 1e3, this._options.retry.maxRetryAfter !== void 0 && i > this._options.retry.maxRetryAfter ? 0 : i;\n }\n if (e.response.status === 413)\n return 0;\n }\n const s = this._options.retry.delay(this._retryCount);\n return Math.min(this._options.retry.backoffLimit, s);\n }\n return 0;\n }\n _decorateResponse(e) {\n return this._options.parseJson && (e.json = async () => this._options.parseJson(await e.text())), e;\n }\n async _retry(e) {\n try {\n return await e();\n } catch (s) {\n const r = Math.min(this._calculateRetryDelay(s), p);\n if (r !== 0 && this._retryCount > 0) {\n await J(r, { signal: this._options.signal });\n for (const i of this._options.hooks.beforeRetry)\n if (await i({\n request: this.request,\n options: this._options,\n error: s,\n retryCount: this._retryCount\n }) === w)\n return;\n return this._retry(e);\n }\n throw s;\n }\n }\n async _fetch() {\n for (const s of this._options.hooks.beforeRequest) {\n const r = await s(this.request, this._options);\n if (r instanceof Request) {\n this.request = r;\n break;\n }\n if (r instanceof Response)\n return r;\n }\n const e = Q(this.request, this._options);\n return this._options.timeout === !1 ? this._options.fetch(this.request.clone(), e) : K(this.request.clone(), e, this.abortController, this._options);\n }\n /* istanbul ignore next */\n _stream(e, s) {\n const r = Number(e.headers.get(\"content-length\")) || 0;\n let i = 0;\n return e.status === 204 ? (s && s({ percent: 1, totalBytes: r, transferredBytes: i }, new Uint8Array()), new globalThis.Response(null, {\n status: e.status,\n statusText: e.statusText,\n headers: e.headers\n })) : new globalThis.Response(new globalThis.ReadableStream({\n async start(n) {\n const a = e.body.getReader();\n s && s({ percent: 0, transferredBytes: 0, totalBytes: r }, new Uint8Array());\n async function _() {\n const { done: u, value: A } = await a.read();\n if (u) {\n n.close();\n return;\n }\n if (s) {\n i += A.byteLength;\n const R = r === 0 ? 0 : i / r;\n s({ percent: R, transferredBytes: i, totalBytes: r }, A);\n }\n n.enqueue(A), await _();\n }\n await _();\n }\n }), {\n status: e.status,\n statusText: e.statusText,\n headers: e.headers\n });\n }\n}\n/*! MIT License © Sindre Sorhus */\nconst C = (t) => {\n const e = (s, r) => l.create(s, d(t, r));\n for (const s of L)\n e[s] = (r, i) => l.create(r, d(t, i, { method: s }));\n return e.create = (s) => C(d(s)), e.extend = (s) => C(d(t, s)), e.stop = w, e;\n}, B = C();\nlet T;\nconst h = {\n CachedPrices: `${E.ThorswapApi}/tokenlist/cached-price`,\n GasRates: `${E.ThorswapApi}/resource-worker/gasPrice/getAll`,\n Quote: `${E.ThorswapApi}/aggregator/tokens/quote`,\n Txn: `${E.ThorswapApi}/apiusage/v2/txn`,\n TokenlistProviders: `${E.ThorswapApi}/tokenlist/providers`,\n TokenList: `${E.ThorswapStatic}/token-list`,\n Thorname: `${E.ThorswapApi}/thorname`\n}, H = typeof window < \"u\" ? {} : { referrer: \"https://sk.thorswap.net\", referer: \"https://sk.thorswap.net\" }, b = () => T || (T = B.create({ headers: H }), T), ot = ({ apiKey: t, ...e }) => {\n T = B.create({\n ...e,\n headers: { ...H, ...e.headers, \"x-api-key\": t }\n });\n}, S = {\n get: (t, e) => b().get(t, e).json(),\n post: (t, e) => b().post(t, e).json()\n}, z = ({ tokens: t, ...e }) => {\n const s = new URLSearchParams();\n return t.filter((r, i, n) => n.findIndex((a) => a === r) === i).forEach((r) => s.append(\"tokens\", JSON.stringify(r))), e.metadata && s.append(\"metadata\", \"true\"), e.lookup && s.append(\"lookup\", \"true\"), e.sparkline && s.append(\"sparkline\", \"true\"), S.post(h.CachedPrices, {\n body: s.toString(),\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" }\n });\n}, it = {\n getCachedPrices: z,\n getQuote: (t) => S.get(h.Quote, { searchParams: t }),\n getGasRates: () => S.get(h.GasRates),\n getTxnDetails: (t) => S.get(h.Txn, { searchParams: t }),\n getTokenlistProviders: () => S.get(h.TokenlistProviders),\n getTokenList: (t) => S.get(`${h.TokenList}/${t}.json`),\n getThornameAddresses: (t) => S.get(`${h.Thorname}/${t}`),\n getThornameRegisteredChains: (t) => S.get(`${h.Thorname}/chains/${t}`),\n getThornameRlookup: (t, e) => S.get(`${h.Thorname}/rlookup`, { searchParams: { address: t, chain: e } })\n};\nvar Z = /* @__PURE__ */ ((t) => (t.SWAP_TC_TO_TC = \"SWAP:TC-TC\", t.SWAP_ETH_TO_TC = \"SWAP:ERC20-TC\", t.SWAP_TC_TO_ETH = \"SWAP:TC-ERC20\", t.SWAP_ETH_TO_ETH = \"SWAP:ERC20-ERC20\", t.SWAP_AVAX_TO_TC = \"SWAP:AVAX-TC\", t.SWAP_TC_TO_AVAX = \"SWAP:TC-AVAX\", t.SWAP_AVAX_TO_AVAX = \"SWAP:AVAX-AVAX\", t.SWAP_ETH_TO_AVAX = \"SWAP:ETH-AVAX\", t.SWAP_AVAX_TO_ETH = \"SWAP:AVAX-ETH\", t.SWAP_TC_TO_GAIA = \"SWAP:TC-GAIA\", t.SWAP_GAIA_TO_TC = \"SWAP:GAIA-TC\", t.SWAP_TC_TO_BNB = \"SWAP:TC-BNB\", t.SWAP_BNB_TO_TC = \"SWAP:BNB-TC\", t.SWAP_TC_TO_BTC = \"SWAP:TC-BTC\", t.SWAP_BTC_TO_TC = \"SWAP:BTC-TC\", t.SWAP_TC_TO_BCH = \"SWAP:TC-BCH\", t.SWAP_BCH_TO_TC = \"SWAP:BCH-TC\", t.SWAP_TC_TO_LTC = \"SWAP:TC-LTC\", t.SWAP_LTC_TO_TC = \"SWAP:LTC-TC\", t.SWAP_TC_TO_DOGE = \"SWAP:TC-DOGE\", t.SWAP_DOGE_TO_TC = \"SWAP:DOGE-TC\", t.TC_STATUS = \"TC:STATUS\", t.TC_TRANSFER = \"TC:TRANSFER\", t.TC_DEPOSIT = \"TC:DEPOSIT\", t.TC_SEND = \"TC:SEND\", t.TC_SWITCH = \"TC:SWITCH\", t.TC_LP_ADD = \"TC:ADDLIQUIDITY\", t.TC_LP_WITHDRAW = \"TC:WITHDRAW\", t.TC_TNS_CREATE = \"TC:TNS-CREATE\", t.TC_TNS_EXTEND = \"TC:TNS-EXTEND\", t.TC_TNS_UPDATE = \"TC:TNS-UPDATE\", t.TC_SAVINGS_ADD = \"TC:ADDSAVINGS\", t.TC_SAVINGS_WITHDRAW = \"TC:WITHDRAWSAVINGS\", t.TC_LENDING_OPEN = \"TC:LENDINGOPEN\", t.TC_LENDING_CLOSE = \"TC:LENDINGCLOSE\", t.ETH_APPROVAL = \"ETH:APPROVAL\", t.ETH_STATUS = \"ETH:STATUS\", t.ETH_TRANSFER_TO_TC = \"ETH:TRANSFER:IN\", t.ETH_TRANSFER_FROM_TC = \"ETH:TRANSFER:OUT\", t.AVAX_APPROVAL = \"AVAX:APPROVAL\", t.AVAX_STATUS = \"AVAX:STATUS\", t.AVAX_TRANSFER_TO_TC = \"AVAX:TRANSFER:IN\", t.AVAX_TRANSFER_FROM_TC = \"AVAX:TRANSFER:OUT\", t.BSC_APPROVAL = \"BSC:APPROVAL\", t.BSC_STATUS = \"BSC:STATUS\", t.BSC_TRANSFER_TO_TC = \"BSC:TRANSFER:IN\", t.BSC_TRANSFER_FROM_TC = \"BSC:TRANSFER:OUT\", t.APPROVAL = \"APPROVAL\", t.STATUS = \"STATUS\", t.TRANSFER_TO_TC = \"TRANSFER:IN\", t.TRANSFER_FROM_TC = \"TRANSFER:OUT\", t.UNSUPPORTED = \"UNSUPPORTED\", t.TC_LENDING = \"TC:LENDING\", t))(Z || {}), tt = /* @__PURE__ */ ((t) => (t.PENDING = \"pending\", t.SUCCESS = \"success\", t.CANCELLED = \"cancelled\", t.REFUNDED = \"refunded\", t.REPLACED = \"replaced\", t.ERROR = \"error\", t.UNKNOWN = \"unknown\", t.NOT_STARTED = \"not_started\", t.NOT_FOUND = \"not_found\", t.RETRIES_EXCEEDED = \"retries_exceeded\", t.STREAMING = \"streaming\", t))(tt || {}), et = /* @__PURE__ */ ((t) => (t[t.NOT_STARTED = 0] = \"NOT_STARTED\", t[t.SUCCESS = 1] = \"SUCCESS\", t[t.REFUNDED = 2] = \"REFUNDED\", t))(et || {});\nexport {\n h as ApiEndpoints,\n S as RequestClient,\n et as StreamingSwapProgressStatus,\n it as SwapKitApi,\n Z as TransactionType,\n tt as TxStatus,\n H as defaultRequestHeaders,\n ot as setRequestClientConfig\n};\n//# sourceMappingURL=index.es.js.map\n","import { RequestClient } from '@swapkit/api';\nimport type { EVMChain } from '@swapkit/types';\nimport { BaseDecimal, Chain, ChainToRPC, EVMChainList, FeeOption } from '@swapkit/types';\n\nconst getDecimalMethodHex = '0x313ce567';\n\nexport type CommonAssetString =\n | `${Chain.Maya}.MAYA`\n | `${Chain.Ethereum}.THOR`\n | `${Chain.Ethereum}.vTHOR`\n | `${Chain.Kujira}.USK`\n | Chain;\n\nconst getContractDecimals = async ({ chain, to }: { chain: EVMChain; to: string }) => {\n try {\n const { result } = await RequestClient.post<{ result: string }>(ChainToRPC[chain], {\n headers: {\n accept: '*/*',\n 'content-type': 'application/json',\n 'cache-control': 'no-cache',\n },\n body: JSON.stringify({\n id: 44,\n jsonrpc: '2.0',\n method: 'eth_call',\n params: [{ to: to.toLowerCase(), data: getDecimalMethodHex }, 'latest'],\n }),\n });\n\n return parseInt(BigInt(result).toString());\n } catch (error) {\n console.error(error);\n return BaseDecimal[chain];\n }\n};\n\nconst getETHAssetDecimal = async (symbol: string) => {\n if (symbol === Chain.Ethereum) return BaseDecimal.ETH;\n const [, address] = symbol.split('-');\n\n return address?.startsWith('0x')\n ? getContractDecimals({ chain: Chain.Ethereum, to: address })\n : BaseDecimal.ETH;\n};\n\nconst getAVAXAssetDecimal = async (symbol: string) => {\n const [, address] = symbol.split('-');\n\n return address?.startsWith('0x')\n ? getContractDecimals({ chain: Chain.Avalanche, to: address.toLowerCase() })\n : BaseDecimal.AVAX;\n};\n\nconst getBSCAssetDecimal = async (symbol: string) => {\n if (symbol === Chain.BinanceSmartChain) return BaseDecimal.BSC;\n\n return BaseDecimal.BSC;\n};\n\nexport const getDecimal = async ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Ethereum:\n return getETHAssetDecimal(symbol);\n case Chain.Avalanche:\n return getAVAXAssetDecimal(symbol);\n case Chain.BinanceSmartChain:\n return getBSCAssetDecimal(symbol);\n default:\n return BaseDecimal[chain];\n }\n};\n\nexport const gasFeeMultiplier: Record<FeeOption, number> = {\n [FeeOption.Average]: 1.2,\n [FeeOption.Fast]: 1.5,\n [FeeOption.Fastest]: 2,\n};\n\nexport const isGasAsset = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Litecoin:\n case Chain.Dogecoin:\n case Chain.Binance:\n case Chain.Ethereum:\n case Chain.Avalanche:\n return symbol === chain;\n\n case Chain.Arbitrum:\n case Chain.Optimism:\n return 'ETH' === symbol;\n\n case Chain.Maya:\n return symbol === 'CACAO';\n\n case Chain.Kujira:\n return symbol === 'KUJI';\n\n case Chain.Cosmos:\n return symbol === 'ATOM';\n case Chain.Polygon:\n return symbol === 'MATIC';\n case Chain.BinanceSmartChain:\n return symbol === 'BNB';\n case Chain.THORChain:\n return symbol === 'RUNE';\n }\n};\n\nexport const getCommonAssetInfo = (\n assetString: CommonAssetString,\n): { identifier: string; decimal: number } => {\n switch (assetString) {\n case `${Chain.Ethereum}.THOR`:\n return { identifier: 'ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044', decimal: 18 };\n case `${Chain.Ethereum}.vTHOR`:\n return { identifier: 'ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d', decimal: 18 };\n\n case Chain.Cosmos:\n return { identifier: 'GAIA.ATOM', decimal: BaseDecimal[assetString] };\n case Chain.THORChain:\n return { identifier: 'THOR.RUNE', decimal: BaseDecimal[assetString] };\n case Chain.BinanceSmartChain:\n return { identifier: 'BSC.BNB', decimal: BaseDecimal[assetString] };\n case Chain.Maya:\n return { identifier: 'MAYA.CACAO', decimal: BaseDecimal.MAYA };\n case `${Chain.Maya}.MAYA`:\n return { identifier: 'MAYA.MAYA', decimal: 4 };\n\n case `${Chain.Kujira}.USK`:\n return { identifier: `${Chain.Kujira}.USK`, decimal: 6 };\n\n case Chain.Kujira:\n case Chain.Arbitrum:\n case Chain.Optimism:\n case Chain.BitcoinCash:\n case Chain.Litecoin:\n case Chain.Dogecoin:\n case Chain.Binance:\n case Chain.Avalanche:\n case Chain.Polygon:\n case Chain.Bitcoin:\n case Chain.Ethereum:\n return { identifier: `${assetString}.${assetString}`, decimal: BaseDecimal[assetString] };\n }\n};\n\nexport const getAssetType = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n if (symbol.includes('/')) return 'Synth';\n\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dogecoin:\n case Chain.Litecoin:\n case Chain.Maya:\n case Chain.THORChain:\n return 'Native';\n\n case Chain.Cosmos:\n return symbol === 'ATOM' ? 'Native' : Chain.Cosmos;\n case Chain.Kujira:\n return symbol === Chain.Kujira ? 'Native' : Chain.Kujira;\n case Chain.Binance:\n return symbol === Chain.Binance ? 'Native' : 'BEP2';\n case Chain.BinanceSmartChain:\n return symbol === Chain.Binance ? 'Native' : 'BEP20';\n case Chain.Ethereum:\n return symbol === Chain.Ethereum ? 'Native' : 'ERC20';\n case Chain.Avalanche:\n return symbol === Chain.Avalanche ? 'Native' : Chain.Avalanche;\n case Chain.Polygon:\n return symbol === Chain.Polygon ? 'Native' : 'POLYGON';\n\n case Chain.Arbitrum:\n return [Chain.Ethereum, Chain.Arbitrum].includes(symbol as Chain) ? 'Native' : 'ARBITRUM';\n case Chain.Optimism:\n return [Chain.Ethereum, Chain.Optimism].includes(symbol as Chain) ? 'Native' : 'OPTIMISM';\n }\n};\n\nexport const assetFromString = (assetString: string) => {\n const [chain, ...symbolArray] = assetString.split('.') as [Chain, ...(string | undefined)[]];\n const synth = assetString.includes('/');\n const symbol = symbolArray.join('.');\n const ticker = symbol?.split('-')?.[0];\n\n return { chain, symbol, ticker, synth };\n};\n\nconst potentialScamRegex = new RegExp(\n /(.)\\1{6}|\\.ORG|\\.NET|\\.FINANCE|\\.COM|WWW|HTTP|\\\\\\\\|\\/\\/|[\\s$%:[\\]]/,\n 'gmi',\n);\n\nconst evmAssetHasAddress = (assetString: string) => {\n const [chain, symbol] = assetString.split('.') as [EVMChain, string];\n if (!EVMChainList.includes(chain as EVMChain)) return true;\n const [, address] = symbol.split('-') as [string, string?];\n\n return isGasAsset({ chain: chain as Chain, symbol }) || !!address;\n};\n\nexport const filterAssets = (\n tokens: {\n value: string;\n decimal: number;\n chain: Chain;\n symbol: string;\n }[],\n) =>\n tokens.filter((token) => {\n const assetString = `${token.chain}.${token.symbol}`;\n\n return (\n !potentialScamRegex.test(assetString) &&\n evmAssetHasAddress(assetString) &&\n token.value !== '0'\n );\n });\n","import { BaseDecimal } from '@swapkit/types';\n\nimport { SwapKitNumber } from '../index.ts';\n\ntype ShareParams<T = {}> = T & {\n liquidityUnits: string;\n poolUnits: string;\n};\n\ntype PoolParams<T = {}> = T & {\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n};\n\n/**\n * Ref: https://gitlab.com/thorchain/thornode/-/issues/657\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * s = stakeUnits for member (after factoring in withdrawBasisPoints)\n * T = totalPoolUnits for pool\n * A = assetDepth to be withdrawn\n *\n * Formula:\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * (part1 * (part2 - part3 + part4)) / part5\n */\nexport function getAsymmetricRuneShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n}: ShareParams<{ runeDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(runeDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const part5 = T.mul(T).mul(T);\n\n const numerator = part1.mul(part2.sub(part3).add(part4));\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricAssetShare({\n liquidityUnits,\n poolUnits,\n assetDepth,\n}: ShareParams<{ assetDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(assetDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const numerator = part1.mul(part2.sub(part3).add(part4));\n const part5 = T.mul(T).mul(T);\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricRuneWithdrawAmount({\n percent,\n runeDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; runeDepth: string }>) {\n return getAsymmetricRuneShare({ runeDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nexport function getAsymmetricAssetWithdrawAmount({\n percent,\n assetDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; assetDepth: string }>) {\n return getAsymmetricAssetShare({ assetDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nfunction toTCSwapKitNumber(value: string) {\n return SwapKitNumber.fromBigInt(BigInt(value), BaseDecimal.THOR);\n}\n\nexport function getSymmetricPoolShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n}>) {\n return {\n assetAmount: toTCSwapKitNumber(assetDepth).mul(liquidityUnits).div(poolUnits),\n runeAmount: toTCSwapKitNumber(runeDepth).mul(liquidityUnits).div(poolUnits),\n };\n}\n\nexport function getSymmetricWithdraw({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n percent,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n percent: number;\n}>) {\n return Object.fromEntries(\n Object.entries(getSymmetricPoolShare({ liquidityUnits, poolUnits, runeDepth, assetDepth })).map(\n ([name, value]) => [name, value.mul(percent)],\n ),\n );\n}\n\nexport function getEstimatedPoolShare({\n runeDepth,\n poolUnits,\n assetDepth,\n liquidityUnits,\n runeAmount,\n assetAmount,\n}: ShareParams<{\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n}>) {\n const R = new SwapKitNumber({ value: runeDepth, decimal: 8 });\n const A = new SwapKitNumber({ value: assetDepth, decimal: 8 });\n const P = new SwapKitNumber({ value: poolUnits, decimal: 8 });\n const runeAddAmount = new SwapKitNumber({ value: runeAmount, decimal: 8 });\n const assetAddAmount = new SwapKitNumber({ value: assetAmount, decimal: 8 });\n\n // liquidityUnits = P * (r*A + a*R + 2*r*a) / (r*A + a*R + 2*R*A)\n const rA = runeAddAmount.mul(A);\n const aR = assetAddAmount.mul(R);\n const ra = runeAddAmount.mul(assetAddAmount);\n const RA = R.mul(A);\n const numerator = P.mul(rA.add(aR.add(ra.mul(2))));\n const denominator = rA.add(aR.add(RA.mul(2)));\n const liquidityUnitsAfterAdd = numerator.div(denominator);\n const estimatedLiquidityUnits = toTCSwapKitNumber(liquidityUnits).add(liquidityUnitsAfterAdd);\n\n if (liquidityUnitsAfterAdd.getBaseValue('number') === 0) {\n return estimatedLiquidityUnits.div(P).getBaseValue('number');\n }\n\n // get pool units after add\n const newPoolUnits = P.add(estimatedLiquidityUnits);\n\n return estimatedLiquidityUnits.div(newPoolUnits).getBaseValue('number');\n}\n\nexport function getLiquiditySlippage({\n runeAmount,\n assetAmount,\n runeDepth,\n assetDepth,\n}: PoolParams) {\n if (runeAmount === '0' || assetAmount === '0' || runeDepth === '0' || assetDepth === '0')\n return 0;\n // formula: (t * R - T * r)/ (T*r + R*T)\n const R = toTCSwapKitNumber(runeDepth);\n const T = toTCSwapKitNumber(assetDepth);\n const assetAddAmount = toTCSwapKitNumber(assetAmount);\n const runeAddAmount = toTCSwapKitNumber(runeAmount);\n\n const numerator = assetAddAmount.mul(R).sub(T.mul(runeAddAmount));\n const denominator = T.mul(runeAddAmount).add(R.mul(T));\n\n // set absolute value of percent, no negative allowed\n return Math.abs(numerator.div(denominator).getBaseValue('number'));\n}\n","import { Chain, MemoType } from '@swapkit/types';\n\nexport type ThornameRegisterParam = {\n name: string;\n chain: string;\n address: string;\n owner?: string;\n preferredAsset?: string;\n expiryBlock?: string;\n};\n\ntype WithAddress<T = {}> = T & { address: string };\ntype WithChain<T = {}> = T & { chain: Chain };\n\nexport type MemoOptions<T extends MemoType> = {\n [MemoType.BOND]: WithAddress;\n [MemoType.LEAVE]: WithAddress;\n [MemoType.CLOSE_LOAN]: WithAddress<{ asset: string; minAmount?: string }>;\n [MemoType.OPEN_LOAN]: WithAddress<{ asset: string; minAmount?: string }>;\n [MemoType.UNBOND]: WithAddress<{ unbondAmount: number }>;\n [MemoType.DEPOSIT]: WithChain<{ symbol: string; address?: string; singleSide?: boolean }>;\n [MemoType.WITHDRAW]: WithChain<{\n ticker: string;\n symbol: string;\n basisPoints: number;\n targetAssetString?: string;\n singleSide?: boolean;\n }>;\n [MemoType.THORNAME_REGISTER]: Omit<ThornameRegisterParam, 'preferredAsset' | 'expiryBlock'>;\n}[T];\n\nexport const getMemoFor = <T extends MemoType>(memoType: T, options: MemoOptions<T>) => {\n switch (memoType) {\n case MemoType.LEAVE:\n case MemoType.BOND: {\n const { address } = options as MemoOptions<MemoType.BOND>;\n return `${memoType}:${address}`;\n }\n\n case MemoType.UNBOND: {\n const { address, unbondAmount } = options as MemoOptions<MemoType.UNBOND>;\n return `${memoType}:${address}:${unbondAmount}`;\n }\n\n case MemoType.THORNAME_REGISTER: {\n const { name, chain, address, owner } = options as MemoOptions<MemoType.THORNAME_REGISTER>;\n return `${memoType}:${name}:${chain}:${address}${owner ? `:${owner}` : ''}`;\n }\n\n case MemoType.DEPOSIT: {\n const { chain, symbol, address, singleSide } = options as MemoOptions<MemoType.DEPOSIT>;\n\n const getPoolIdentifier = (chain: Chain, symbol: string): string => {\n switch (chain) {\n case Chain.Litecoin:\n return 'l';\n case Chain.Dogecoin:\n return 'd';\n case Chain.BitcoinCash:\n return 'c';\n default:\n return `${chain}.${symbol}`;\n }\n };\n\n return singleSide\n ? `${memoType}:${chain}/${symbol}::t:0`\n : `${memoType}:${getPoolIdentifier(chain, symbol)}:${address || ''}:t:0`;\n }\n\n case MemoType.WITHDRAW: {\n const { chain, ticker, symbol, basisPoints, targetAssetString, singleSide } =\n options as MemoOptions<MemoType.WITHDRAW>;\n\n const shortenedSymbol =\n chain === 'ETH' && ticker !== 'ETH' ? `${ticker}-${symbol.slice(-3)}` : symbol;\n const target = !singleSide && targetAssetString ? `:${targetAssetString}` : '';\n const assetDivider = singleSide ? '/' : '.';\n\n return `${memoType}:${chain}${assetDivider}${shortenedSymbol}:${basisPoints}${target}`;\n }\n\n case MemoType.OPEN_LOAN:\n case MemoType.CLOSE_LOAN: {\n const { asset, address } = options as MemoOptions<MemoType.OPEN_LOAN>;\n\n return `${memoType}:${asset}:${address}`; //:${minAmount ? `${minAmount}` : ''}:t:0`;\n }\n\n default:\n return '';\n }\n};\n","// 10 rune for register, 1 rune per year\n// MINIMUM_REGISTRATION_FEE = 11\nexport function getTHORNameCost(year: number) {\n if (year < 0) throw new Error('Invalid number of year');\n return 10 + year;\n}\n\nexport function validateTHORName(name: string) {\n if (name.length > 30) return false;\n\n const regex = /^[a-zA-Z0-9+_-]+$/g;\n\n return !!name.match(regex);\n}\n\nexport function derivationPathToString([network, chainId, account, change, index]: number[]) {\n const shortPath = typeof index !== 'number';\n\n return `${network}'/${chainId}'/${account}'/${change}${shortPath ? '' : `/${index}`}`;\n}\n","import { Chain } from '@swapkit/types';\n\n// Backward compatibility\nconst supportedChains = [...Object.values(Chain), 'TERRA'];\n\nexport function validateIdentifier(identifier: string = '') {\n const uppercasedIdentifier = identifier.toUpperCase();\n\n const [chain] = uppercasedIdentifier.split('.') as [Chain, string];\n if (supportedChains.includes(chain)) return true;\n\n const [synthChain] = uppercasedIdentifier.split('/') as [Chain, string];\n if (supportedChains.includes(synthChain)) return true;\n\n throw new Error(\n `Invalid identifier: ${identifier}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`,\n );\n}\n","import { BaseDecimal } from '@swapkit/types';\n\nimport type { SwapKitNumber } from './swapKitNumber.ts';\n\ntype NumberPrimitivesType = {\n bigint: bigint;\n number: number;\n string: string;\n};\nexport type NumberPrimitives = bigint | number | string;\ntype InitialisationValueType = NumberPrimitives | BigIntArithmetics | SwapKitNumber;\n\ntype SKBigIntParams = InitialisationValueType | { decimal?: number; value: number | string };\ntype AllowedNumberTypes = 'bigint' | 'number' | 'string';\n\nconst DEFAULT_DECIMAL = 8;\nconst toMultiplier = (decimal: number) => 10n ** BigInt(decimal);\nconst decimalFromMultiplier = (multiplier: bigint) => Math.log10(parseFloat(multiplier.toString()));\n\nexport function formatBigIntToSafeValue({\n value,\n bigIntDecimal = DEFAULT_DECIMAL,\n decimal = DEFAULT_DECIMAL,\n}: {\n value: bigint;\n bigIntDecimal?: number;\n decimal?: number;\n}) {\n if (decimal === 0) return value.toString();\n const isNegative = value < 0n;\n let valueString = value.toString().substring(isNegative ? 1 : 0);\n\n const padLength = decimal - (valueString.length - 1);\n\n if (padLength > 0) {\n valueString = '0'.repeat(padLength) + valueString;\n }\n\n const decimalIndex = valueString.length - decimal;\n let decimalString = valueString.slice(-decimal);\n\n // Check if we need to round up\n if (parseInt(decimalString[bigIntDecimal]) >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n parseInt(decimalString[bigIntDecimal - 1]) + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? '-' : ''}${valueString.slice(0, decimalIndex)}.${decimalString}`.replace(\n /\\.?0*$/,\n '',\n );\n}\n\nexport class BigIntArithmetics {\n decimalMultiplier: bigint = 10n ** 8n;\n bigIntValue: bigint = 0n;\n decimal?: number;\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new BigIntArithmetics({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n\n static shiftDecimals({\n value,\n from,\n to,\n }: {\n value: InstanceType<typeof SwapKitNumber>;\n from: number;\n to: number;\n }) {\n return this.fromBigInt(\n (value.getBaseValue('bigint') * toMultiplier(to)) / toMultiplier(from),\n to,\n );\n }\n\n constructor(params: SKBigIntParams) {\n const value = getStringValue(params);\n const isComplex = typeof params === 'object';\n this.decimal = isComplex ? params.decimal : undefined;\n\n // use the multiplier to keep track of decimal point - defaults to 8 if lower than 8\n this.decimalMultiplier =\n isComplex && 'decimalMultiplier' in params\n ? params.decimalMultiplier\n : toMultiplier(Math.max(getFloatDecimals(toSafeValue(value)), this.decimal || 0));\n this.#setValue(value);\n }\n\n set(value: SKBigIntParams): this {\n // @ts-expect-error False positive\n return new this.constructor({ decimal: this.decimal, value, identifier: this.toString() });\n }\n add(...args: InitialisationValueType[]) {\n return this.#arithmetics('add', ...args);\n }\n sub(...args: InitialisationValueType[]) {\n return this.#arithmetics('sub', ...args);\n }\n mul(...args: InitialisationValueType[]) {\n return this.#arithmetics('mul', ...args);\n }\n div(...args: InitialisationValueType[]) {\n return this.#arithmetics('div', ...args);\n }\n gt(value: InitialisationValueType) {\n return this.#comparison('gt', value);\n }\n gte(value: InitialisationValueType) {\n return this.#comparison('gte', value);\n }\n lt(value: InitialisationValueType) {\n return this.#comparison('lt', value);\n }\n lte(value: InitialisationValueType) {\n return this.#comparison('lte', value);\n }\n eqValue(value: InitialisationValueType) {\n return this.#comparison('eqValue', value);\n }\n\n // @ts-expect-error False positive\n getValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const value = this.formatBigIntToSafeValue(\n this.bigIntValue,\n this.decimal || decimalFromMultiplier(this.decimalMultiplier),\n );\n\n switch (type) {\n case 'number':\n return Number(value) as NumberPrimitivesType[T];\n case 'string':\n return value as NumberPrimitivesType[T];\n case 'bigint':\n return ((this.bigIntValue * 10n ** BigInt(this.decimal || 8n)) /\n this.decimalMultiplier) as NumberPrimitivesType[T];\n }\n }\n\n // @ts-expect-error\n getBaseValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const divisor = this.decimalMultiplier / toMultiplier(this.decimal || BaseDecimal.THOR);\n const baseValue = this.bigIntValue / divisor;\n\n switch (type) {\n case 'number':\n return Number(baseValue) as NumberPrimitivesType[T];\n case 'string':\n return baseValue.toString() as NumberPrimitivesType[T];\n case 'bigint':\n return baseValue as NumberPrimitivesType[T];\n }\n }\n\n getBigIntValue(value: InitialisationValueType, decimal?: number) {\n if (!decimal && typeof value === 'object') return value.bigIntValue;\n\n const stringValue = getStringValue(value);\n const safeValue = toSafeValue(stringValue);\n\n if (safeValue === '0' || safeValue === 'undefined') return 0n;\n return this.#toBigInt(safeValue, decimal);\n }\n\n toSignificant(significantDigits: number = 6) {\n const [int, dec] = this.getValue('string').split('.');\n const integer = int || '';\n const decimal = dec || '';\n const valueLength = parseInt(integer) ? integer.length + decimal.length : decimal.length;\n\n if (valueLength <= significantDigits) {\n return this.getValue('string');\n }\n\n if (integer.length >= significantDigits) {\n return integer.slice(0, significantDigits).padEnd(integer.length, '0');\n }\n\n if (parseInt(integer)) {\n return `${integer}.${decimal.slice(0, significantDigits - integer.length)}`.padEnd(\n significantDigits - integer.length,\n '0',\n );\n }\n\n const trimmedDecimal = parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, significantDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n '0',\n )}`;\n }\n\n toFixed(fixedDigits: number = 6) {\n const [int, dec] = this.getValue('string').split('.');\n const integer = int || '';\n const decimal = dec || '';\n\n if (parseInt(integer)) {\n return `${integer}.${decimal.slice(0, fixedDigits)}`.padEnd(fixedDigits, '0');\n }\n\n const trimmedDecimal = parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, fixedDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n '0',\n )}`;\n }\n\n toAbbreviation(digits = 2) {\n const value = this.getValue('number');\n const abbreviations = ['', 'K', 'M', 'B', 'T', 'Q', 'Qi', 'S'];\n const tier = Math.floor(Math.log10(Math.abs(value)) / 3);\n const suffix = abbreviations[tier];\n\n if (!suffix) return this.getValue('string');\n\n const scale = 10 ** (tier * 3);\n const scaled = value / scale;\n\n return `${scaled.toFixed(digits)}${suffix}`;\n }\n\n toCurrency(\n currency = '$',\n {\n currencyPosition = 'start',\n decimal = 2,\n decimalSeparator = '.',\n thousandSeparator = ',',\n } = {},\n ) {\n const value = this.getValue('number');\n const [int, dec = ''] = value.toFixed(6).split('.');\n const integer = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n const parsedValue =\n !int && !dec\n ? '0.00'\n : int === '0'\n ? `${parseFloat(`0.${dec}`)}`.replace('.', decimalSeparator)\n : `${integer}${parseInt(dec) ? `${decimalSeparator}${dec.slice(0, decimal)}` : ''}`;\n\n return `${currencyPosition === 'start' ? currency : ''}${parsedValue}${\n currencyPosition === 'end' ? currency : ''\n }`;\n }\n\n formatBigIntToSafeValue(value: bigint, decimal?: number) {\n const bigIntDecimal = decimal || this.decimal || DEFAULT_DECIMAL;\n const decimalToUseForConversion = Math.max(\n bigIntDecimal,\n decimalFromMultiplier(this.decimalMultiplier),\n );\n const isNegative = value < 0n;\n\n const valueString = value.toString().substring(isNegative ? 1 : 0);\n const padLength = decimalToUseForConversion - (valueString.length - 1);\n\n const parsedValueString = padLength > 0 ? '0'.repeat(padLength) + valueString : valueString;\n\n const decimalIndex = parsedValueString.length - decimalToUseForConversion;\n let decimalString = parsedValueString.slice(-decimalToUseForConversion);\n\n // Check if we need to round up\n if (parseInt(decimalString[bigIntDecimal]) >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n parseInt(decimalString[bigIntDecimal - 1]) + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? '-' : ''}${parsedValueString.slice(\n 0,\n decimalIndex,\n )}.${decimalString}`.replace(/\\.?0*$/, '');\n }\n\n #arithmetics(method: 'add' | 'sub' | 'mul' | 'div', ...args: InitialisationValueType[]): this {\n const precisionDecimal = this.#retrievePrecisionDecimal(this, ...args);\n const decimal = Math.max(precisionDecimal, decimalFromMultiplier(this.decimalMultiplier));\n const precisionDecimalMultiplier = toMultiplier(decimal);\n\n const result = args.reduce(\n (acc: bigint, arg) => {\n const value = this.getBigIntValue(arg, decimal);\n\n switch (method) {\n case 'add':\n return acc + value;\n case 'sub':\n return acc - value;\n /**\n * Multiplication & division would end up with wrong result if we don't adjust the value\n * 200000000n * 200000000n => 40000000000000000n\n * 200000000n / 200000000n => 1n\n * So we do the following:\n * 200000000n * 200000000n = 40000000000000000n / 100000000n (decimals) => 400000000n\n * (200000000n * 100000000n (decimals)) / 200000000n => 100000000n\n */\n case 'mul':\n return (acc * value) / precisionDecimalMultiplier;\n case 'div': {\n if (value === 0n) throw new RangeError('Division by zero');\n return (acc * precisionDecimalMultiplier) / value;\n }\n default:\n return acc;\n }\n },\n //normalize is to precision multiplier base\n (this.bigIntValue * precisionDecimalMultiplier) / this.decimalMultiplier,\n );\n\n const value = formatBigIntToSafeValue({\n bigIntDecimal: decimal,\n decimal,\n value: result,\n });\n\n // @ts-expect-error False positive\n return new this.constructor({\n decimalMultiplier: toMultiplier(decimal),\n decimal: this.decimal,\n value,\n identifier: this.toString(),\n });\n }\n\n #comparison(method: 'gt' | 'gte' | 'lt' | 'lte' | 'eqValue', ...args: InitialisationValueType[]) {\n const decimal = this.#retrievePrecisionDecimal(this, ...args);\n const value = this.getBigIntValue(args[0], decimal);\n const compareToValue = this.getBigIntValue(this, decimal);\n\n switch (method) {\n case 'gt':\n return compareToValue > value;\n case 'gte':\n return compareToValue >= value;\n case 'lt':\n return compareToValue < value;\n case 'lte':\n return compareToValue <= value;\n case 'eqValue':\n return compareToValue === value;\n }\n }\n\n #setValue(value: InitialisationValueType) {\n const safeValue = toSafeValue(value) || '0';\n this.bigIntValue = this.#toBigInt(safeValue);\n }\n\n #retrievePrecisionDecimal(...args: InitialisationValueType[]) {\n const decimals = args\n .map((arg) => {\n const isObject = typeof arg === 'object';\n const value = isObject\n ? arg.decimal || decimalFromMultiplier(arg.decimalMultiplier)\n : getFloatDecimals(toSafeValue(arg));\n\n return value;\n })\n .filter(Boolean) as number[];\n\n return Math.max(...decimals, DEFAULT_DECIMAL);\n }\n\n #toBigInt(value: string, decimal?: number) {\n const multiplier = decimal ? toMultiplier(decimal) : this.decimalMultiplier;\n const padDecimal = decimalFromMultiplier(multiplier);\n const [integerPart = '', decimalPart = ''] = value.split('.');\n\n return BigInt(`${integerPart}${decimalPart.padEnd(padDecimal, '0')}`);\n }\n}\n\nconst numberFormatter = Intl.NumberFormat('fullwide', {\n useGrouping: false,\n maximumFractionDigits: 20,\n});\n\nfunction toSafeValue(value: InitialisationValueType) {\n const parsedValue =\n typeof value === 'number' ? numberFormatter.format(value) : getStringValue(value);\n const splitValue = `${parsedValue}`.replaceAll(',', '.').split('.');\n\n return splitValue.length > 1\n ? `${splitValue.slice(0, -1).join('')}.${splitValue.at(-1)}`\n : splitValue[0];\n}\n\nfunction getFloatDecimals(value: string) {\n const decimals = value.split('.')[1]?.length || 0;\n return Math.max(decimals, DEFAULT_DECIMAL);\n}\n\nfunction getStringValue(param: SKBigIntParams) {\n return typeof param === 'object'\n ? 'getValue' in param\n ? param.getValue('string')\n : param.value\n : param;\n}\n","import { BaseDecimal, Chain, ChainToChainId } from '@swapkit/types';\n\nimport type { CommonAssetString } from '../helpers/asset.ts';\nimport { getAssetType, getCommonAssetInfo, getDecimal, isGasAsset } from '../helpers/asset.ts';\nimport { validateIdentifier } from '../helpers/validators.ts';\nimport type { TokenNames, TokenTax } from '../types.ts';\n\nimport type { NumberPrimitives } from './bigIntArithmetics.ts';\nimport { BigIntArithmetics, formatBigIntToSafeValue } from './bigIntArithmetics.ts';\nimport type { SwapKitValueType } from './swapKitNumber.ts';\n\nconst staticTokensMap = new Map<\n TokenNames,\n { tax?: TokenTax; decimal: number; identifier: string }\n>();\n\nexport class AssetValue extends BigIntArithmetics {\n address?: string;\n chain: Chain;\n isGasAsset = false;\n isSynthetic = false;\n symbol: string;\n tax?: TokenTax;\n ticker: string;\n type: ReturnType<typeof getAssetType>;\n\n constructor({\n value,\n decimal,\n tax,\n chain,\n symbol,\n identifier,\n }: { decimal: number; value: SwapKitValueType; tax?: TokenTax } & (\n | { chain: Chain; symbol: string; identifier?: never }\n | { identifier: string; chain?: never; symbol?: never }\n )) {\n super(typeof value === 'object' ? value : { decimal, value });\n\n const assetInfo = getAssetInfo(identifier || `${chain}.${symbol}`);\n\n this.type = getAssetType(assetInfo);\n this.tax = tax;\n this.chain = assetInfo.chain;\n this.ticker = assetInfo.ticker;\n this.symbol = assetInfo.symbol;\n this.address = assetInfo.address;\n this.isSynthetic = assetInfo.isSynthetic;\n this.isGasAsset = assetInfo.isGasAsset;\n }\n\n toString() {\n return this.isSynthetic ? this.symbol : `${this.chain}.${this.symbol}`;\n }\n\n toUrl() {\n return this.isSynthetic ? `${this.chain}.${this.symbol.replace('/', '.')}` : this.toString();\n }\n\n eq({ chain, symbol }: { chain: Chain; symbol: string }) {\n return this.chain === chain && this.symbol === symbol;\n }\n\n chainId() {\n return ChainToChainId[this.chain];\n }\n\n // THOR.RUNE\n // THOR.ETH.ETH\n // ETH.THOR-0x1234567890\n static fromUrl(urlAsset: string, value: NumberPrimitives = 0) {\n const [chain, ticker, symbol] = urlAsset.split('.');\n if (!chain || !ticker) throw new Error('Invalid asset url');\n\n const assetString =\n chain === Chain.THORChain && symbol ? `${chain}.${ticker}/${symbol}` : urlAsset;\n\n return createAssetValue(assetString, value);\n }\n\n static fromString(assetString: string, value: NumberPrimitives = 0) {\n return createAssetValue(assetString, value);\n }\n static fromIdentifier(\n assetString:\n | `${Chain}.${string}`\n | `${Chain}/${string}`\n | `${Chain}.${string}-${string}`\n | TokenNames,\n value: NumberPrimitives = 0,\n ) {\n return createAssetValue(assetString, value);\n }\n\n static fromStringSync(assetString: string, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n return new AssetValue({\n tax,\n value: safeValue(value, decimal),\n identifier: isSynthetic ? assetString : identifier,\n decimal: isSynthetic ? 8 : decimal,\n });\n }\n\n static fromIdentifierSync(assetString: TokenNames, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. - Loading with base Chain. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n return new AssetValue({ tax, decimal, identifier, value: safeValue(value, decimal) });\n }\n\n static fromChainOrSignature(assetString: CommonAssetString, value: NumberPrimitives = 0) {\n const { decimal, identifier } = getCommonAssetInfo(assetString);\n return new AssetValue({ value: safeValue(value, decimal), decimal, identifier });\n }\n\n static loadStaticAssets() {\n return new Promise<{ ok: true } | { ok: false; message: string; error: any }>(\n async (resolve, reject) => {\n try {\n const tokenPackages = await import('@swapkit/tokens');\n\n Object.values(tokenPackages).forEach((tokenList) => {\n tokenList?.tokens?.forEach(({ identifier, chain, ...rest }) => {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, {\n identifier,\n decimal: 'decimals' in rest ? rest.decimals : BaseDecimal[chain as Chain],\n });\n });\n });\n\n resolve({ ok: true });\n } catch (error) {\n console.error(error);\n reject({\n ok: false,\n error,\n message:\n \"Couldn't load static assets. Ensure you have installed @swapkit/tokens package\",\n });\n }\n },\n );\n }\n}\n\nexport function getMinAmountByChain(chain: Chain) {\n const asset = AssetValue.fromChainOrSignature(chain);\n\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.Litecoin:\n case Chain.BitcoinCash:\n return asset.set(0.00010001);\n\n case Chain.Dogecoin:\n return asset.set(1.00000001);\n\n case Chain.Avalanche:\n case Chain.Ethereum:\n return asset.set(0.00000001);\n\n case Chain.THORChain:\n case Chain.Maya:\n return asset.set(0);\n\n case Chain.Cosmos:\n return asset.set(0.000001);\n\n default:\n return asset.set(0.00000001);\n }\n}\n\nasync function createAssetValue(identifier: string, value: NumberPrimitives = 0) {\n validateIdentifier(identifier);\n\n const staticToken = staticTokensMap.get(identifier.toUpperCase() as TokenNames);\n const decimal = staticToken?.decimal || (await getDecimal(getAssetInfo(identifier)));\n if (!staticToken) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, { identifier, decimal });\n }\n\n return new AssetValue({ decimal, value: safeValue(value, decimal), identifier });\n}\n\nfunction createSyntheticAssetValue(identifier: string, value: NumberPrimitives = 0) {\n const [synthChain, symbol] =\n identifier.split('.')[0].toUpperCase() === Chain.THORChain\n ? identifier.split('.').slice(1)!.join().split('/')\n : identifier.split('/');\n\n if (!synthChain || !symbol) throw new Error('Invalid asset identifier');\n\n return new AssetValue({\n decimal: 8,\n value: safeValue(value, 8),\n identifier: `${Chain.THORChain}.${synthChain}/${symbol}`,\n });\n}\n\nfunction safeValue(value: NumberPrimitives, decimal: number) {\n return typeof value === 'bigint'\n ? formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal })\n : value;\n}\n\nfunction getAssetInfo(identifier: string) {\n const isSynthetic = identifier.slice(0, 14).includes('/');\n const [synthChain, synthSymbol] =\n identifier.split('.')[0].toUpperCase() === Chain.THORChain\n ? identifier.split('.').slice(1)!.join().split('/')\n : identifier.split('/');\n\n if (isSynthetic && (!synthChain || !synthSymbol)) throw new Error('Invalid asset identifier');\n\n const adjustedIdentifier =\n identifier.includes('.') && !isSynthetic ? identifier : `${Chain.THORChain}.${synthSymbol}`;\n\n const [chain, symbol] = adjustedIdentifier.split('.') as [Chain, string];\n const [ticker, address] = (isSynthetic ? synthSymbol : symbol).split('-') as [string, string?];\n\n return {\n address: address?.toLowerCase(),\n chain,\n isGasAsset: isGasAsset({ chain, symbol }),\n isSynthetic,\n symbol:\n (isSynthetic ? `${synthChain}/` : '') +\n (address ? `${ticker}-${address?.toLowerCase() ?? ''}` : symbol),\n ticker,\n };\n}\n","const errorMessages = {\n /**\n * Core\n */\n core_wallet_connection_not_found: 10001,\n core_estimated_max_spendable_chain_not_supported: 10002,\n core_extend_error: 10003,\n core_inbound_data_not_found: 10004,\n core_approve_asset_address_or_from_not_found: 10005,\n core_chain_halted: 10099,\n /**\n * Core - Wallet Connection\n */\n core_wallet_xdefi_not_installed: 10101,\n core_wallet_evmwallet_not_installed: 10102,\n core_wallet_walletconnect_not_installed: 10103,\n core_wallet_keystore_not_installed: 10104,\n core_wallet_ledger_not_installed: 10105,\n core_wallet_trezor_not_installed: 10106,\n core_wallet_keplr_not_installed: 10107,\n core_wallet_okx_not_installed: 10108,\n core_wallet_keepkey_not_installed: 10109,\n /**\n * Core - Swap\n */\n core_swap_invalid_params: 10200,\n core_swap_route_not_complete: 10201,\n core_swap_asset_not_recognized: 10202,\n core_swap_contract_not_found: 10203,\n core_swap_route_transaction_not_found: 10204,\n core_swap_contract_not_supported: 10205,\n core_swap_transaction_error: 10206,\n core_swap_quote_mode_not_supported: 10207,\n /**\n * Core - Transaction\n */\n core_transaction_deposit_error: 10301,\n core_transaction_create_liquidity_rune_error: 10302,\n core_transaction_create_liquidity_asset_error: 10303,\n core_transaction_create_liquidity_invalid_params: 10304,\n core_transaction_add_liquidity_invalid_params: 10305,\n core_transaction_add_liquidity_no_rune_address: 10306,\n core_transaction_add_liquidity_rune_error: 10307,\n core_transaction_add_liquidity_asset_error: 10308,\n core_transaction_withdraw_error: 10309,\n core_transaction_deposit_to_pool_error: 10310,\n core_transaction_deposit_insufficient_funds_error: 10311,\n core_transaction_deposit_gas_error: 10312,\n core_transaction_invalid_sender_address: 10313,\n core_transaction_deposit_server_error: 10313,\n\n /**\n * Wallets\n */\n wallet_ledger_connection_error: 20001,\n\n /**\n * Helpers\n */\n helpers_number_different_decimals: 99101,\n} as const;\n\nexport type Keys = keyof typeof errorMessages;\n\nexport class SwapKitError extends Error {\n constructor(errorKey: Keys, sourceError?: any) {\n console.error(sourceError, { stack: sourceError?.stack, message: sourceError?.message });\n\n super(errorKey, { cause: { code: errorMessages[errorKey], message: errorKey } });\n Object.setPrototypeOf(this, SwapKitError.prototype);\n }\n}\n","import { BigIntArithmetics, formatBigIntToSafeValue } from './bigIntArithmetics.ts';\n\nexport type SwapKitValueType = BigIntArithmetics | string | number;\n\nexport class SwapKitNumber extends BigIntArithmetics {\n eq(value: SwapKitValueType) {\n return this.eqValue(value);\n }\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new SwapKitNumber({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n}\n"],"names":["o","t","I","f","g","E","N","M","O","e","s","r","m","i","n","a","_","U","c","d","D","y","v","G","W","F","L","k","p","w","q","x","j","X","Y","V","P","$","K","J","Q","l","u","A","R","C","B","T","h","H","b","S","z","it","Z","tt","et","getDecimalMethodHex","getContractDecimals","chain","to","result","RequestClient","ChainToRPC","error","BaseDecimal","getETHAssetDecimal","symbol","Chain","address","getAVAXAssetDecimal","getBSCAssetDecimal","getDecimal","gasFeeMultiplier","FeeOption","isGasAsset","getCommonAssetInfo","assetString","getAssetType","assetFromString","symbolArray","synth","ticker","_a","potentialScamRegex","evmAssetHasAddress","EVMChainList","filterAssets","tokens","token","getAsymmetricRuneShare","liquidityUnits","poolUnits","runeDepth","toTCSwapKitNumber","part1","part2","part3","part4","part5","getAsymmetricAssetShare","assetDepth","numerator","getAsymmetricRuneWithdrawAmount","percent","getAsymmetricAssetWithdrawAmount","value","SwapKitNumber","getSymmetricPoolShare","getSymmetricWithdraw","name","getEstimatedPoolShare","runeAmount","assetAmount","runeAddAmount","assetAddAmount","rA","aR","ra","RA","denominator","liquidityUnitsAfterAdd","estimatedLiquidityUnits","newPoolUnits","getLiquiditySlippage","getMemoFor","memoType","options","MemoType","unbondAmount","owner","singleSide","basisPoints","targetAssetString","shortenedSymbol","target","asset","getTHORNameCost","year","validateTHORName","regex","derivationPathToString","network","chainId","account","change","index","supportedChains","validateIdentifier","identifier","uppercasedIdentifier","synthChain","DEFAULT_DECIMAL","toMultiplier","decimal","decimalFromMultiplier","multiplier","formatBigIntToSafeValue","bigIntDecimal","isNegative","valueString","padLength","decimalIndex","decimalString","_BigIntArithmetics","params","__privateAdd","_arithmetics","_comparison","_setValue","_retrievePrecisionDecimal","_toBigInt","__publicField","getStringValue","isComplex","getFloatDecimals","toSafeValue","__privateMethod","setValue_fn","from","args","arithmetics_fn","comparison_fn","type","divisor","baseValue","stringValue","safeValue","toBigInt_fn","significantDigits","int","dec","integer","trimmedDecimal","slicedDecimal","fixedDigits","digits","abbreviations","tier","suffix","scale","currency","currencyPosition","decimalSeparator","thousandSeparator","parsedValue","decimalToUseForConversion","parsedValueString","method","precisionDecimal","retrievePrecisionDecimal_fn","precisionDecimalMultiplier","acc","arg","compareToValue","decimals","padDecimal","integerPart","decimalPart","BigIntArithmetics","numberFormatter","splitValue","param","staticTokensMap","AssetValue","tax","assetInfo","getAssetInfo","ChainToChainId","urlAsset","createAssetValue","isSynthetic","tokenInfo","createSyntheticAssetValue","resolve","reject","tokenPackages","tokenList","rest","getMinAmountByChain","staticToken","synthSymbol","adjustedIdentifier","errorMessages","SwapKitError","errorKey","sourceError"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../api/dist/index.es.js","../src/helpers/asset.ts","../src/helpers/liquidity.ts","../src/helpers/memo.ts","../src/helpers/others.ts","../src/helpers/validators.ts","../src/modules/bigIntArithmetics.ts","../src/modules/assetValue.ts","../src/modules/swapKitError.ts","../src/modules/swapKitNumber.ts"],"sourcesContent":["var o = /* @__PURE__ */ ((t) => (t.INVALID_INPUT_PARAMETERS = \"1000\", t.UNKNOWN_PROVIDERS = \"1001\", t.CANNOT_FIND_INBOUND_ADDRESS = \"1002\", t.NO_INBOUND_ADDRESSES = \"1003\", t.CHAIN_HALTED_OR_UNSUPPORTED = \"1004\", t.MISSING_INPUT_PARAMETER = \"1005\", t.INVALID_TYPE_GENERIC = \"1100\", t.INVALID_NUMBER_STRING = \"1101\", t.INVALID_NUMBER = \"1102\", t.INVALID_BOOLEAN = \"1103\", t.INVALID_OBJECT = \"1104\", t.INVALID_ARRAY = \"1105\", t.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER = \"2000\", t.SELL_BUY_ASSETS_ARE_THE_SAME = \"2001\", t.MISSING_SOURCE_ADDRESS_FOR_SYNTH = \"2002\", t.AFF_ADDRESS_AND_BPS_OR_NEITHER = \"2003\", t.AFF_ADDRESS_TOO_LONG = \"2004\", t.AFF_BPS_INTEGER_MAX_500 = \"2005\", t.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN = \"2006\", t.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN = \"2007\", t.PREFERRED_PROVIDER_NOT_SUPPORTED = \"2008\", t.DESTINATION_ADDRESS_SMART_CONTRACT = \"2009\", t.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER = \"2010\", t.SOURCE_ADDRESS_SMART_CONTRACT = \"2011\", t.INVALID_PROVIDER = \"2100\", t.MISSING_CROSS_CHAIN_PROVIDER = \"2101\", t.MISSING_AVAX_PROVIDER = \"2102\", t.MISSING_BSC_PROVIDER = \"2103\", t.MISSING_ETH_PROVIDER = \"2104\", t.INVALID_PROVIDER_FOR_SWAP_OUT = \"2105\", t.MISSING_ARB_PROVIDER = \"2106\", t.INVALID_CHAIN = \"2200\", t.INVALID_ASSET = \"2201\", t.INVALID_ASSET_IDENTIFIER = \"2202\", t.UNSUPPORTED_CHAIN = \"2204\", t.UNSUPPORTED_ASSET = \"2203\", t.UNSUPPORTED_ASSET_FOR_SWAPOUT = \"2205\", t.INVALID_SOURCE_ADDRESS = \"2300\", t.INVALID_DESTINATION_ADDRESS = \"2301\", t.THORNODE_QUOTE_GENERIC_ERROR = \"3000\", t.NOT_ENOUGH_SYNTH_BALANCE = \"3001\", t.SYNTH_MINTING_CAP_REACHED = \"3002\", t.INVALID_QUOTE_MODE = \"4000\", t.NO_QUOTES = \"4001\", t.SERVICE_UNAVAILABLE_GENERIC = \"5000\", t.MISSING_GAS_DATA_GENERIC = \"5100\", t.MISSING_TOKEN_INFO_GENERIC = \"5200\", t.CANT_FIND_TOKEN_LIST = \"5201\", t.NO_PRICE = \"5202\", t.PRICE_IS_STALE = \"5203\", t.ADDRESS_NOT_WHITELISTED = \"6000\", t.ADDRESS_ALREADY_CLAIMED = \"6001\", t.TEMPORARY_ERROR = \"9999\", t))(o || {});\no.INVALID_INPUT_PARAMETERS + \"\", o.UNKNOWN_PROVIDERS + \"\", o.CANNOT_FIND_INBOUND_ADDRESS + \"\", o.NO_INBOUND_ADDRESSES + \"\", o.CHAIN_HALTED_OR_UNSUPPORTED + \"\", o.MISSING_INPUT_PARAMETER + \"\", o.INVALID_TYPE_GENERIC + \"\", o.INVALID_NUMBER_STRING + \"\", o.INVALID_NUMBER + \"\", o.INVALID_BOOLEAN + \"\", o.INVALID_OBJECT + \"\", o.INVALID_ARRAY + \"\", o.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER + \"\", o.SELL_BUY_ASSETS_ARE_THE_SAME + \"\", o.MISSING_SOURCE_ADDRESS_FOR_SYNTH + \"\", o.AFF_ADDRESS_AND_BPS_OR_NEITHER + \"\", o.AFF_ADDRESS_TOO_LONG + \"\", o.AFF_BPS_INTEGER_MAX_500 + \"\", o.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN + \"\", o.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN + \"\", o.PREFERRED_PROVIDER_NOT_SUPPORTED + \"\", o.SOURCE_ADDRESS_SMART_CONTRACT + \"\", o.DESTINATION_ADDRESS_SMART_CONTRACT + \"\", o.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER + \"\", o.INVALID_PROVIDER + \"\", o.MISSING_CROSS_CHAIN_PROVIDER + \"\", o.MISSING_AVAX_PROVIDER + \"\", o.MISSING_BSC_PROVIDER + \"\", o.MISSING_ETH_PROVIDER + \"\", o.MISSING_ARB_PROVIDER + \"\", o.INVALID_PROVIDER_FOR_SWAP_OUT + \"\", o.INVALID_CHAIN + \"\", o.INVALID_ASSET + \"\", o.UNSUPPORTED_CHAIN + \"\", o.UNSUPPORTED_ASSET + \"\", o.UNSUPPORTED_ASSET_FOR_SWAPOUT + \"\", o.THORNODE_QUOTE_GENERIC_ERROR + \"\", o.INVALID_SOURCE_ADDRESS + \"\", o.INVALID_DESTINATION_ADDRESS + \"\", o.NOT_ENOUGH_SYNTH_BALANCE + \"\", o.SYNTH_MINTING_CAP_REACHED + \"\", o.INVALID_QUOTE_MODE + \"\", o.NO_QUOTES + \"\", o.SERVICE_UNAVAILABLE_GENERIC + \"\", o.MISSING_GAS_DATA_GENERIC + \"\", o.MISSING_TOKEN_INFO_GENERIC + \"\", o.CANT_FIND_TOKEN_LIST + \"\", o.NO_PRICE + \"\", o.PRICE_IS_STALE + \"\", o.ADDRESS_NOT_WHITELISTED + \"\", o.ADDRESS_ALREADY_CLAIMED + \"\";\nvar I = /* @__PURE__ */ ((t) => (t.Arbitrum = \"ARB\", t.Avalanche = \"AVAX\", t.Binance = \"BNB\", t.BinanceSmartChain = \"BSC\", t.Bitcoin = \"BTC\", t.BitcoinCash = \"BCH\", t.Cosmos = \"GAIA\", t.Dogecoin = \"DOGE\", t.Ethereum = \"ETH\", t.Kujira = \"KUJI\", t.Litecoin = \"LTC\", t.Maya = \"MAYA\", t.Optimism = \"OP\", t.Polygon = \"MATIC\", t.THORChain = \"THOR\", t))(I || {}), f = /* @__PURE__ */ ((t) => (t.Arbitrum = \"42161\", t.ArbitrumHex = \"0xa4b1\", t.Avalanche = \"43114\", t.AvalancheHex = \"0xa86a\", t.Binance = \"Binance-Chain-Tigris\", t.BinanceSmartChain = \"56\", t.BinanceSmartChainHex = \"0x38\", t.Bitcoin = \"bitcoin\", t.BitcoinCash = \"bitcoincash\", t.Cosmos = \"cosmoshub-4\", t.Dogecoin = \"dogecoin\", t.Kujira = \"kaiyo-1\", t.Ethereum = \"1\", t.EthereumHex = \"0x1\", t.Litecoin = \"litecoin\", t.Maya = \"mayachain-mainnet-v1\", t.MayaStagenet = \"mayachain-stagenet-v1\", t.Optimism = \"10\", t.OptimismHex = \"0xa\", t.Polygon = \"137\", t.PolygonHex = \"0x89\", t.THORChain = \"thorchain-mainnet-v1\", t.THORChainStagenet = \"thorchain-stagenet-v2\", t))(f || {}), g = /* @__PURE__ */ ((t) => (t.Arbitrum = \"https://arb1.arbitrum.io/rpc\", t.Avalanche = \"https://node-router.thorswap.net/avalanche-c\", t.Binance = \"\", t.BinanceSmartChain = \"https://bsc-dataseed.binance.org\", t.Bitcoin = \"https://node-router.thorswap.net/bitcoin\", t.BitcoinCash = \"https://node-router.thorswap.net/bitcoin-cash\", t.Cosmos = \"https://node-router.thorswap.net/cosmos/rpc\", t.Kujira = \"https://rpc-kujira.synergynodes.com/\", t.Dogecoin = \"https://node-router.thorswap.net/dogecoin\", t.Ethereum = \"https://node-router.thorswap.net/ethereum\", t.Litecoin = \"https://node-router.thorswap.net/litecoin\", t.Maya = \"https://tendermint.mayachain.info\", t.MayaStagenet = \"https://stagenet.tendermint.mayachain.info\", t.Optimism = \"https://mainnet.optimism.io\", t.Polygon = \"https://polygon-rpc.com\", t.THORChain = \"https://rpc.thorswap.net\", t.THORChainStagenet = \"https://stagenet-rpc.ninerealms.com\", t))(g || {}), E = /* @__PURE__ */ ((t) => (t.Cosmos = \"https://node-router.thorswap.net/cosmos/rest\", t.Kujira = \"https://lcd-kujira.synergynodes.com/\", t.MayanodeMainnet = \"https://mayanode.mayachain.info\", t.MayanodeStagenet = \"https://stagenet.mayanode.mayachain.info\", t.ThornodeMainnet = \"https://thornode.thorswap.net\", t.ThornodeStagenet = \"https://stagenet-thornode.ninerealms.com\", t.ThorswapApi = \"https://api.thorswap.net\", t.ThorswapStatic = \"https://static.thorswap.net\", t))(E || {});\nconst N = Object.values(I), M = Object.keys(I), O = N.reduce(\n (t, e) => {\n const s = M.find((r) => I[r] === e);\n return s && (t[e] = s), t;\n },\n {}\n);\nN.reduce(\n (t, e) => (t[e] = f[O[e]], t),\n {}\n);\nN.reduce(\n (t, e) => (t[e] = g[O[e]], t),\n {}\n);\nN.reduce(\n (t, e) => {\n const s = `${O[e]}Hex`;\n return t[e] = f[s], t;\n },\n {}\n);\nclass m extends Error {\n constructor(e, s, r) {\n const i = e.status || e.status === 0 ? e.status : \"\", n = e.statusText || \"\", a = `${i} ${n}`.trim(), _ = a ? `status code ${a}` : \"an unknown error\";\n super(`Request failed with ${_}`), Object.defineProperty(this, \"response\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"request\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"options\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), this.name = \"HTTPError\", this.response = e, this.request = s, this.options = r;\n }\n}\nclass U extends Error {\n constructor(e) {\n super(\"Request timed out\"), Object.defineProperty(this, \"request\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), this.name = \"TimeoutError\", this.request = e;\n }\n}\nconst c = (t) => t !== null && typeof t == \"object\", d = (...t) => {\n for (const e of t)\n if ((!c(e) || Array.isArray(e)) && e !== void 0)\n throw new TypeError(\"The `options` argument must be an object\");\n return D({}, ...t);\n}, y = (t = {}, e = {}) => {\n const s = new globalThis.Headers(t), r = e instanceof globalThis.Headers, i = new globalThis.Headers(e);\n for (const [n, a] of i.entries())\n r && a === \"undefined\" || a === void 0 ? s.delete(n) : s.set(n, a);\n return s;\n}, D = (...t) => {\n let e = {}, s = {};\n for (const r of t)\n if (Array.isArray(r))\n Array.isArray(e) || (e = []), e = [...e, ...r];\n else if (c(r)) {\n for (let [i, n] of Object.entries(r))\n c(n) && i in e && (n = D(e[i], n)), e = { ...e, [i]: n };\n c(r.headers) && (s = y(s, r.headers), e.headers = s);\n }\n return e;\n}, v = (() => {\n let t = !1, e = !1;\n const s = typeof globalThis.ReadableStream == \"function\", r = typeof globalThis.Request == \"function\";\n return s && r && (e = new globalThis.Request(\"https://empty.invalid\", {\n body: new globalThis.ReadableStream(),\n method: \"POST\",\n // @ts-expect-error - Types are outdated.\n get duplex() {\n return t = !0, \"half\";\n }\n }).headers.has(\"Content-Type\")), t && !e;\n})(), G = typeof globalThis.AbortController == \"function\", W = typeof globalThis.ReadableStream == \"function\", F = typeof globalThis.FormData == \"function\", L = [\"get\", \"post\", \"put\", \"patch\", \"head\", \"delete\"], k = {\n json: \"application/json\",\n text: \"text/*\",\n formData: \"multipart/form-data\",\n arrayBuffer: \"*/*\",\n blob: \"*/*\"\n}, p = 2147483647, w = Symbol(\"stop\"), q = {\n json: !0,\n parseJson: !0,\n searchParams: !0,\n prefixUrl: !0,\n retry: !0,\n timeout: !0,\n hooks: !0,\n throwHttpErrors: !0,\n onDownloadProgress: !0,\n fetch: !0\n}, x = {\n method: !0,\n headers: !0,\n body: !0,\n mode: !0,\n credentials: !0,\n cache: !0,\n redirect: !0,\n referrer: !0,\n referrerPolicy: !0,\n integrity: !0,\n keepalive: !0,\n signal: !0,\n window: !0,\n dispatcher: !0,\n duplex: !0\n}, j = (t) => L.includes(t) ? t.toUpperCase() : t, X = [\"get\", \"put\", \"head\", \"delete\", \"options\", \"trace\"], Y = [408, 413, 429, 500, 502, 503, 504], V = [413, 429, 503], P = {\n limit: 2,\n methods: X,\n statusCodes: Y,\n afterStatusCodes: V,\n maxRetryAfter: Number.POSITIVE_INFINITY,\n backoffLimit: Number.POSITIVE_INFINITY,\n delay: (t) => 0.3 * 2 ** (t - 1) * 1e3\n}, $ = (t = {}) => {\n if (typeof t == \"number\")\n return {\n ...P,\n limit: t\n };\n if (t.methods && !Array.isArray(t.methods))\n throw new Error(\"retry.methods must be an array\");\n if (t.statusCodes && !Array.isArray(t.statusCodes))\n throw new Error(\"retry.statusCodes must be an array\");\n return {\n ...P,\n ...t,\n afterStatusCodes: V\n };\n};\nasync function K(t, e, s, r) {\n return new Promise((i, n) => {\n const a = setTimeout(() => {\n s && s.abort(), n(new U(t));\n }, r.timeout);\n r.fetch(t, e).then(i).catch(n).then(() => {\n clearTimeout(a);\n });\n });\n}\nasync function J(t, { signal: e }) {\n return new Promise((s, r) => {\n e && (e.throwIfAborted(), e.addEventListener(\"abort\", i, { once: !0 }));\n function i() {\n clearTimeout(n), r(e.reason);\n }\n const n = setTimeout(() => {\n e == null || e.removeEventListener(\"abort\", i), s();\n }, t);\n });\n}\nconst Q = (t, e) => {\n const s = {};\n for (const r in e)\n !(r in x) && !(r in q) && !(r in t) && (s[r] = e[r]);\n return s;\n};\nclass l {\n static create(e, s) {\n const r = new l(e, s), i = async () => {\n if (typeof r._options.timeout == \"number\" && r._options.timeout > p)\n throw new RangeError(`The \\`timeout\\` option cannot be greater than ${p}`);\n await Promise.resolve();\n let _ = await r._fetch();\n for (const u of r._options.hooks.afterResponse) {\n const A = await u(r.request, r._options, r._decorateResponse(_.clone()));\n A instanceof globalThis.Response && (_ = A);\n }\n if (r._decorateResponse(_), !_.ok && r._options.throwHttpErrors) {\n let u = new m(_, r.request, r._options);\n for (const A of r._options.hooks.beforeError)\n u = await A(u);\n throw u;\n }\n if (r._options.onDownloadProgress) {\n if (typeof r._options.onDownloadProgress != \"function\")\n throw new TypeError(\"The `onDownloadProgress` option must be a function\");\n if (!W)\n throw new Error(\"Streams are not supported in your environment. `ReadableStream` is missing.\");\n return r._stream(_.clone(), r._options.onDownloadProgress);\n }\n return _;\n }, a = r._options.retry.methods.includes(r.request.method.toLowerCase()) ? r._retry(i) : i();\n for (const [_, u] of Object.entries(k))\n a[_] = async () => {\n r.request.headers.set(\"accept\", r.request.headers.get(\"accept\") || u);\n const R = (await a).clone();\n if (_ === \"json\") {\n if (R.status === 204 || (await R.clone().arrayBuffer()).byteLength === 0)\n return \"\";\n if (s.parseJson)\n return s.parseJson(await R.text());\n }\n return R[_]();\n };\n return a;\n }\n // eslint-disable-next-line complexity\n constructor(e, s = {}) {\n if (Object.defineProperty(this, \"request\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"abortController\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"_retryCount\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: 0\n }), Object.defineProperty(this, \"_input\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), Object.defineProperty(this, \"_options\", {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: void 0\n }), this._input = e, this._options = {\n // TODO: credentials can be removed when the spec change is implemented in all browsers. Context: https://www.chromestatus.com/feature/4539473312350208\n credentials: this._input.credentials || \"same-origin\",\n ...s,\n headers: y(this._input.headers, s.headers),\n hooks: D({\n beforeRequest: [],\n beforeRetry: [],\n beforeError: [],\n afterResponse: []\n }, s.hooks),\n method: j(s.method ?? this._input.method),\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n prefixUrl: String(s.prefixUrl || \"\"),\n retry: $(s.retry),\n throwHttpErrors: s.throwHttpErrors !== !1,\n timeout: s.timeout ?? 1e4,\n fetch: s.fetch ?? globalThis.fetch.bind(globalThis)\n }, typeof this._input != \"string\" && !(this._input instanceof URL || this._input instanceof globalThis.Request))\n throw new TypeError(\"`input` must be a string, URL, or Request\");\n if (this._options.prefixUrl && typeof this._input == \"string\") {\n if (this._input.startsWith(\"/\"))\n throw new Error(\"`input` must not begin with a slash when using `prefixUrl`\");\n this._options.prefixUrl.endsWith(\"/\") || (this._options.prefixUrl += \"/\"), this._input = this._options.prefixUrl + this._input;\n }\n if (G) {\n if (this.abortController = new globalThis.AbortController(), this._options.signal) {\n const r = this._options.signal;\n this._options.signal.addEventListener(\"abort\", () => {\n this.abortController.abort(r.reason);\n });\n }\n this._options.signal = this.abortController.signal;\n }\n if (v && (this._options.duplex = \"half\"), this.request = new globalThis.Request(this._input, this._options), this._options.searchParams) {\n const i = \"?\" + (typeof this._options.searchParams == \"string\" ? this._options.searchParams.replace(/^\\?/, \"\") : new URLSearchParams(this._options.searchParams).toString()), n = this.request.url.replace(/(?:\\?.*?)?(?=#|$)/, i);\n (F && this._options.body instanceof globalThis.FormData || this._options.body instanceof URLSearchParams) && !(this._options.headers && this._options.headers[\"content-type\"]) && this.request.headers.delete(\"content-type\"), this.request = new globalThis.Request(new globalThis.Request(n, { ...this.request }), this._options);\n }\n this._options.json !== void 0 && (this._options.body = JSON.stringify(this._options.json), this.request.headers.set(\"content-type\", this._options.headers.get(\"content-type\") ?? \"application/json\"), this.request = new globalThis.Request(this.request, { body: this._options.body }));\n }\n _calculateRetryDelay(e) {\n if (this._retryCount++, this._retryCount <= this._options.retry.limit && !(e instanceof U)) {\n if (e instanceof m) {\n if (!this._options.retry.statusCodes.includes(e.response.status))\n return 0;\n const r = e.response.headers.get(\"Retry-After\");\n if (r && this._options.retry.afterStatusCodes.includes(e.response.status)) {\n let i = Number(r);\n return Number.isNaN(i) ? i = Date.parse(r) - Date.now() : i *= 1e3, this._options.retry.maxRetryAfter !== void 0 && i > this._options.retry.maxRetryAfter ? 0 : i;\n }\n if (e.response.status === 413)\n return 0;\n }\n const s = this._options.retry.delay(this._retryCount);\n return Math.min(this._options.retry.backoffLimit, s);\n }\n return 0;\n }\n _decorateResponse(e) {\n return this._options.parseJson && (e.json = async () => this._options.parseJson(await e.text())), e;\n }\n async _retry(e) {\n try {\n return await e();\n } catch (s) {\n const r = Math.min(this._calculateRetryDelay(s), p);\n if (r !== 0 && this._retryCount > 0) {\n await J(r, { signal: this._options.signal });\n for (const i of this._options.hooks.beforeRetry)\n if (await i({\n request: this.request,\n options: this._options,\n error: s,\n retryCount: this._retryCount\n }) === w)\n return;\n return this._retry(e);\n }\n throw s;\n }\n }\n async _fetch() {\n for (const s of this._options.hooks.beforeRequest) {\n const r = await s(this.request, this._options);\n if (r instanceof Request) {\n this.request = r;\n break;\n }\n if (r instanceof Response)\n return r;\n }\n const e = Q(this.request, this._options);\n return this._options.timeout === !1 ? this._options.fetch(this.request.clone(), e) : K(this.request.clone(), e, this.abortController, this._options);\n }\n /* istanbul ignore next */\n _stream(e, s) {\n const r = Number(e.headers.get(\"content-length\")) || 0;\n let i = 0;\n return e.status === 204 ? (s && s({ percent: 1, totalBytes: r, transferredBytes: i }, new Uint8Array()), new globalThis.Response(null, {\n status: e.status,\n statusText: e.statusText,\n headers: e.headers\n })) : new globalThis.Response(new globalThis.ReadableStream({\n async start(n) {\n const a = e.body.getReader();\n s && s({ percent: 0, transferredBytes: 0, totalBytes: r }, new Uint8Array());\n async function _() {\n const { done: u, value: A } = await a.read();\n if (u) {\n n.close();\n return;\n }\n if (s) {\n i += A.byteLength;\n const R = r === 0 ? 0 : i / r;\n s({ percent: R, transferredBytes: i, totalBytes: r }, A);\n }\n n.enqueue(A), await _();\n }\n await _();\n }\n }), {\n status: e.status,\n statusText: e.statusText,\n headers: e.headers\n });\n }\n}\n/*! MIT License © Sindre Sorhus */\nconst C = (t) => {\n const e = (s, r) => l.create(s, d(t, r));\n for (const s of L)\n e[s] = (r, i) => l.create(r, d(t, i, { method: s }));\n return e.create = (s) => C(d(s)), e.extend = (s) => C(d(t, s)), e.stop = w, e;\n}, B = C();\nlet T;\nconst h = {\n CachedPrices: `${E.ThorswapApi}/tokenlist/cached-price`,\n GasRates: `${E.ThorswapApi}/resource-worker/gasPrice/getAll`,\n Quote: `${E.ThorswapApi}/aggregator/tokens/quote`,\n Txn: `${E.ThorswapApi}/apiusage/v2/txn`,\n TokenlistProviders: `${E.ThorswapApi}/tokenlist/providers`,\n TokenList: `${E.ThorswapStatic}/token-list`,\n Thorname: `${E.ThorswapApi}/thorname`\n}, H = typeof window < \"u\" ? {} : { referrer: \"https://sk.thorswap.net\", referer: \"https://sk.thorswap.net\" }, b = () => T || (T = B.create({ headers: H }), T), ot = ({ apiKey: t, ...e }) => {\n T = B.create({\n ...e,\n headers: { ...H, ...e.headers, \"x-api-key\": t }\n });\n}, S = {\n get: (t, e) => b().get(t, e).json(),\n post: (t, e) => b().post(t, e).json()\n}, z = ({ tokens: t, ...e }) => {\n const s = new URLSearchParams();\n return t.filter((r, i, n) => n.findIndex((a) => a === r) === i).forEach((r) => s.append(\"tokens\", JSON.stringify(r))), e.metadata && s.append(\"metadata\", \"true\"), e.lookup && s.append(\"lookup\", \"true\"), e.sparkline && s.append(\"sparkline\", \"true\"), S.post(h.CachedPrices, {\n body: s.toString(),\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" }\n });\n}, it = {\n getCachedPrices: z,\n getQuote: (t) => S.get(h.Quote, { searchParams: t }),\n getGasRates: () => S.get(h.GasRates),\n getTxnDetails: (t) => S.get(h.Txn, { searchParams: t }),\n getTokenlistProviders: () => S.get(h.TokenlistProviders),\n getTokenList: (t) => S.get(`${h.TokenList}/${t}.json`),\n getThornameAddresses: (t) => S.get(`${h.Thorname}/${t}`),\n getThornameRegisteredChains: (t) => S.get(`${h.Thorname}/chains/${t}`),\n getThornameRlookup: (t, e) => S.get(`${h.Thorname}/rlookup`, { searchParams: { address: t, chain: e } })\n};\nvar Z = /* @__PURE__ */ ((t) => (t.SWAP_TC_TO_TC = \"SWAP:TC-TC\", t.SWAP_ETH_TO_TC = \"SWAP:ERC20-TC\", t.SWAP_TC_TO_ETH = \"SWAP:TC-ERC20\", t.SWAP_ETH_TO_ETH = \"SWAP:ERC20-ERC20\", t.SWAP_AVAX_TO_TC = \"SWAP:AVAX-TC\", t.SWAP_TC_TO_AVAX = \"SWAP:TC-AVAX\", t.SWAP_AVAX_TO_AVAX = \"SWAP:AVAX-AVAX\", t.SWAP_ETH_TO_AVAX = \"SWAP:ETH-AVAX\", t.SWAP_AVAX_TO_ETH = \"SWAP:AVAX-ETH\", t.SWAP_TC_TO_GAIA = \"SWAP:TC-GAIA\", t.SWAP_GAIA_TO_TC = \"SWAP:GAIA-TC\", t.SWAP_TC_TO_BNB = \"SWAP:TC-BNB\", t.SWAP_BNB_TO_TC = \"SWAP:BNB-TC\", t.SWAP_TC_TO_BTC = \"SWAP:TC-BTC\", t.SWAP_BTC_TO_TC = \"SWAP:BTC-TC\", t.SWAP_TC_TO_BCH = \"SWAP:TC-BCH\", t.SWAP_BCH_TO_TC = \"SWAP:BCH-TC\", t.SWAP_TC_TO_LTC = \"SWAP:TC-LTC\", t.SWAP_LTC_TO_TC = \"SWAP:LTC-TC\", t.SWAP_TC_TO_DOGE = \"SWAP:TC-DOGE\", t.SWAP_DOGE_TO_TC = \"SWAP:DOGE-TC\", t.TC_STATUS = \"TC:STATUS\", t.TC_TRANSFER = \"TC:TRANSFER\", t.TC_DEPOSIT = \"TC:DEPOSIT\", t.TC_SEND = \"TC:SEND\", t.TC_SWITCH = \"TC:SWITCH\", t.TC_LP_ADD = \"TC:ADDLIQUIDITY\", t.TC_LP_WITHDRAW = \"TC:WITHDRAW\", t.TC_TNS_CREATE = \"TC:TNS-CREATE\", t.TC_TNS_EXTEND = \"TC:TNS-EXTEND\", t.TC_TNS_UPDATE = \"TC:TNS-UPDATE\", t.TC_SAVINGS_ADD = \"TC:ADDSAVINGS\", t.TC_SAVINGS_WITHDRAW = \"TC:WITHDRAWSAVINGS\", t.TC_LENDING_OPEN = \"TC:LENDINGOPEN\", t.TC_LENDING_CLOSE = \"TC:LENDINGCLOSE\", t.ETH_APPROVAL = \"ETH:APPROVAL\", t.ETH_STATUS = \"ETH:STATUS\", t.ETH_TRANSFER_TO_TC = \"ETH:TRANSFER:IN\", t.ETH_TRANSFER_FROM_TC = \"ETH:TRANSFER:OUT\", t.AVAX_APPROVAL = \"AVAX:APPROVAL\", t.AVAX_STATUS = \"AVAX:STATUS\", t.AVAX_TRANSFER_TO_TC = \"AVAX:TRANSFER:IN\", t.AVAX_TRANSFER_FROM_TC = \"AVAX:TRANSFER:OUT\", t.BSC_APPROVAL = \"BSC:APPROVAL\", t.BSC_STATUS = \"BSC:STATUS\", t.BSC_TRANSFER_TO_TC = \"BSC:TRANSFER:IN\", t.BSC_TRANSFER_FROM_TC = \"BSC:TRANSFER:OUT\", t.APPROVAL = \"APPROVAL\", t.STATUS = \"STATUS\", t.TRANSFER_TO_TC = \"TRANSFER:IN\", t.TRANSFER_FROM_TC = \"TRANSFER:OUT\", t.UNSUPPORTED = \"UNSUPPORTED\", t.TC_LENDING = \"TC:LENDING\", t))(Z || {}), tt = /* @__PURE__ */ ((t) => (t.PENDING = \"pending\", t.SUCCESS = \"success\", t.CANCELLED = \"cancelled\", t.REFUNDED = \"refunded\", t.REPLACED = \"replaced\", t.ERROR = \"error\", t.UNKNOWN = \"unknown\", t.NOT_STARTED = \"not_started\", t.NOT_FOUND = \"not_found\", t.RETRIES_EXCEEDED = \"retries_exceeded\", t.STREAMING = \"streaming\", t))(tt || {}), et = /* @__PURE__ */ ((t) => (t[t.NOT_STARTED = 0] = \"NOT_STARTED\", t[t.SUCCESS = 1] = \"SUCCESS\", t[t.REFUNDED = 2] = \"REFUNDED\", t))(et || {});\nexport {\n h as ApiEndpoints,\n S as RequestClient,\n et as StreamingSwapProgressStatus,\n it as SwapKitApi,\n Z as TransactionType,\n tt as TxStatus,\n H as defaultRequestHeaders,\n ot as setRequestClientConfig\n};\n//# sourceMappingURL=index.es.js.map\n","import { RequestClient } from '@swapkit/api';\nimport type { EVMChain } from '@swapkit/types';\nimport { BaseDecimal, Chain, ChainToRPC, EVMChainList, FeeOption } from '@swapkit/types';\n\nconst getDecimalMethodHex = '0x313ce567';\n\nexport type CommonAssetString =\n | `${Chain.Maya}.MAYA`\n | `${Chain.Ethereum}.THOR`\n | `${Chain.Ethereum}.vTHOR`\n | `${Chain.Kujira}.USK`\n | Chain;\n\nconst getContractDecimals = async ({ chain, to }: { chain: EVMChain; to: string }) => {\n try {\n const { result } = await RequestClient.post<{ result: string }>(ChainToRPC[chain], {\n headers: {\n accept: '*/*',\n 'content-type': 'application/json',\n 'cache-control': 'no-cache',\n },\n body: JSON.stringify({\n id: 44,\n jsonrpc: '2.0',\n method: 'eth_call',\n params: [{ to: to.toLowerCase(), data: getDecimalMethodHex }, 'latest'],\n }),\n });\n\n return parseInt(BigInt(result).toString());\n } catch (error) {\n console.error(error);\n return BaseDecimal[chain];\n }\n};\n\nconst getETHAssetDecimal = async (symbol: string) => {\n if (symbol === Chain.Ethereum) return BaseDecimal.ETH;\n const [, address] = symbol.split('-');\n\n return address?.startsWith('0x')\n ? getContractDecimals({ chain: Chain.Ethereum, to: address })\n : BaseDecimal.ETH;\n};\n\nconst getAVAXAssetDecimal = async (symbol: string) => {\n const [, address] = symbol.split('-');\n\n return address?.startsWith('0x')\n ? getContractDecimals({ chain: Chain.Avalanche, to: address.toLowerCase() })\n : BaseDecimal.AVAX;\n};\n\nconst getBSCAssetDecimal = async (symbol: string) => {\n if (symbol === Chain.BinanceSmartChain) return BaseDecimal.BSC;\n\n return BaseDecimal.BSC;\n};\n\nexport const getDecimal = async ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Ethereum:\n return getETHAssetDecimal(symbol);\n case Chain.Avalanche:\n return getAVAXAssetDecimal(symbol);\n case Chain.BinanceSmartChain:\n return getBSCAssetDecimal(symbol);\n default:\n return BaseDecimal[chain];\n }\n};\n\nexport const gasFeeMultiplier: Record<FeeOption, number> = {\n [FeeOption.Average]: 1.2,\n [FeeOption.Fast]: 1.5,\n [FeeOption.Fastest]: 2,\n};\n\nexport const isGasAsset = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Litecoin:\n case Chain.Dogecoin:\n case Chain.Binance:\n case Chain.Ethereum:\n case Chain.Avalanche:\n return symbol === chain;\n\n case Chain.Arbitrum:\n case Chain.Optimism:\n return 'ETH' === symbol;\n\n case Chain.Maya:\n return symbol === 'CACAO';\n\n case Chain.Kujira:\n return symbol === 'KUJI';\n\n case Chain.Cosmos:\n return symbol === 'ATOM';\n case Chain.Polygon:\n return symbol === 'MATIC';\n case Chain.BinanceSmartChain:\n return symbol === 'BNB';\n case Chain.THORChain:\n return symbol === 'RUNE';\n }\n};\n\nexport const getCommonAssetInfo = (\n assetString: CommonAssetString,\n): { identifier: string; decimal: number } => {\n switch (assetString) {\n case `${Chain.Ethereum}.THOR`:\n return { identifier: 'ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044', decimal: 18 };\n case `${Chain.Ethereum}.vTHOR`:\n return { identifier: 'ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d', decimal: 18 };\n\n case Chain.Cosmos:\n return { identifier: 'GAIA.ATOM', decimal: BaseDecimal[assetString] };\n case Chain.THORChain:\n return { identifier: 'THOR.RUNE', decimal: BaseDecimal[assetString] };\n case Chain.BinanceSmartChain:\n return { identifier: 'BSC.BNB', decimal: BaseDecimal[assetString] };\n case Chain.Maya:\n return { identifier: 'MAYA.CACAO', decimal: BaseDecimal.MAYA };\n case `${Chain.Maya}.MAYA`:\n return { identifier: 'MAYA.MAYA', decimal: 4 };\n\n case `${Chain.Kujira}.USK`:\n return { identifier: `${Chain.Kujira}.USK`, decimal: 6 };\n\n case Chain.Kujira:\n case Chain.Arbitrum:\n case Chain.Optimism:\n case Chain.BitcoinCash:\n case Chain.Litecoin:\n case Chain.Dogecoin:\n case Chain.Binance:\n case Chain.Avalanche:\n case Chain.Polygon:\n case Chain.Bitcoin:\n case Chain.Ethereum:\n return { identifier: `${assetString}.${assetString}`, decimal: BaseDecimal[assetString] };\n }\n};\n\nexport const getAssetType = ({ chain, symbol }: { chain: Chain; symbol: string }) => {\n if (symbol.includes('/')) return 'Synth';\n\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dogecoin:\n case Chain.Litecoin:\n case Chain.Maya:\n case Chain.THORChain:\n return 'Native';\n\n case Chain.Cosmos:\n return symbol === 'ATOM' ? 'Native' : Chain.Cosmos;\n case Chain.Kujira:\n return symbol === Chain.Kujira ? 'Native' : Chain.Kujira;\n case Chain.Binance:\n return symbol === Chain.Binance ? 'Native' : 'BEP2';\n case Chain.BinanceSmartChain:\n return symbol === Chain.Binance ? 'Native' : 'BEP20';\n case Chain.Ethereum:\n return symbol === Chain.Ethereum ? 'Native' : 'ERC20';\n case Chain.Avalanche:\n return symbol === Chain.Avalanche ? 'Native' : Chain.Avalanche;\n case Chain.Polygon:\n return symbol === Chain.Polygon ? 'Native' : 'POLYGON';\n\n case Chain.Arbitrum:\n return [Chain.Ethereum, Chain.Arbitrum].includes(symbol as Chain) ? 'Native' : 'ARBITRUM';\n case Chain.Optimism:\n return [Chain.Ethereum, Chain.Optimism].includes(symbol as Chain) ? 'Native' : 'OPTIMISM';\n }\n};\n\nexport const assetFromString = (assetString: string) => {\n const [chain, ...symbolArray] = assetString.split('.') as [Chain, ...(string | undefined)[]];\n const synth = assetString.includes('/');\n const symbol = symbolArray.join('.');\n const ticker = symbol?.split('-')?.[0];\n\n return { chain, symbol, ticker, synth };\n};\n\nconst potentialScamRegex = new RegExp(\n /(.)\\1{6}|\\.ORG|\\.NET|\\.FINANCE|\\.COM|WWW|HTTP|\\\\\\\\|\\/\\/|[\\s$%:[\\]]/,\n 'gmi',\n);\n\nconst evmAssetHasAddress = (assetString: string) => {\n const [chain, symbol] = assetString.split('.') as [EVMChain, string];\n if (!EVMChainList.includes(chain as EVMChain)) return true;\n const [, address] = symbol.split('-') as [string, string?];\n\n return isGasAsset({ chain: chain as Chain, symbol }) || !!address;\n};\n\nexport const filterAssets = (\n tokens: {\n value: string;\n decimal: number;\n chain: Chain;\n symbol: string;\n }[],\n) =>\n tokens.filter((token) => {\n const assetString = `${token.chain}.${token.symbol}`;\n\n return (\n !potentialScamRegex.test(assetString) &&\n evmAssetHasAddress(assetString) &&\n token.value !== '0'\n );\n });\n","import { BaseDecimal } from '@swapkit/types';\n\nimport { SwapKitNumber } from '../index.ts';\n\ntype ShareParams<T = {}> = T & {\n liquidityUnits: string;\n poolUnits: string;\n};\n\ntype PoolParams<T = {}> = T & {\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n};\n\n/**\n * Ref: https://gitlab.com/thorchain/thornode/-/issues/657\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * s = stakeUnits for member (after factoring in withdrawBasisPoints)\n * T = totalPoolUnits for pool\n * A = assetDepth to be withdrawn\n *\n * Formula:\n * share = (s * A * (2 * T^2 - 2 * T * s + s^2))/T^3\n * (part1 * (part2 - part3 + part4)) / part5\n */\nexport function getAsymmetricRuneShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n}: ShareParams<{ runeDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(runeDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const part5 = T.mul(T).mul(T);\n\n const numerator = part1.mul(part2.sub(part3).add(part4));\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricAssetShare({\n liquidityUnits,\n poolUnits,\n assetDepth,\n}: ShareParams<{ assetDepth: string }>) {\n const s = toTCSwapKitNumber(liquidityUnits);\n const T = toTCSwapKitNumber(poolUnits);\n const A = toTCSwapKitNumber(assetDepth);\n\n const part1 = s.mul(A);\n const part2 = T.mul(T).mul(2);\n const part3 = T.mul(s).mul(2);\n const part4 = s.mul(s);\n const numerator = part1.mul(part2.sub(part3).add(part4));\n const part5 = T.mul(T).mul(T);\n\n return numerator.div(part5);\n}\n\nexport function getAsymmetricRuneWithdrawAmount({\n percent,\n runeDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; runeDepth: string }>) {\n return getAsymmetricRuneShare({ runeDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nexport function getAsymmetricAssetWithdrawAmount({\n percent,\n assetDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; assetDepth: string }>) {\n return getAsymmetricAssetShare({ assetDepth, liquidityUnits, poolUnits }).mul(percent);\n}\n\nfunction toTCSwapKitNumber(value: string) {\n return SwapKitNumber.fromBigInt(BigInt(value), BaseDecimal.THOR);\n}\n\nexport function getSymmetricPoolShare({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n}>) {\n return {\n assetAmount: toTCSwapKitNumber(assetDepth).mul(liquidityUnits).div(poolUnits),\n runeAmount: toTCSwapKitNumber(runeDepth).mul(liquidityUnits).div(poolUnits),\n };\n}\n\nexport function getSymmetricWithdraw({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n percent,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n percent: number;\n}>) {\n return Object.fromEntries(\n Object.entries(getSymmetricPoolShare({ liquidityUnits, poolUnits, runeDepth, assetDepth })).map(\n ([name, value]) => [name, value.mul(percent)],\n ),\n );\n}\n\nexport function getEstimatedPoolShare({\n runeDepth,\n poolUnits,\n assetDepth,\n liquidityUnits,\n runeAmount,\n assetAmount,\n}: ShareParams<{\n runeAmount: string;\n assetAmount: string;\n runeDepth: string;\n assetDepth: string;\n}>) {\n const R = new SwapKitNumber({ value: runeDepth, decimal: 8 });\n const A = new SwapKitNumber({ value: assetDepth, decimal: 8 });\n const P = new SwapKitNumber({ value: poolUnits, decimal: 8 });\n const runeAddAmount = new SwapKitNumber({ value: runeAmount, decimal: 8 });\n const assetAddAmount = new SwapKitNumber({ value: assetAmount, decimal: 8 });\n\n // liquidityUnits = P * (r*A + a*R + 2*r*a) / (r*A + a*R + 2*R*A)\n const rA = runeAddAmount.mul(A);\n const aR = assetAddAmount.mul(R);\n const ra = runeAddAmount.mul(assetAddAmount);\n const RA = R.mul(A);\n const numerator = P.mul(rA.add(aR.add(ra.mul(2))));\n const denominator = rA.add(aR.add(RA.mul(2)));\n const liquidityUnitsAfterAdd = numerator.div(denominator);\n const estimatedLiquidityUnits = toTCSwapKitNumber(liquidityUnits).add(liquidityUnitsAfterAdd);\n\n if (liquidityUnitsAfterAdd.getBaseValue('number') === 0) {\n return estimatedLiquidityUnits.div(P).getBaseValue('number');\n }\n\n // get pool units after add\n const newPoolUnits = P.add(estimatedLiquidityUnits);\n\n return estimatedLiquidityUnits.div(newPoolUnits).getBaseValue('number');\n}\n\nexport function getLiquiditySlippage({\n runeAmount,\n assetAmount,\n runeDepth,\n assetDepth,\n}: PoolParams) {\n if (runeAmount === '0' || assetAmount === '0' || runeDepth === '0' || assetDepth === '0')\n return 0;\n // formula: (t * R - T * r)/ (T*r + R*T)\n const R = toTCSwapKitNumber(runeDepth);\n const T = toTCSwapKitNumber(assetDepth);\n const assetAddAmount = toTCSwapKitNumber(assetAmount);\n const runeAddAmount = toTCSwapKitNumber(runeAmount);\n\n const numerator = assetAddAmount.mul(R).sub(T.mul(runeAddAmount));\n const denominator = T.mul(runeAddAmount).add(R.mul(T));\n\n // set absolute value of percent, no negative allowed\n return Math.abs(numerator.div(denominator).getBaseValue('number'));\n}\n","import { Chain, MemoType } from '@swapkit/types';\n\nexport type ThornameRegisterParam = {\n name: string;\n chain: string;\n address: string;\n owner?: string;\n preferredAsset?: string;\n expiryBlock?: string;\n};\n\ntype WithAddress<T = {}> = T & { address: string };\ntype WithChain<T = {}> = T & { chain: Chain };\n\nexport type MemoOptions<T extends MemoType> = {\n [MemoType.BOND]: WithAddress;\n [MemoType.LEAVE]: WithAddress;\n [MemoType.CLOSE_LOAN]: WithAddress<{ asset: string; minAmount?: string }>;\n [MemoType.OPEN_LOAN]: WithAddress<{ asset: string; minAmount?: string }>;\n [MemoType.UNBOND]: WithAddress<{ unbondAmount: number }>;\n [MemoType.DEPOSIT]: WithChain<{ symbol: string; address?: string; singleSide?: boolean }>;\n [MemoType.WITHDRAW]: WithChain<{\n ticker: string;\n symbol: string;\n basisPoints: number;\n targetAssetString?: string;\n singleSide?: boolean;\n }>;\n [MemoType.THORNAME_REGISTER]: Omit<ThornameRegisterParam, 'preferredAsset' | 'expiryBlock'>;\n}[T];\n\nexport const getMemoFor = <T extends MemoType>(memoType: T, options: MemoOptions<T>) => {\n switch (memoType) {\n case MemoType.LEAVE:\n case MemoType.BOND: {\n const { address } = options as MemoOptions<MemoType.BOND>;\n return `${memoType}:${address}`;\n }\n\n case MemoType.UNBOND: {\n const { address, unbondAmount } = options as MemoOptions<MemoType.UNBOND>;\n return `${memoType}:${address}:${unbondAmount}`;\n }\n\n case MemoType.THORNAME_REGISTER: {\n const { name, chain, address, owner } = options as MemoOptions<MemoType.THORNAME_REGISTER>;\n return `${memoType}:${name}:${chain}:${address}${owner ? `:${owner}` : ''}`;\n }\n\n case MemoType.DEPOSIT: {\n const { chain, symbol, address, singleSide } = options as MemoOptions<MemoType.DEPOSIT>;\n\n const getPoolIdentifier = (chain: Chain, symbol: string): string => {\n switch (chain) {\n case Chain.Litecoin:\n return 'l';\n case Chain.Dogecoin:\n return 'd';\n case Chain.BitcoinCash:\n return 'c';\n default:\n return `${chain}.${symbol}`;\n }\n };\n\n return singleSide\n ? `${memoType}:${chain}/${symbol}::t:0`\n : `${memoType}:${getPoolIdentifier(chain, symbol)}:${address || ''}:t:0`;\n }\n\n case MemoType.WITHDRAW: {\n const { chain, ticker, symbol, basisPoints, targetAssetString, singleSide } =\n options as MemoOptions<MemoType.WITHDRAW>;\n\n const shortenedSymbol =\n chain === 'ETH' && ticker !== 'ETH' ? `${ticker}-${symbol.slice(-3)}` : symbol;\n const target = !singleSide && targetAssetString ? `:${targetAssetString}` : '';\n const assetDivider = singleSide ? '/' : '.';\n\n return `${memoType}:${chain}${assetDivider}${shortenedSymbol}:${basisPoints}${target}`;\n }\n\n case MemoType.OPEN_LOAN:\n case MemoType.CLOSE_LOAN: {\n const { asset, address } = options as MemoOptions<MemoType.OPEN_LOAN>;\n\n return `${memoType}:${asset}:${address}`; //:${minAmount ? `${minAmount}` : ''}:t:0`;\n }\n\n default:\n return '';\n }\n};\n","// 10 rune for register, 1 rune per year\n// MINIMUM_REGISTRATION_FEE = 11\nexport function getTHORNameCost(year: number) {\n if (year < 0) throw new Error('Invalid number of year');\n return 10 + year;\n}\n\nexport function validateTHORName(name: string) {\n if (name.length > 30) return false;\n\n const regex = /^[a-zA-Z0-9+_-]+$/g;\n\n return !!name.match(regex);\n}\n\nexport function derivationPathToString([network, chainId, account, change, index]: number[]) {\n const shortPath = typeof index !== 'number';\n\n return `${network}'/${chainId}'/${account}'/${change}${shortPath ? '' : `/${index}`}`;\n}\n","import { Chain } from '@swapkit/types';\n\n// Backward compatibility\nconst supportedChains = [...Object.values(Chain), 'TERRA'];\n\nexport function validateIdentifier(identifier: string = '') {\n const uppercasedIdentifier = identifier.toUpperCase();\n\n const [chain] = uppercasedIdentifier.split('.') as [Chain, string];\n if (supportedChains.includes(chain)) return true;\n\n const [synthChain] = uppercasedIdentifier.split('/') as [Chain, string];\n if (supportedChains.includes(synthChain)) return true;\n\n throw new Error(\n `Invalid identifier: ${identifier}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`,\n );\n}\n","import { BaseDecimal } from '@swapkit/types';\n\nimport type { SwapKitNumber } from './swapKitNumber.ts';\n\ntype NumberPrimitivesType = {\n bigint: bigint;\n number: number;\n string: string;\n};\nexport type NumberPrimitives = bigint | number | string;\ntype InitialisationValueType = NumberPrimitives | BigIntArithmetics | SwapKitNumber;\n\ntype SKBigIntParams = InitialisationValueType | { decimal?: number; value: number | string };\ntype AllowedNumberTypes = 'bigint' | 'number' | 'string';\n\nconst DEFAULT_DECIMAL = 8;\nconst toMultiplier = (decimal: number) => 10n ** BigInt(decimal);\nconst decimalFromMultiplier = (multiplier: bigint) => Math.log10(parseFloat(multiplier.toString()));\n\nexport function formatBigIntToSafeValue({\n value,\n bigIntDecimal = DEFAULT_DECIMAL,\n decimal = DEFAULT_DECIMAL,\n}: {\n value: bigint;\n bigIntDecimal?: number;\n decimal?: number;\n}) {\n if (decimal === 0) return value.toString();\n const isNegative = value < 0n;\n let valueString = value.toString().substring(isNegative ? 1 : 0);\n\n const padLength = decimal - (valueString.length - 1);\n\n if (padLength > 0) {\n valueString = '0'.repeat(padLength) + valueString;\n }\n\n const decimalIndex = valueString.length - decimal;\n let decimalString = valueString.slice(-decimal);\n\n // Check if we need to round up\n if (parseInt(decimalString[bigIntDecimal]) >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n parseInt(decimalString[bigIntDecimal - 1]) + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? '-' : ''}${valueString.slice(0, decimalIndex)}.${decimalString}`.replace(\n /\\.?0*$/,\n '',\n );\n}\n\nexport class BigIntArithmetics {\n decimalMultiplier: bigint = 10n ** 8n;\n bigIntValue: bigint = 0n;\n decimal?: number;\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new BigIntArithmetics({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n\n static shiftDecimals({\n value,\n from,\n to,\n }: {\n value: InstanceType<typeof SwapKitNumber>;\n from: number;\n to: number;\n }) {\n return this.fromBigInt(\n (value.getBaseValue('bigint') * toMultiplier(to)) / toMultiplier(from),\n to,\n );\n }\n\n constructor(params: SKBigIntParams) {\n const value = getStringValue(params);\n const isComplex = typeof params === 'object';\n this.decimal = isComplex ? params.decimal : undefined;\n\n // use the multiplier to keep track of decimal point - defaults to 8 if lower than 8\n this.decimalMultiplier =\n isComplex && 'decimalMultiplier' in params\n ? params.decimalMultiplier\n : toMultiplier(Math.max(getFloatDecimals(toSafeValue(value)), this.decimal || 0));\n this.#setValue(value);\n }\n\n set(value: SKBigIntParams): this {\n // @ts-expect-error False positive\n return new this.constructor({ decimal: this.decimal, value, identifier: this.toString() });\n }\n add(...args: InitialisationValueType[]) {\n return this.#arithmetics('add', ...args);\n }\n sub(...args: InitialisationValueType[]) {\n return this.#arithmetics('sub', ...args);\n }\n mul(...args: InitialisationValueType[]) {\n return this.#arithmetics('mul', ...args);\n }\n div(...args: InitialisationValueType[]) {\n return this.#arithmetics('div', ...args);\n }\n gt(value: InitialisationValueType) {\n return this.#comparison('gt', value);\n }\n gte(value: InitialisationValueType) {\n return this.#comparison('gte', value);\n }\n lt(value: InitialisationValueType) {\n return this.#comparison('lt', value);\n }\n lte(value: InitialisationValueType) {\n return this.#comparison('lte', value);\n }\n eqValue(value: InitialisationValueType) {\n return this.#comparison('eqValue', value);\n }\n\n // @ts-expect-error False positive\n getValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const value = this.formatBigIntToSafeValue(\n this.bigIntValue,\n this.decimal || decimalFromMultiplier(this.decimalMultiplier),\n );\n\n switch (type) {\n case 'number':\n return Number(value) as NumberPrimitivesType[T];\n case 'string':\n return value as NumberPrimitivesType[T];\n case 'bigint':\n return ((this.bigIntValue * 10n ** BigInt(this.decimal || 8n)) /\n this.decimalMultiplier) as NumberPrimitivesType[T];\n }\n }\n\n // @ts-expect-error\n getBaseValue<T extends AllowedNumberTypes>(type: T): NumberPrimitivesType[T] {\n const divisor = this.decimalMultiplier / toMultiplier(this.decimal || BaseDecimal.THOR);\n const baseValue = this.bigIntValue / divisor;\n\n switch (type) {\n case 'number':\n return Number(baseValue) as NumberPrimitivesType[T];\n case 'string':\n return baseValue.toString() as NumberPrimitivesType[T];\n case 'bigint':\n return baseValue as NumberPrimitivesType[T];\n }\n }\n\n getBigIntValue(value: InitialisationValueType, decimal?: number) {\n if (!decimal && typeof value === 'object') return value.bigIntValue;\n\n const stringValue = getStringValue(value);\n const safeValue = toSafeValue(stringValue);\n\n if (safeValue === '0' || safeValue === 'undefined') return 0n;\n return this.#toBigInt(safeValue, decimal);\n }\n\n toSignificant(significantDigits: number = 6) {\n const [int, dec] = this.getValue('string').split('.');\n const integer = int || '';\n const decimal = dec || '';\n const valueLength = parseInt(integer) ? integer.length + decimal.length : decimal.length;\n\n if (valueLength <= significantDigits) {\n return this.getValue('string');\n }\n\n if (integer.length >= significantDigits) {\n return integer.slice(0, significantDigits).padEnd(integer.length, '0');\n }\n\n if (parseInt(integer)) {\n return `${integer}.${decimal.slice(0, significantDigits - integer.length)}`.padEnd(\n significantDigits - integer.length,\n '0',\n );\n }\n\n const trimmedDecimal = parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, significantDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n '0',\n )}`;\n }\n\n toFixed(fixedDigits: number = 6) {\n const [int, dec] = this.getValue('string').split('.');\n const integer = int || '';\n const decimal = dec || '';\n\n if (parseInt(integer)) {\n return `${integer}.${decimal.slice(0, fixedDigits)}`.padEnd(fixedDigits, '0');\n }\n\n const trimmedDecimal = parseInt(decimal);\n const slicedDecimal = `${trimmedDecimal}`.slice(0, fixedDigits);\n\n return `0.${slicedDecimal.padStart(\n decimal.length - `${trimmedDecimal}`.length + slicedDecimal.length,\n '0',\n )}`;\n }\n\n toAbbreviation(digits = 2) {\n const value = this.getValue('number');\n const abbreviations = ['', 'K', 'M', 'B', 'T', 'Q', 'Qi', 'S'];\n const tier = Math.floor(Math.log10(Math.abs(value)) / 3);\n const suffix = abbreviations[tier];\n\n if (!suffix) return this.getValue('string');\n\n const scale = 10 ** (tier * 3);\n const scaled = value / scale;\n\n return `${scaled.toFixed(digits)}${suffix}`;\n }\n\n toCurrency(\n currency = '$',\n {\n currencyPosition = 'start',\n decimal = 2,\n decimalSeparator = '.',\n thousandSeparator = ',',\n } = {},\n ) {\n const value = this.getValue('number');\n const [int, dec = ''] = value.toFixed(6).split('.');\n const integer = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n const parsedValue =\n !int && !dec\n ? '0.00'\n : int === '0'\n ? `${parseFloat(`0.${dec}`)}`.replace('.', decimalSeparator)\n : `${integer}${parseInt(dec) ? `${decimalSeparator}${dec.slice(0, decimal)}` : ''}`;\n\n return `${currencyPosition === 'start' ? currency : ''}${parsedValue}${\n currencyPosition === 'end' ? currency : ''\n }`;\n }\n\n formatBigIntToSafeValue(value: bigint, decimal?: number) {\n const bigIntDecimal = decimal || this.decimal || DEFAULT_DECIMAL;\n const decimalToUseForConversion = Math.max(\n bigIntDecimal,\n decimalFromMultiplier(this.decimalMultiplier),\n );\n const isNegative = value < 0n;\n\n const valueString = value.toString().substring(isNegative ? 1 : 0);\n const padLength = decimalToUseForConversion - (valueString.length - 1);\n\n const parsedValueString = padLength > 0 ? '0'.repeat(padLength) + valueString : valueString;\n\n const decimalIndex = parsedValueString.length - decimalToUseForConversion;\n let decimalString = parsedValueString.slice(-decimalToUseForConversion);\n\n // Check if we need to round up\n if (parseInt(decimalString[bigIntDecimal]) >= 5) {\n // Increment the last decimal place and slice off the rest\n decimalString = `${decimalString.substring(0, bigIntDecimal - 1)}${(\n parseInt(decimalString[bigIntDecimal - 1]) + 1\n ).toString()}`;\n } else {\n // Just slice off the extra digits\n decimalString = decimalString.substring(0, bigIntDecimal);\n }\n\n return `${isNegative ? '-' : ''}${parsedValueString.slice(\n 0,\n decimalIndex,\n )}.${decimalString}`.replace(/\\.?0*$/, '');\n }\n\n #arithmetics(method: 'add' | 'sub' | 'mul' | 'div', ...args: InitialisationValueType[]): this {\n const precisionDecimal = this.#retrievePrecisionDecimal(this, ...args);\n const decimal = Math.max(precisionDecimal, decimalFromMultiplier(this.decimalMultiplier));\n const precisionDecimalMultiplier = toMultiplier(decimal);\n\n const result = args.reduce(\n (acc: bigint, arg) => {\n const value = this.getBigIntValue(arg, decimal);\n\n switch (method) {\n case 'add':\n return acc + value;\n case 'sub':\n return acc - value;\n /**\n * Multiplication & division would end up with wrong result if we don't adjust the value\n * 200000000n * 200000000n => 40000000000000000n\n * 200000000n / 200000000n => 1n\n * So we do the following:\n * 200000000n * 200000000n = 40000000000000000n / 100000000n (decimals) => 400000000n\n * (200000000n * 100000000n (decimals)) / 200000000n => 100000000n\n */\n case 'mul':\n return (acc * value) / precisionDecimalMultiplier;\n case 'div': {\n if (value === 0n) throw new RangeError('Division by zero');\n return (acc * precisionDecimalMultiplier) / value;\n }\n default:\n return acc;\n }\n },\n //normalize is to precision multiplier base\n (this.bigIntValue * precisionDecimalMultiplier) / this.decimalMultiplier,\n );\n\n const value = formatBigIntToSafeValue({\n bigIntDecimal: decimal,\n decimal,\n value: result,\n });\n\n // @ts-expect-error False positive\n return new this.constructor({\n decimalMultiplier: toMultiplier(decimal),\n decimal: this.decimal,\n value,\n identifier: this.toString(),\n });\n }\n\n #comparison(method: 'gt' | 'gte' | 'lt' | 'lte' | 'eqValue', ...args: InitialisationValueType[]) {\n const decimal = this.#retrievePrecisionDecimal(this, ...args);\n const value = this.getBigIntValue(args[0], decimal);\n const compareToValue = this.getBigIntValue(this, decimal);\n\n switch (method) {\n case 'gt':\n return compareToValue > value;\n case 'gte':\n return compareToValue >= value;\n case 'lt':\n return compareToValue < value;\n case 'lte':\n return compareToValue <= value;\n case 'eqValue':\n return compareToValue === value;\n }\n }\n\n #setValue(value: InitialisationValueType) {\n const safeValue = toSafeValue(value) || '0';\n this.bigIntValue = this.#toBigInt(safeValue);\n }\n\n #retrievePrecisionDecimal(...args: InitialisationValueType[]) {\n const decimals = args\n .map((arg) => {\n const isObject = typeof arg === 'object';\n const value = isObject\n ? arg.decimal || decimalFromMultiplier(arg.decimalMultiplier)\n : getFloatDecimals(toSafeValue(arg));\n\n return value;\n })\n .filter(Boolean) as number[];\n\n return Math.max(...decimals, DEFAULT_DECIMAL);\n }\n\n #toBigInt(value: string, decimal?: number) {\n const multiplier = decimal ? toMultiplier(decimal) : this.decimalMultiplier;\n const padDecimal = decimalFromMultiplier(multiplier);\n const [integerPart = '', decimalPart = ''] = value.split('.');\n\n return BigInt(`${integerPart}${decimalPart.padEnd(padDecimal, '0')}`);\n }\n}\n\nconst numberFormatter = Intl.NumberFormat('fullwide', {\n useGrouping: false,\n maximumFractionDigits: 20,\n});\n\nfunction toSafeValue(value: InitialisationValueType) {\n const parsedValue =\n typeof value === 'number' ? numberFormatter.format(value) : getStringValue(value);\n const splitValue = `${parsedValue}`.replaceAll(',', '.').split('.');\n\n return splitValue.length > 1\n ? `${splitValue.slice(0, -1).join('')}.${splitValue.at(-1)}`\n : splitValue[0];\n}\n\nfunction getFloatDecimals(value: string) {\n const decimals = value.split('.')[1]?.length || 0;\n return Math.max(decimals, DEFAULT_DECIMAL);\n}\n\nfunction getStringValue(param: SKBigIntParams) {\n return typeof param === 'object'\n ? 'getValue' in param\n ? param.getValue('string')\n : param.value\n : param;\n}\n","import { BaseDecimal, Chain, ChainToChainId } from '@swapkit/types';\n\nimport type { CommonAssetString } from '../helpers/asset.ts';\nimport { getAssetType, getCommonAssetInfo, getDecimal, isGasAsset } from '../helpers/asset.ts';\nimport { validateIdentifier } from '../helpers/validators.ts';\nimport type { TokenNames, TokenTax } from '../types.ts';\n\nimport type { NumberPrimitives } from './bigIntArithmetics.ts';\nimport { BigIntArithmetics, formatBigIntToSafeValue } from './bigIntArithmetics.ts';\nimport type { SwapKitValueType } from './swapKitNumber.ts';\n\nconst staticTokensMap = new Map<\n TokenNames,\n { tax?: TokenTax; decimal: number; identifier: string }\n>();\n\nexport class AssetValue extends BigIntArithmetics {\n address?: string;\n chain: Chain;\n isGasAsset = false;\n isSynthetic = false;\n symbol: string;\n tax?: TokenTax;\n ticker: string;\n type: ReturnType<typeof getAssetType>;\n\n constructor({\n value,\n decimal,\n tax,\n chain,\n symbol,\n identifier,\n }: { decimal: number; value: SwapKitValueType; tax?: TokenTax } & (\n | { chain: Chain; symbol: string; identifier?: never }\n | { identifier: string; chain?: never; symbol?: never }\n )) {\n super(typeof value === 'object' ? value : { decimal, value });\n\n const assetInfo = getAssetInfo(identifier || `${chain}.${symbol}`);\n\n this.type = getAssetType(assetInfo);\n this.tax = tax;\n this.chain = assetInfo.chain;\n this.ticker = assetInfo.ticker;\n this.symbol = assetInfo.symbol;\n this.address = assetInfo.address;\n this.isSynthetic = assetInfo.isSynthetic;\n this.isGasAsset = assetInfo.isGasAsset;\n }\n\n toString() {\n return this.isSynthetic ? this.symbol : `${this.chain}.${this.symbol}`;\n }\n\n toUrl() {\n return this.isSynthetic ? `${this.chain}.${this.symbol.replace('/', '.')}` : this.toString();\n }\n\n eq({ chain, symbol }: { chain: Chain; symbol: string }) {\n return this.chain === chain && this.symbol === symbol;\n }\n\n chainId() {\n return ChainToChainId[this.chain];\n }\n\n // THOR.RUNE\n // THOR.ETH.ETH\n // ETH.THOR-0x1234567890\n static fromUrl(urlAsset: string, value: NumberPrimitives = 0) {\n const [chain, ticker, symbol] = urlAsset.split('.');\n if (!chain || !ticker) throw new Error('Invalid asset url');\n\n const assetString =\n chain === Chain.THORChain && symbol ? `${chain}.${ticker}/${symbol}` : urlAsset;\n\n return createAssetValue(assetString, value);\n }\n\n static fromString(assetString: string, value: NumberPrimitives = 0) {\n return createAssetValue(assetString, value);\n }\n static fromIdentifier(\n assetString:\n | `${Chain}.${string}`\n | `${Chain}/${string}`\n | `${Chain}.${string}-${string}`\n | TokenNames,\n value: NumberPrimitives = 0,\n ) {\n return createAssetValue(assetString, value);\n }\n\n static fromStringSync(assetString: string, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n\n return new AssetValue({\n tax,\n value: safeValue(value, decimal),\n identifier: isSynthetic ? assetString : identifier,\n decimal: isSynthetic ? 8 : decimal,\n });\n }\n\n static fromIdentifierSync(assetString: TokenNames, value: NumberPrimitives = 0) {\n const { chain, isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString);\n\n if (isSynthetic) return createSyntheticAssetValue(assetString, value);\n // TODO: write logger that will only run in dev mode with some flag\n // if (!tokenInfo) {\n // console.error(\n // `Asset ${assetString} is not loaded. - Loading with base Chain. Use AssetValue.loadStaticAssets() to load it`,\n // );\n // }\n\n const { tax, decimal, identifier } = tokenInfo || {\n decimal: BaseDecimal[chain],\n identifier: assetString,\n };\n return new AssetValue({ tax, decimal, identifier, value: safeValue(value, decimal) });\n }\n\n static fromChainOrSignature(assetString: CommonAssetString, value: NumberPrimitives = 0) {\n const { decimal, identifier } = getCommonAssetInfo(assetString);\n return new AssetValue({ value: safeValue(value, decimal), decimal, identifier });\n }\n\n static loadStaticAssets() {\n return new Promise<{ ok: true } | { ok: false; message: string; error: any }>(\n async (resolve, reject) => {\n try {\n const tokenPackages = await import('@swapkit/tokens');\n\n Object.values(tokenPackages).forEach((tokenList) => {\n tokenList?.tokens?.forEach(({ identifier, chain, ...rest }) => {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, {\n identifier,\n decimal: 'decimals' in rest ? rest.decimals : BaseDecimal[chain as Chain],\n });\n });\n });\n\n resolve({ ok: true });\n } catch (error) {\n console.error(error);\n reject({\n ok: false,\n error,\n message:\n \"Couldn't load static assets. Ensure you have installed @swapkit/tokens package\",\n });\n }\n },\n );\n }\n}\n\nexport function getMinAmountByChain(chain: Chain) {\n const asset = AssetValue.fromChainOrSignature(chain);\n\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.Litecoin:\n case Chain.BitcoinCash:\n return asset.set(0.00010001);\n\n case Chain.Dogecoin:\n return asset.set(1.00000001);\n\n case Chain.Avalanche:\n case Chain.Ethereum:\n return asset.set(0.00000001);\n\n case Chain.THORChain:\n case Chain.Maya:\n return asset.set(0);\n\n case Chain.Cosmos:\n return asset.set(0.000001);\n\n default:\n return asset.set(0.00000001);\n }\n}\n\nasync function createAssetValue(identifier: string, value: NumberPrimitives = 0) {\n validateIdentifier(identifier);\n\n const staticToken = staticTokensMap.get(identifier.toUpperCase() as TokenNames);\n const decimal = staticToken?.decimal || (await getDecimal(getAssetInfo(identifier)));\n if (!staticToken) {\n staticTokensMap.set(identifier.toUpperCase() as TokenNames, { identifier, decimal });\n }\n\n return new AssetValue({ decimal, value: safeValue(value, decimal), identifier });\n}\n\nfunction createSyntheticAssetValue(identifier: string, value: NumberPrimitives = 0) {\n const [synthChain, symbol] =\n identifier.split('.')[0].toUpperCase() === Chain.THORChain\n ? identifier.split('.').slice(1)!.join().split('/')\n : identifier.split('/');\n\n if (!synthChain || !symbol) throw new Error('Invalid asset identifier');\n\n return new AssetValue({\n decimal: 8,\n value: safeValue(value, 8),\n identifier: `${Chain.THORChain}.${synthChain}/${symbol}`,\n });\n}\n\nfunction safeValue(value: NumberPrimitives, decimal: number) {\n return typeof value === 'bigint'\n ? formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal })\n : value;\n}\n\n// TODO refactor & split into smaller functions\nfunction getAssetInfo(identifier: string) {\n const isSynthetic = identifier.slice(0, 14).includes('/');\n\n const [synthChain, synthSymbol] =\n identifier.split('.')[0].toUpperCase() === Chain.THORChain\n ? identifier.split('.').slice(1)!.join().split('/')\n : identifier.split('/');\n\n if (isSynthetic && (!synthChain || !synthSymbol)) throw new Error('Invalid asset identifier');\n\n const adjustedIdentifier =\n identifier.includes('.') && !isSynthetic ? identifier : `${Chain.THORChain}.${synthSymbol}`;\n\n const [chain, ...rest] = adjustedIdentifier.split('.') as [Chain, string];\n const [ticker, address] = (isSynthetic ? synthSymbol : rest.join('.')).split('-') as [\n string,\n string?,\n ];\n const symbol = isSynthetic ? synthSymbol : rest.join('.');\n\n return {\n address: address?.toLowerCase(),\n chain,\n isGasAsset: isGasAsset({ chain, symbol }),\n isSynthetic,\n symbol:\n (isSynthetic ? `${synthChain}/` : '') +\n (address ? `${ticker}-${address?.toLowerCase() ?? ''}` : symbol),\n ticker,\n };\n}\n","const errorMessages = {\n /**\n * Core\n */\n core_wallet_connection_not_found: 10001,\n core_estimated_max_spendable_chain_not_supported: 10002,\n core_extend_error: 10003,\n core_inbound_data_not_found: 10004,\n core_approve_asset_address_or_from_not_found: 10005,\n core_chain_halted: 10099,\n /**\n * Core - Wallet Connection\n */\n core_wallet_xdefi_not_installed: 10101,\n core_wallet_evmwallet_not_installed: 10102,\n core_wallet_walletconnect_not_installed: 10103,\n core_wallet_keystore_not_installed: 10104,\n core_wallet_ledger_not_installed: 10105,\n core_wallet_trezor_not_installed: 10106,\n core_wallet_keplr_not_installed: 10107,\n core_wallet_okx_not_installed: 10108,\n core_wallet_keepkey_not_installed: 10109,\n /**\n * Core - Swap\n */\n core_swap_invalid_params: 10200,\n core_swap_route_not_complete: 10201,\n core_swap_asset_not_recognized: 10202,\n core_swap_contract_not_found: 10203,\n core_swap_route_transaction_not_found: 10204,\n core_swap_contract_not_supported: 10205,\n core_swap_transaction_error: 10206,\n core_swap_quote_mode_not_supported: 10207,\n /**\n * Core - Transaction\n */\n core_transaction_deposit_error: 10301,\n core_transaction_create_liquidity_rune_error: 10302,\n core_transaction_create_liquidity_asset_error: 10303,\n core_transaction_create_liquidity_invalid_params: 10304,\n core_transaction_add_liquidity_invalid_params: 10305,\n core_transaction_add_liquidity_no_rune_address: 10306,\n core_transaction_add_liquidity_rune_error: 10307,\n core_transaction_add_liquidity_asset_error: 10308,\n core_transaction_withdraw_error: 10309,\n core_transaction_deposit_to_pool_error: 10310,\n core_transaction_deposit_insufficient_funds_error: 10311,\n core_transaction_deposit_gas_error: 10312,\n core_transaction_invalid_sender_address: 10313,\n core_transaction_deposit_server_error: 10314,\n core_transaction_user_rejected: 10315,\n\n /**\n * Wallets\n */\n wallet_ledger_connection_error: 20001,\n wallet_ledger_connection_claimed: 20002,\n wallet_ledger_get_address_error: 20003,\n wallet_ledger_device_not_found: 20004,\n wallet_ledger_device_locked: 20005,\n\n /**\n * Helpers\n */\n helpers_number_different_decimals: 99101,\n} as const;\n\nexport type ErrorKeys = keyof typeof errorMessages;\n\nexport class SwapKitError extends Error {\n constructor(errorKey: ErrorKeys, sourceError?: any) {\n if (sourceError) {\n console.error(sourceError, { stack: sourceError?.stack, message: sourceError?.message });\n }\n\n super(errorKey, { cause: { code: errorMessages[errorKey], message: errorKey } });\n Object.setPrototypeOf(this, SwapKitError.prototype);\n }\n}\n","import { BigIntArithmetics, formatBigIntToSafeValue } from './bigIntArithmetics.ts';\n\nexport type SwapKitValueType = BigIntArithmetics | string | number;\n\nexport class SwapKitNumber extends BigIntArithmetics {\n eq(value: SwapKitValueType) {\n return this.eqValue(value);\n }\n\n static fromBigInt(value: bigint, decimal?: number) {\n return new SwapKitNumber({\n decimal,\n value: formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal }),\n });\n }\n}\n"],"names":["o","t","I","f","g","E","N","M","O","e","s","r","m","i","n","a","_","U","c","d","D","y","v","G","W","F","L","k","p","w","q","x","j","X","Y","V","P","$","K","J","Q","l","u","A","R","C","B","T","h","H","b","S","z","it","Z","tt","et","getDecimalMethodHex","getContractDecimals","chain","to","result","RequestClient","ChainToRPC","error","BaseDecimal","getETHAssetDecimal","symbol","Chain","address","getAVAXAssetDecimal","getBSCAssetDecimal","getDecimal","gasFeeMultiplier","FeeOption","isGasAsset","getCommonAssetInfo","assetString","getAssetType","assetFromString","symbolArray","synth","ticker","_a","potentialScamRegex","evmAssetHasAddress","EVMChainList","filterAssets","tokens","token","getAsymmetricRuneShare","liquidityUnits","poolUnits","runeDepth","toTCSwapKitNumber","part1","part2","part3","part4","part5","getAsymmetricAssetShare","assetDepth","numerator","getAsymmetricRuneWithdrawAmount","percent","getAsymmetricAssetWithdrawAmount","value","SwapKitNumber","getSymmetricPoolShare","getSymmetricWithdraw","name","getEstimatedPoolShare","runeAmount","assetAmount","runeAddAmount","assetAddAmount","rA","aR","ra","RA","denominator","liquidityUnitsAfterAdd","estimatedLiquidityUnits","newPoolUnits","getLiquiditySlippage","getMemoFor","memoType","options","MemoType","unbondAmount","owner","singleSide","basisPoints","targetAssetString","shortenedSymbol","target","asset","getTHORNameCost","year","validateTHORName","regex","derivationPathToString","network","chainId","account","change","index","supportedChains","validateIdentifier","identifier","uppercasedIdentifier","synthChain","DEFAULT_DECIMAL","toMultiplier","decimal","decimalFromMultiplier","multiplier","formatBigIntToSafeValue","bigIntDecimal","isNegative","valueString","padLength","decimalIndex","decimalString","_BigIntArithmetics","params","__privateAdd","_arithmetics","_comparison","_setValue","_retrievePrecisionDecimal","_toBigInt","__publicField","getStringValue","isComplex","getFloatDecimals","toSafeValue","__privateMethod","setValue_fn","from","args","arithmetics_fn","comparison_fn","type","divisor","baseValue","stringValue","safeValue","toBigInt_fn","significantDigits","int","dec","integer","trimmedDecimal","slicedDecimal","fixedDigits","digits","abbreviations","tier","suffix","scale","currency","currencyPosition","decimalSeparator","thousandSeparator","parsedValue","decimalToUseForConversion","parsedValueString","method","precisionDecimal","retrievePrecisionDecimal_fn","precisionDecimalMultiplier","acc","arg","compareToValue","decimals","padDecimal","integerPart","decimalPart","BigIntArithmetics","numberFormatter","splitValue","param","staticTokensMap","AssetValue","tax","assetInfo","getAssetInfo","ChainToChainId","urlAsset","createAssetValue","isSynthetic","tokenInfo","createSyntheticAssetValue","resolve","reject","tokenPackages","tokenList","rest","getMinAmountByChain","staticToken","synthSymbol","adjustedIdentifier","errorMessages","SwapKitError","errorKey","sourceError"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -108,6 +108,8 @@ export declare type CommonAssetString = `${Chain.Maya}.MAYA` | `${Chain.Ethereum
108
108
 
109
109
  export declare function derivationPathToString([network, chainId, account, change, index]: number[]): string;
110
110
 
111
+ export declare type ErrorKeys = keyof typeof errorMessages;
112
+
111
113
  declare const errorMessages: {
112
114
  /**
113
115
  * Core
@@ -157,11 +159,16 @@ declare const errorMessages: {
157
159
  readonly core_transaction_deposit_insufficient_funds_error: 10311;
158
160
  readonly core_transaction_deposit_gas_error: 10312;
159
161
  readonly core_transaction_invalid_sender_address: 10313;
160
- readonly core_transaction_deposit_server_error: 10313;
162
+ readonly core_transaction_deposit_server_error: 10314;
163
+ readonly core_transaction_user_rejected: 10315;
161
164
  /**
162
165
  * Wallets
163
166
  */
164
167
  readonly wallet_ledger_connection_error: 20001;
168
+ readonly wallet_ledger_connection_claimed: 20002;
169
+ readonly wallet_ledger_get_address_error: 20003;
170
+ readonly wallet_ledger_device_not_found: 20004;
171
+ readonly wallet_ledger_device_locked: 20005;
165
172
  /**
166
173
  * Helpers
167
174
  */
@@ -270,8 +277,6 @@ export declare const isGasAsset: ({ chain, symbol }: {
270
277
  symbol: string;
271
278
  }) => boolean;
272
279
 
273
- export declare type Keys = keyof typeof errorMessages;
274
-
275
280
  export declare type MemoOptions<T extends MemoType> = {
276
281
  [MemoType.BOND]: WithAddress;
277
282
  [MemoType.LEAVE]: WithAddress;
@@ -327,7 +332,7 @@ declare type SKBigIntParams = InitialisationValueType | {
327
332
  };
328
333
 
329
334
  export declare class SwapKitError extends Error {
330
- constructor(errorKey: Keys, sourceError?: any);
335
+ constructor(errorKey: ErrorKeys, sourceError?: any);
331
336
  }
332
337
 
333
338
  export declare class SwapKitNumber extends BigIntArithmetics {