@swapkit/helpers 1.0.0-rc.52 → 1.0.0-rc.54
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.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +35 -36
- package/dist/index.es.js +439 -397
- package/dist/index.es.js.map +1 -1
- package/package.json +3 -3
- package/src/helpers/liquidity.ts +35 -29
- package/src/helpers/memo.ts +2 -11
- package/src/helpers/others.ts +6 -6
- package/src/helpers/validators.ts +4 -3
- package/src/modules/assetValue.ts +80 -110
- package/src/types.ts +28 -0
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/helpers/asset.ts","../src/helpers/liquidity.ts","../src/helpers/memo.ts","../src/helpers/others.ts","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/errors/HTTPError.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/errors/TimeoutError.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/is.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/merge.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/core/constants.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/normalize.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/timeout.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/delay.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/options.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/core/Ky.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/index.js","../src/helpers/request.ts","../src/helpers/validators.ts","../src/modules/bigIntArithmetics.ts","../src/modules/assetValue.ts","../src/modules/swapKitError.ts","../src/modules/swapKitNumber.ts"],"sourcesContent":["import type { EVMChain } from '@swapkit/types';\nimport { BaseDecimal, Chain, ChainToRPC, EVMChainList, FeeOption } from '@swapkit/types';\n\nimport { RequestClient } from '../index.ts';\n\nconst getDecimalMethodHex = '0x313ce567';\n\nexport type CommonAssetString = 'MAYA.MAYA' | 'ETH.THOR' | 'ETH.vTHOR' | 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 'ETH.THOR':\n return { identifier: 'ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044', decimal: 18 };\n case 'ETH.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 'MAYA.MAYA':\n return { identifier: 'MAYA.MAYA', decimal: 4 };\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 const 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 const 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 const getAsymmetricRuneWithdrawAmount = ({\n percent,\n runeDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; runeDepth: string }>) =>\n getAsymmetricRuneShare({ runeDepth, liquidityUnits, poolUnits }).mul(percent);\n\nexport const getAsymmetricAssetWithdrawAmount = ({\n percent,\n assetDepth,\n liquidityUnits,\n poolUnits,\n}: ShareParams<{ percent: number; assetDepth: string }>) =>\n getAsymmetricAssetShare({ assetDepth, liquidityUnits, poolUnits }).mul(percent);\n\nconst toTCSwapKitNumber = (value: string) =>\n SwapKitNumber.fromBigInt(BigInt(value), BaseDecimal.THOR);\n\nexport const getSymmetricPoolShare = ({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n}>) => ({\n assetAmount: toTCSwapKitNumber(assetDepth).mul(liquidityUnits).div(poolUnits),\n runeAmount: toTCSwapKitNumber(runeDepth).mul(liquidityUnits).div(poolUnits),\n});\n\nexport const getSymmetricWithdraw = ({\n liquidityUnits,\n poolUnits,\n runeDepth,\n assetDepth,\n percent,\n}: ShareParams<{\n runeDepth: string;\n assetDepth: string;\n percent: number;\n}>) =>\n Object.fromEntries(\n Object.entries(getSymmetricPoolShare({ liquidityUnits, poolUnits, runeDepth, assetDepth })).map(\n ([name, value]) => [name, value.mul(percent)],\n ),\n );\n\nexport const 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 const 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\nconst getShortenedSymbol = ({\n symbol,\n ticker,\n chain,\n}: {\n ticker: string;\n symbol: string;\n chain: string | Chain;\n}) => (chain === 'ETH' && ticker !== 'ETH' ? `${ticker}-${symbol.slice(-3)}` : symbol);\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 * 10 ** 8}`;\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 target = !singleSide && targetAssetString ? `:${targetAssetString}` : '';\n const shortenedSymbol = getShortenedSymbol({ chain, symbol, ticker });\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 const getTHORNameCost = (year: number) => {\n if (year < 0) throw new Error('Invalid number of year');\n return 10 + year;\n};\n\nexport const 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 const derivationPathToString = ([network, chainId, account, change, index]: number[]) => {\n const shortPath = typeof index !== 'number';\n\n return `${network}'/${chainId}'/${account}'/${change}${shortPath ? '' : `/${index}`}`;\n};\n","// eslint-lint-disable-next-line @typescript-eslint/naming-convention\nexport class HTTPError extends Error {\n constructor(response, request, options) {\n const code = (response.status || response.status === 0) ? response.status : '';\n const title = response.statusText || '';\n const status = `${code} ${title}`.trim();\n const reason = status ? `status code ${status}` : 'an unknown error';\n super(`Request failed with ${reason}`);\n Object.defineProperty(this, \"response\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'HTTPError';\n this.response = response;\n this.request = request;\n this.options = options;\n }\n}\n//# sourceMappingURL=HTTPError.js.map","export class TimeoutError extends Error {\n constructor(request) {\n super('Request timed out');\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'TimeoutError';\n this.request = request;\n }\n}\n//# sourceMappingURL=TimeoutError.js.map","// eslint-disable-next-line @typescript-eslint/ban-types\nexport const isObject = (value) => value !== null && typeof value === 'object';\n//# sourceMappingURL=is.js.map","import { isObject } from './is.js';\nexport const validateAndMerge = (...sources) => {\n for (const source of sources) {\n if ((!isObject(source) || Array.isArray(source)) && source !== undefined) {\n throw new TypeError('The `options` argument must be an object');\n }\n }\n return deepMerge({}, ...sources);\n};\nexport const mergeHeaders = (source1 = {}, source2 = {}) => {\n const result = new globalThis.Headers(source1);\n const isHeadersInstance = source2 instanceof globalThis.Headers;\n const source = new globalThis.Headers(source2);\n for (const [key, value] of source.entries()) {\n if ((isHeadersInstance && value === 'undefined') || value === undefined) {\n result.delete(key);\n }\n else {\n result.set(key, value);\n }\n }\n return result;\n};\n// TODO: Make this strongly-typed (no `any`).\nexport const deepMerge = (...sources) => {\n let returnValue = {};\n let headers = {};\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n }\n else if (isObject(source)) {\n for (let [key, value] of Object.entries(source)) {\n if (isObject(value) && key in returnValue) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = { ...returnValue, [key]: value };\n }\n if (isObject(source.headers)) {\n headers = mergeHeaders(headers, source.headers);\n returnValue.headers = headers;\n }\n }\n }\n return returnValue;\n};\n//# sourceMappingURL=merge.js.map","export const supportsRequestStreams = (() => {\n let duplexAccessed = false;\n let hasContentType = false;\n const supportsReadableStream = typeof globalThis.ReadableStream === 'function';\n const supportsRequest = typeof globalThis.Request === 'function';\n if (supportsReadableStream && supportsRequest) {\n hasContentType = 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 duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n }\n return duplexAccessed && !hasContentType;\n})();\nexport const supportsAbortController = typeof globalThis.AbortController === 'function';\nexport const supportsResponseStreams = typeof globalThis.ReadableStream === 'function';\nexport const supportsFormData = typeof globalThis.FormData === 'function';\nexport const requestMethods = ['get', 'post', 'put', 'patch', 'head', 'delete'];\nconst validate = () => undefined;\nvalidate();\nexport const responseTypes = {\n json: 'application/json',\n text: 'text/*',\n formData: 'multipart/form-data',\n arrayBuffer: '*/*',\n blob: '*/*',\n};\n// The maximum value of a 32bit int (see issue #117)\nexport const maxSafeTimeout = 2147483647;\nexport const stop = Symbol('stop');\nexport const kyOptionKeys = {\n json: true,\n parseJson: true,\n searchParams: true,\n prefixUrl: true,\n retry: true,\n timeout: true,\n hooks: true,\n throwHttpErrors: true,\n onDownloadProgress: true,\n fetch: true,\n};\nexport const requestOptionsRegistry = {\n method: true,\n headers: true,\n body: true,\n mode: true,\n credentials: true,\n cache: true,\n redirect: true,\n referrer: true,\n referrerPolicy: true,\n integrity: true,\n keepalive: true,\n signal: true,\n window: true,\n dispatcher: true,\n duplex: true,\n};\n//# sourceMappingURL=constants.js.map","import { requestMethods } from '../core/constants.js';\nexport const normalizeRequestMethod = (input) => requestMethods.includes(input) ? input.toUpperCase() : input;\nconst retryMethods = ['get', 'put', 'head', 'delete', 'options', 'trace'];\nconst retryStatusCodes = [408, 413, 429, 500, 502, 503, 504];\nconst retryAfterStatusCodes = [413, 429, 503];\nconst defaultRetryOptions = {\n limit: 2,\n methods: retryMethods,\n statusCodes: retryStatusCodes,\n afterStatusCodes: retryAfterStatusCodes,\n maxRetryAfter: Number.POSITIVE_INFINITY,\n backoffLimit: Number.POSITIVE_INFINITY,\n delay: attemptCount => 0.3 * (2 ** (attemptCount - 1)) * 1000,\n};\nexport const normalizeRetryOptions = (retry = {}) => {\n if (typeof retry === 'number') {\n return {\n ...defaultRetryOptions,\n limit: retry,\n };\n }\n if (retry.methods && !Array.isArray(retry.methods)) {\n throw new Error('retry.methods must be an array');\n }\n if (retry.statusCodes && !Array.isArray(retry.statusCodes)) {\n throw new Error('retry.statusCodes must be an array');\n }\n return {\n ...defaultRetryOptions,\n ...retry,\n afterStatusCodes: retryAfterStatusCodes,\n };\n};\n//# sourceMappingURL=normalize.js.map","import { TimeoutError } from '../errors/TimeoutError.js';\n// `Promise.race()` workaround (#91)\nexport default async function timeout(request, init, abortController, options) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n if (abortController) {\n abortController.abort();\n }\n reject(new TimeoutError(request));\n }, options.timeout);\n void options\n .fetch(request, init)\n .then(resolve)\n .catch(reject)\n .then(() => {\n clearTimeout(timeoutId);\n });\n });\n}\n//# sourceMappingURL=timeout.js.map","// https://github.com/sindresorhus/delay/tree/ab98ae8dfcb38e1593286c94d934e70d14a4e111\nexport default async function delay(ms, { signal }) {\n return new Promise((resolve, reject) => {\n if (signal) {\n signal.throwIfAborted();\n signal.addEventListener('abort', abortHandler, { once: true });\n }\n function abortHandler() {\n clearTimeout(timeoutId);\n reject(signal.reason);\n }\n const timeoutId = setTimeout(() => {\n signal?.removeEventListener('abort', abortHandler);\n resolve();\n }, ms);\n });\n}\n//# sourceMappingURL=delay.js.map","import { kyOptionKeys, requestOptionsRegistry } from '../core/constants.js';\nexport const findUnknownOptions = (request, options) => {\n const unknownOptions = {};\n for (const key in options) {\n if (!(key in requestOptionsRegistry) && !(key in kyOptionKeys) && !(key in request)) {\n unknownOptions[key] = options[key];\n }\n }\n return unknownOptions;\n};\n//# sourceMappingURL=options.js.map","import { HTTPError } from '../errors/HTTPError.js';\nimport { TimeoutError } from '../errors/TimeoutError.js';\nimport { deepMerge, mergeHeaders } from '../utils/merge.js';\nimport { normalizeRequestMethod, normalizeRetryOptions } from '../utils/normalize.js';\nimport timeout from '../utils/timeout.js';\nimport delay from '../utils/delay.js';\nimport { findUnknownOptions } from '../utils/options.js';\nimport { maxSafeTimeout, responseTypes, stop, supportsAbortController, supportsFormData, supportsResponseStreams, supportsRequestStreams, } from './constants.js';\nexport class Ky {\n static create(input, options) {\n const ky = new Ky(input, options);\n const fn = async () => {\n if (typeof ky._options.timeout === 'number' && ky._options.timeout > maxSafeTimeout) {\n throw new RangeError(`The \\`timeout\\` option cannot be greater than ${maxSafeTimeout}`);\n }\n // Delay the fetch so that body method shortcuts can set the Accept header\n await Promise.resolve();\n let response = await ky._fetch();\n for (const hook of ky._options.hooks.afterResponse) {\n // eslint-disable-next-line no-await-in-loop\n const modifiedResponse = await hook(ky.request, ky._options, ky._decorateResponse(response.clone()));\n if (modifiedResponse instanceof globalThis.Response) {\n response = modifiedResponse;\n }\n }\n ky._decorateResponse(response);\n if (!response.ok && ky._options.throwHttpErrors) {\n let error = new HTTPError(response, ky.request, ky._options);\n for (const hook of ky._options.hooks.beforeError) {\n // eslint-disable-next-line no-await-in-loop\n error = await hook(error);\n }\n throw error;\n }\n // If `onDownloadProgress` is passed, it uses the stream API internally\n /* istanbul ignore next */\n if (ky._options.onDownloadProgress) {\n if (typeof ky._options.onDownloadProgress !== 'function') {\n throw new TypeError('The `onDownloadProgress` option must be a function');\n }\n if (!supportsResponseStreams) {\n throw new Error('Streams are not supported in your environment. `ReadableStream` is missing.');\n }\n return ky._stream(response.clone(), ky._options.onDownloadProgress);\n }\n return response;\n };\n const isRetriableMethod = ky._options.retry.methods.includes(ky.request.method.toLowerCase());\n const result = (isRetriableMethod ? ky._retry(fn) : fn());\n for (const [type, mimeType] of Object.entries(responseTypes)) {\n result[type] = async () => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n ky.request.headers.set('accept', ky.request.headers.get('accept') || mimeType);\n const awaitedResult = await result;\n const response = awaitedResult.clone();\n if (type === 'json') {\n if (response.status === 204) {\n return '';\n }\n const arrayBuffer = await response.clone().arrayBuffer();\n const responseSize = arrayBuffer.byteLength;\n if (responseSize === 0) {\n return '';\n }\n if (options.parseJson) {\n return options.parseJson(await response.text());\n }\n }\n return response[type]();\n };\n }\n return result;\n }\n // eslint-disable-next-line complexity\n constructor(input, options = {}) {\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"abortController\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_retryCount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_input\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._input = input;\n 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 ...options,\n headers: mergeHeaders(this._input.headers, options.headers),\n hooks: deepMerge({\n beforeRequest: [],\n beforeRetry: [],\n beforeError: [],\n afterResponse: [],\n }, options.hooks),\n method: normalizeRequestMethod(options.method ?? this._input.method),\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n prefixUrl: String(options.prefixUrl || ''),\n retry: normalizeRetryOptions(options.retry),\n throwHttpErrors: options.throwHttpErrors !== false,\n timeout: options.timeout ?? 10000,\n fetch: options.fetch ?? globalThis.fetch.bind(globalThis),\n };\n if (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 }\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 }\n if (!this._options.prefixUrl.endsWith('/')) {\n this._options.prefixUrl += '/';\n }\n this._input = this._options.prefixUrl + this._input;\n }\n if (supportsAbortController) {\n this.abortController = new globalThis.AbortController();\n if (this._options.signal) {\n const originalSignal = this._options.signal;\n this._options.signal.addEventListener('abort', () => {\n this.abortController.abort(originalSignal.reason);\n });\n }\n this._options.signal = this.abortController.signal;\n }\n if (supportsRequestStreams) {\n // @ts-expect-error - Types are outdated.\n this._options.duplex = 'half';\n }\n this.request = new globalThis.Request(this._input, this._options);\n if (this._options.searchParams) {\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const textSearchParams = typeof this._options.searchParams === 'string'\n ? this._options.searchParams.replace(/^\\?/, '')\n : new URLSearchParams(this._options.searchParams).toString();\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const searchParams = '?' + textSearchParams;\n const url = this.request.url.replace(/(?:\\?.*?)?(?=#|$)/, searchParams);\n // To provide correct form boundary, Content-Type header should be deleted each time when new Request instantiated from another one\n if (((supportsFormData && this._options.body instanceof globalThis.FormData)\n || this._options.body instanceof URLSearchParams) && !(this._options.headers && this._options.headers['content-type'])) {\n this.request.headers.delete('content-type');\n }\n // The spread of `this.request` is required as otherwise it misses the `duplex` option for some reason and throws.\n this.request = new globalThis.Request(new globalThis.Request(url, { ...this.request }), this._options);\n }\n if (this._options.json !== undefined) {\n this._options.body = JSON.stringify(this._options.json);\n this.request.headers.set('content-type', this._options.headers.get('content-type') ?? 'application/json');\n this.request = new globalThis.Request(this.request, { body: this._options.body });\n }\n }\n _calculateRetryDelay(error) {\n this._retryCount++;\n if (this._retryCount < this._options.retry.limit && !(error instanceof TimeoutError)) {\n if (error instanceof HTTPError) {\n if (!this._options.retry.statusCodes.includes(error.response.status)) {\n return 0;\n }\n const retryAfter = error.response.headers.get('Retry-After');\n if (retryAfter && this._options.retry.afterStatusCodes.includes(error.response.status)) {\n let after = Number(retryAfter);\n if (Number.isNaN(after)) {\n after = Date.parse(retryAfter) - Date.now();\n }\n else {\n after *= 1000;\n }\n if (this._options.retry.maxRetryAfter !== undefined && after > this._options.retry.maxRetryAfter) {\n return 0;\n }\n return after;\n }\n if (error.response.status === 413) {\n return 0;\n }\n }\n const retryDelay = this._options.retry.delay(this._retryCount);\n return Math.min(this._options.retry.backoffLimit, retryDelay);\n }\n return 0;\n }\n _decorateResponse(response) {\n if (this._options.parseJson) {\n response.json = async () => this._options.parseJson(await response.text());\n }\n return response;\n }\n async _retry(fn) {\n try {\n return await fn();\n }\n catch (error) {\n const ms = Math.min(this._calculateRetryDelay(error), maxSafeTimeout);\n if (ms !== 0 && this._retryCount > 0) {\n await delay(ms, { signal: this._options.signal });\n for (const hook of this._options.hooks.beforeRetry) {\n // eslint-disable-next-line no-await-in-loop\n const hookResult = await hook({\n request: this.request,\n options: this._options,\n error: error,\n retryCount: this._retryCount,\n });\n // If `stop` is returned from the hook, the retry process is stopped\n if (hookResult === stop) {\n return;\n }\n }\n return this._retry(fn);\n }\n throw error;\n }\n }\n async _fetch() {\n for (const hook of this._options.hooks.beforeRequest) {\n // eslint-disable-next-line no-await-in-loop\n const result = await hook(this.request, this._options);\n if (result instanceof Request) {\n this.request = result;\n break;\n }\n if (result instanceof Response) {\n return result;\n }\n }\n const nonRequestOptions = findUnknownOptions(this.request, this._options);\n if (this._options.timeout === false) {\n return this._options.fetch(this.request.clone(), nonRequestOptions);\n }\n return timeout(this.request.clone(), nonRequestOptions, this.abortController, this._options);\n }\n /* istanbul ignore next */\n _stream(response, onDownloadProgress) {\n const totalBytes = Number(response.headers.get('content-length')) || 0;\n let transferredBytes = 0;\n if (response.status === 204) {\n if (onDownloadProgress) {\n onDownloadProgress({ percent: 1, totalBytes, transferredBytes }, new Uint8Array());\n }\n return new globalThis.Response(null, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n return new globalThis.Response(new globalThis.ReadableStream({\n async start(controller) {\n const reader = response.body.getReader();\n if (onDownloadProgress) {\n onDownloadProgress({ percent: 0, transferredBytes: 0, totalBytes }, new Uint8Array());\n }\n async function read() {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n return;\n }\n if (onDownloadProgress) {\n transferredBytes += value.byteLength;\n const percent = totalBytes === 0 ? 0 : transferredBytes / totalBytes;\n onDownloadProgress({ percent, transferredBytes, totalBytes }, value);\n }\n controller.enqueue(value);\n await read();\n }\n await read();\n },\n }), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n}\n//# sourceMappingURL=Ky.js.map","/*! MIT License © Sindre Sorhus */\nimport { Ky } from './core/Ky.js';\nimport { requestMethods, stop } from './core/constants.js';\nimport { validateAndMerge } from './utils/merge.js';\nconst createInstance = (defaults) => {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n const ky = (input, options) => Ky.create(input, validateAndMerge(defaults, options));\n for (const method of requestMethods) {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n ky[method] = (input, options) => Ky.create(input, validateAndMerge(defaults, options, { method }));\n }\n ky.create = (newDefaults) => createInstance(validateAndMerge(newDefaults));\n ky.extend = (newDefaults) => createInstance(validateAndMerge(defaults, newDefaults));\n ky.stop = stop;\n return ky;\n};\nconst ky = createInstance();\nexport default ky;\nexport { HTTPError } from './errors/HTTPError.js';\nexport { TimeoutError } from './errors/TimeoutError.js';\n//# sourceMappingURL=index.js.map","import type { Options } from 'ky';\nimport ky from 'ky';\n\nconst headers =\n typeof window !== 'undefined'\n ? {}\n : { referrer: 'https://sk.thorswap.net', referer: 'https://sk.thorswap.net' };\n\nconst kyClient = ky.create({ headers });\n\nexport const RequestClient = {\n get: <T>(url: string | URL | Request, options?: Options) => kyClient.get(url, options).json<T>(),\n post: <T>(url: string | URL | Request, options?: Options) =>\n kyClient.post(url, options).json<T>(),\n};\n","import { Chain } from '@swapkit/types';\n\nconst supportedChains = Object.values(Chain);\n\nexport const 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 type {\n CoinGeckoList,\n MayaList,\n PancakeswapETHList,\n PancakeswapList,\n PangolinList,\n StargateARBList,\n SushiswapList,\n ThorchainList,\n TraderjoeList,\n UniswapList,\n WoofiList,\n} from '@swapkit/tokens';\nimport { BaseDecimal, Chain } 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';\n\nimport type { NumberPrimitives } from './bigIntArithmetics.ts';\nimport { BigIntArithmetics, formatBigIntToSafeValue } from './bigIntArithmetics.ts';\nimport type { SwapKitValueType } from './swapKitNumber.ts';\n\ntype TokenTax = { buy: number; sell: number };\n\nconst safeValue = (value: NumberPrimitives, decimal: number) =>\n typeof value === 'bigint'\n ? formatBigIntToSafeValue({ value, bigIntDecimal: decimal, decimal })\n : value;\n\ntype AssetValueParams = { decimal: number; value: SwapKitValueType; tax?: TokenTax } & (\n | { chain: Chain; symbol: string }\n | { identifier: string }\n);\n\ntype TCTokenNames = (typeof ThorchainList)['tokens'][number]['identifier'];\n\ntype TokenNames =\n | TCTokenNames\n | (typeof CoinGeckoList)['tokens'][number]['identifier']\n | (typeof MayaList)['tokens'][number]['identifier']\n | (typeof PancakeswapETHList)['tokens'][number]['identifier']\n | (typeof PancakeswapList)['tokens'][number]['identifier']\n | (typeof PangolinList)['tokens'][number]['identifier']\n | (typeof StargateARBList)['tokens'][number]['identifier']\n | (typeof SushiswapList)['tokens'][number]['identifier']\n | (typeof TraderjoeList)['tokens'][number]['identifier']\n | (typeof WoofiList)['tokens'][number]['identifier']\n | (typeof UniswapList)['tokens'][number]['identifier'];\n\nlet staticTokensMap:\n | Map<TokenNames, { tax?: TokenTax; decimal: number; identifier: string }>\n | undefined;\n\nconst getStaticToken = (identifier: TokenNames) => {\n if (!staticTokensMap) {\n throw new Error('Static assets not loaded, call await AssetValue.loadStaticAssets() first');\n }\n const tokenInfo = staticTokensMap.get(identifier.toUpperCase() as TokenNames);\n\n return tokenInfo || { decimal: BaseDecimal.THOR, identifier: '' };\n};\n\nconst createAssetValue = async (assetString: string, value: NumberPrimitives = 0) => {\n validateIdentifier(assetString);\n\n const decimal = await getDecimal(getAssetInfo(assetString));\n const parsedValue = safeValue(value, decimal);\n\n return new AssetValue({ decimal, value: parsedValue, identifier: assetString });\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(params: AssetValueParams) {\n const identifier =\n 'identifier' in params ? params.identifier : `${params.chain}.${params.symbol}`;\n\n super(\n params.value instanceof BigIntArithmetics\n ? params.value\n : { decimal: params.decimal, value: params.value },\n );\n\n const assetInfo = getAssetInfo(identifier);\n\n this.type = getAssetType(assetInfo);\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 this.tax = params.tax;\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 // 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\n static fromStringSync(assetString: string, value: NumberPrimitives = 0) {\n const { isSynthetic } = getAssetInfo(assetString);\n const {\n tax,\n decimal,\n identifier: tokenIdentifier,\n } = getStaticToken(assetString as unknown as TokenNames);\n\n const parsedValue = safeValue(value, decimal);\n\n const asset = tokenIdentifier\n ? new AssetValue({ tax, decimal, identifier: tokenIdentifier, value: parsedValue })\n : isSynthetic\n ? new AssetValue({ tax, decimal: 8, identifier: assetString, value: parsedValue })\n : undefined;\n\n return asset;\n }\n\n static fromIdentifier(\n assetString: `${Chain}.${string}` | `${Chain}/${string}` | `${Chain}.${string}-${string}`,\n value: NumberPrimitives = 0,\n ) {\n return createAssetValue(assetString, value);\n }\n\n static fromIdentifierSync(identifier: TokenNames, value: NumberPrimitives = 0) {\n const { decimal, identifier: tokenIdentifier } = getStaticToken(identifier);\n const parsedValue = safeValue(value, decimal);\n\n return new AssetValue({ decimal, identifier: tokenIdentifier, value: parsedValue });\n }\n\n static fromChainOrSignature(assetString: CommonAssetString, value: NumberPrimitives = 0) {\n const { decimal, identifier } = getCommonAssetInfo(assetString);\n const parsedValue = safeValue(value, decimal);\n\n return new AssetValue({ value: parsedValue, 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 const tokensMap = Object.values(tokenPackages).reduce((acc, tokenList) => {\n tokenList?.tokens?.forEach(({ identifier, chain, ...rest }) => {\n acc.set(identifier as TokenNames, {\n identifier,\n decimal: 'decimals' in rest ? rest.decimals : BaseDecimal[chain as Chain],\n });\n });\n\n return acc;\n }, new Map<TokenNames, { decimal: number; identifier: string }>());\n\n staticTokensMap = tokensMap;\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 const 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 default:\n return asset.set(0.00000001);\n }\n};\n\nconst getAssetInfo = (identifier: string) => {\n const isSynthetic = identifier.slice(0, 14).includes('/');\n const [synthChain, synthSymbol] = identifier.split('.').pop()!.split('/');\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 /**\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":["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","T","A","part1","part2","part3","part4","part5","getAsymmetricAssetShare","assetDepth","numerator","getAsymmetricRuneWithdrawAmount","percent","getAsymmetricAssetWithdrawAmount","value","SwapKitNumber","getSymmetricPoolShare","getSymmetricWithdraw","name","getEstimatedPoolShare","runeAmount","assetAmount","R","P","runeAddAmount","assetAddAmount","rA","aR","ra","RA","denominator","liquidityUnitsAfterAdd","estimatedLiquidityUnits","newPoolUnits","getLiquiditySlippage","getShortenedSymbol","getMemoFor","memoType","options","MemoType","unbondAmount","owner","singleSide","basisPoints","targetAssetString","target","shortenedSymbol","asset","getTHORNameCost","year","validateTHORName","regex","derivationPathToString","network","chainId","account","change","index","HTTPError","response","request","code","title","status","reason","TimeoutError","isObject","validateAndMerge","sources","source","deepMerge","mergeHeaders","source1","source2","isHeadersInstance","key","returnValue","headers","supportsRequestStreams","duplexAccessed","hasContentType","supportsReadableStream","supportsRequest","supportsAbortController","supportsResponseStreams","supportsFormData","requestMethods","responseTypes","maxSafeTimeout","stop","kyOptionKeys","requestOptionsRegistry","normalizeRequestMethod","input","retryMethods","retryStatusCodes","retryAfterStatusCodes","defaultRetryOptions","attemptCount","normalizeRetryOptions","retry","timeout","init","abortController","resolve","reject","timeoutId","delay","ms","signal","abortHandler","findUnknownOptions","unknownOptions","Ky","ky","fn","hook","modifiedResponse","type","mimeType","originalSignal","searchParams","url","retryAfter","after","retryDelay","nonRequestOptions","onDownloadProgress","totalBytes","transferredBytes","controller","reader","read","done","createInstance","defaults","method","newDefaults","ky$1","kyClient","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","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","precisionDecimal","retrievePrecisionDecimal_fn","precisionDecimalMultiplier","acc","arg","compareToValue","decimals","padDecimal","integerPart","decimalPart","BigIntArithmetics","numberFormatter","splitValue","param","staticTokensMap","getStaticToken","createAssetValue","getAssetInfo","AssetValue","assetInfo","urlAsset","isSynthetic","tax","tokenIdentifier","tokenPackages","tokenList","rest","getMinAmountByChain","synthSymbol","adjustedIdentifier","errorMessages","SwapKitError","errorKey","sourceError"],"mappings":";;;;;;;;;;;;;AAKA,MAAMA,KAAsB,cAItBC,KAAsB,OAAO,EAAE,OAAAC,GAAO,IAAAC,QAA0C;AAChF,MAAA;AACI,UAAA,EAAE,QAAAC,MAAW,MAAMC,GAAc,KAAyBC,GAAWJ,CAAK,GAAG;AAAA,MACjF,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MACnB;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACnB,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ,CAAC,EAAE,IAAIC,EAAG,eAAe,MAAMH,GAAoB,GAAG,QAAQ;AAAA,MAAA,CACvE;AAAA,IAAA,CACF;AAED,WAAO,SAAS,OAAOI,CAAM,EAAE,SAAU,CAAA;AAAA,WAClCG,GAAO;AACd,mBAAQ,MAAMA,CAAK,GACZC,EAAYN,CAAK;AAAA,EAC1B;AACF,GAEMO,KAAqB,OAAOC,MAAmB;AACnD,MAAIA,MAAWC,EAAM;AAAU,WAAOH,EAAY;AAClD,QAAM,CAAG,EAAAI,CAAO,IAAIF,EAAO,MAAM,GAAG;AAEpC,SAAOE,KAAA,QAAAA,EAAS,WAAW,QACvBX,GAAoB,EAAE,OAAOU,EAAM,UAAU,IAAIC,EAAS,CAAA,IAC1DJ,EAAY;AAClB,GAEMK,KAAsB,OAAOH,MAAmB;AACpD,QAAM,CAAG,EAAAE,CAAO,IAAIF,EAAO,MAAM,GAAG;AAEpC,SAAOE,KAAA,QAAAA,EAAS,WAAW,QACvBX,GAAoB,EAAE,OAAOU,EAAM,WAAW,IAAIC,EAAQ,YAAc,EAAA,CAAC,IACzEJ,EAAY;AAClB,GAEMM,KAAqB,OAAOJ,MAC5BA,MAAWC,EAAM,oBAA0BH,EAAY,MAEpDA,EAAY,KAGRO,KAAa,OAAO,EAAE,OAAAb,GAAO,QAAAQ,QAA+C;AACvF,UAAQR,GAAO;AAAA,IACb,KAAKS,EAAM;AACT,aAAOF,GAAmBC,CAAM;AAAA,IAClC,KAAKC,EAAM;AACT,aAAOE,GAAoBH,CAAM;AAAA,IACnC,KAAKC,EAAM;AACT,aAAOG,GAAmBJ,CAAM;AAAA,IAClC;AACE,aAAOF,EAAYN,CAAK;AAAA,EAC5B;AACF,GAEac,KAA8C;AAAA,EACzD,CAACC,EAAU,OAAO,GAAG;AAAA,EACrB,CAACA,EAAU,IAAI,GAAG;AAAA,EAClB,CAACA,EAAU,OAAO,GAAG;AACvB,GAEaC,KAAa,CAAC,EAAE,OAAAhB,GAAO,QAAAQ,QAA+C;AACjF,UAAQR,GAAO;AAAA,IACb,KAAKS,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AACT,aAAOD,MAAWR;AAAA,IAEpB,KAAKS,EAAM;AAAA,IACX,KAAKA,EAAM;AACT,aAAiBD,MAAV;AAAA,IAET,KAAKC,EAAM;AACT,aAAOD,MAAW;AAAA,IAEpB,KAAKC,EAAM;AACT,aAAOD,MAAW;AAAA,IAEpB,KAAKC,EAAM;AACT,aAAOD,MAAW;AAAA,IACpB,KAAKC,EAAM;AACT,aAAOD,MAAW;AAAA,IACpB,KAAKC,EAAM;AACT,aAAOD,MAAW;AAAA,IACpB,KAAKC,EAAM;AACT,aAAOD,MAAW;AAAA,EACtB;AACF,GAEaS,KAAqB,CAChCC,MAC4C;AAC5C,UAAQA,GAAa;AAAA,IACnB,KAAK;AACH,aAAO,EAAE,YAAY,uDAAuD,SAAS,GAAG;AAAA,IAC1F,KAAK;AACH,aAAO,EAAE,YAAY,wDAAwD,SAAS,GAAG;AAAA,IAE3F,KAAKT,EAAM;AACT,aAAO,EAAE,YAAY,aAAa,SAASH,EAAYY,CAAW;IACpE,KAAKT,EAAM;AACT,aAAO,EAAE,YAAY,aAAa,SAASH,EAAYY,CAAW;IACpE,KAAKT,EAAM;AACT,aAAO,EAAE,YAAY,WAAW,SAASH,EAAYY,CAAW;IAClE,KAAKT,EAAM;AACT,aAAO,EAAE,YAAY,cAAc,SAASH,EAAY,KAAK;AAAA,IAC/D,KAAK;AACH,aAAO,EAAE,YAAY,aAAa,SAAS,EAAE;AAAA,IAE/C,KAAKG,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AACF,aAAA,EAAE,YAAY,GAAGS,CAAW,IAAIA,CAAW,IAAI,SAASZ,EAAYY,CAAW,EAAE;AAAA,EAC5F;AACF,GAEaC,KAAe,CAAC,EAAE,OAAAnB,GAAO,QAAAQ,QAA+C;AAC/E,MAAAA,EAAO,SAAS,GAAG;AAAU,WAAA;AAEjC,UAAQR,GAAO;AAAA,IACb,KAAKS,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AACF,aAAA;AAAA,IAET,KAAKA,EAAM;AACF,aAAAD,MAAW,SAAS,WAAWC,EAAM;AAAA,IAC9C,KAAKA,EAAM;AACT,aAAOD,MAAWC,EAAM,SAAS,WAAWA,EAAM;AAAA,IACpD,KAAKA,EAAM;AACF,aAAAD,MAAWC,EAAM,UAAU,WAAW;AAAA,IAC/C,KAAKA,EAAM;AACF,aAAAD,MAAWC,EAAM,UAAU,WAAW;AAAA,IAC/C,KAAKA,EAAM;AACF,aAAAD,MAAWC,EAAM,WAAW,WAAW;AAAA,IAChD,KAAKA,EAAM;AACT,aAAOD,MAAWC,EAAM,YAAY,WAAWA,EAAM;AAAA,IACvD,KAAKA,EAAM;AACF,aAAAD,MAAWC,EAAM,UAAU,WAAW;AAAA,IAE/C,KAAKA,EAAM;AACF,aAAA,CAACA,EAAM,UAAUA,EAAM,QAAQ,EAAE,SAASD,CAAe,IAAI,WAAW;AAAA,IACjF,KAAKC,EAAM;AACF,aAAA,CAACA,EAAM,UAAUA,EAAM,QAAQ,EAAE,SAASD,CAAe,IAAI,WAAW;AAAA,EACnF;AACF,GAEaY,KAAkB,CAACF,MAAwB;;AACtD,QAAM,CAAClB,GAAO,GAAGqB,CAAW,IAAIH,EAAY,MAAM,GAAG,GAC/CI,IAAQJ,EAAY,SAAS,GAAG,GAChCV,IAASa,EAAY,KAAK,GAAG,GAC7BE,KAASC,IAAAhB,KAAA,gBAAAA,EAAQ,MAAM,SAAd,gBAAAgB,EAAqB;AAEpC,SAAO,EAAE,OAAAxB,GAAO,QAAAQ,GAAQ,QAAAe,GAAQ,OAAAD,EAAM;AACxC,GAEMG,KAAqB,IAAI;AAAA,EAC7B;AAAA,EACA;AACF,GAEMC,KAAqB,CAACR,MAAwB;AAClD,QAAM,CAAClB,GAAOQ,CAAM,IAAIU,EAAY,MAAM,GAAG;AACzC,MAAA,CAACS,GAAa,SAAS3B,CAAiB;AAAU,WAAA;AACtD,QAAM,CAAG,EAAAU,CAAO,IAAIF,EAAO,MAAM,GAAG;AAEpC,SAAOQ,GAAW,EAAE,OAAAhB,GAAuB,QAAAQ,GAAQ,KAAK,CAAC,CAACE;AAC5D,GAEakB,KAAe,CAC1BC,MAOAA,EAAO,OAAO,CAACC,MAAU;AACvB,QAAMZ,IAAc,GAAGY,EAAM,KAAK,IAAIA,EAAM,MAAM;AAGhD,SAAA,CAACL,GAAmB,KAAKP,CAAW,KACpCQ,GAAmBR,CAAW,KAC9BY,EAAM,UAAU;AAEpB,CAAC,GC1LUC,KAAyB,CAAC;AAAA,EACrC,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AACF,MAA0C;AAClC,QAAA,IAAIC,EAAkBH,CAAc,GACpCI,IAAID,EAAkBF,CAAS,GAC/BI,IAAIF,EAAkBD,CAAS,GAE/BI,IAAQ,EAAE,IAAID,CAAC,GACfE,IAAQH,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,GACtBI,IAAQJ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GACtBK,IAAQ,EAAE,IAAI,CAAC,GACfC,IAAQN,EAAE,IAAIA,CAAC,EAAE,IAAIA,CAAC;AAIrB,SAFWE,EAAM,IAAIC,EAAM,IAAIC,CAAK,EAAE,IAAIC,CAAK,CAAC,EAEtC,IAAIC,CAAK;AAC5B,GAEaC,KAA0B,CAAC;AAAA,EACtC,gBAAAX;AAAA,EACA,WAAAC;AAAA,EACA,YAAAW;AACF,MAA2C;AACnC,QAAA,IAAIT,EAAkBH,CAAc,GACpCI,IAAID,EAAkBF,CAAS,GAC/BI,IAAIF,EAAkBS,CAAU,GAEhCN,IAAQ,EAAE,IAAID,CAAC,GACfE,IAAQH,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,GACtBI,IAAQJ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GACtBK,IAAQ,EAAE,IAAI,CAAC,GACfI,IAAYP,EAAM,IAAIC,EAAM,IAAIC,CAAK,EAAE,IAAIC,CAAK,CAAC,GACjDC,IAAQN,EAAE,IAAIA,CAAC,EAAE,IAAIA,CAAC;AAErB,SAAAS,EAAU,IAAIH,CAAK;AAC5B,GAEaI,KAAkC,CAAC;AAAA,EAC9C,SAAAC;AAAA,EACA,WAAAb;AAAA,EACA,gBAAAF;AAAA,EACA,WAAAC;AACF,MACEF,GAAuB,EAAE,WAAAG,GAAW,gBAAAF,GAAgB,WAAAC,GAAW,EAAE,IAAIc,CAAO,GAEjEC,KAAmC,CAAC;AAAA,EAC/C,SAAAD;AAAA,EACA,YAAAH;AAAA,EACA,gBAAAZ;AAAA,EACA,WAAAC;AACF,MACEU,GAAwB,EAAE,YAAAC,GAAY,gBAAAZ,GAAgB,WAAAC,GAAW,EAAE,IAAIc,CAAO,GAE1EZ,IAAoB,CAACc,MACzBC,EAAc,WAAW,OAAOD,CAAK,GAAG3C,EAAY,IAAI,GAE7C6C,KAAwB,CAAC;AAAA,EACpC,gBAAAnB;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAU;AACF,OAGQ;AAAA,EACN,aAAaT,EAAkBS,CAAU,EAAE,IAAIZ,CAAc,EAAE,IAAIC,CAAS;AAAA,EAC5E,YAAYE,EAAkBD,CAAS,EAAE,IAAIF,CAAc,EAAE,IAAIC,CAAS;AAC5E,IAEamB,KAAuB,CAAC;AAAA,EACnC,gBAAApB;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAU;AAAA,EACA,SAAAG;AACF,MAKE,OAAO;AAAA,EACL,OAAO,QAAQI,GAAsB,EAAE,gBAAAnB,GAAgB,WAAAC,GAAW,WAAAC,GAAW,YAAAU,GAAY,CAAC,EAAE;AAAA,IAC1F,CAAC,CAACS,GAAMJ,CAAK,MAAM,CAACI,GAAMJ,EAAM,IAAIF,CAAO,CAAC;AAAA,EAC9C;AACF,GAEWO,KAAwB,CAAC;AAAA,EACpC,WAAApB;AAAA,EACA,WAAAD;AAAA,EACA,YAAAW;AAAA,EACA,gBAAAZ;AAAA,EACA,YAAAuB;AAAA,EACA,aAAAC;AACF,MAKO;AACC,QAAAC,IAAI,IAAIP,EAAc,EAAE,OAAOhB,GAAW,SAAS,GAAG,GACtDG,IAAI,IAAIa,EAAc,EAAE,OAAON,GAAY,SAAS,GAAG,GACvDc,IAAI,IAAIR,EAAc,EAAE,OAAOjB,GAAW,SAAS,GAAG,GACtD0B,IAAgB,IAAIT,EAAc,EAAE,OAAOK,GAAY,SAAS,GAAG,GACnEK,IAAiB,IAAIV,EAAc,EAAE,OAAOM,GAAa,SAAS,GAAG,GAGrEK,IAAKF,EAAc,IAAItB,CAAC,GACxByB,IAAKF,EAAe,IAAIH,CAAC,GACzBM,KAAKJ,EAAc,IAAIC,CAAc,GACrCI,KAAKP,EAAE,IAAIpB,CAAC,GACZQ,KAAYa,EAAE,IAAIG,EAAG,IAAIC,EAAG,IAAIC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAC3CE,KAAcJ,EAAG,IAAIC,EAAG,IAAIE,GAAG,IAAI,CAAC,CAAC,CAAC,GACtCE,IAAyBrB,GAAU,IAAIoB,EAAW,GAClDE,IAA0BhC,EAAkBH,CAAc,EAAE,IAAIkC,CAAsB;AAE5F,MAAIA,EAAuB,aAAa,QAAQ,MAAM;AACpD,WAAOC,EAAwB,IAAIT,CAAC,EAAE,aAAa,QAAQ;AAIvD,QAAAU,KAAeV,EAAE,IAAIS,CAAuB;AAElD,SAAOA,EAAwB,IAAIC,EAAY,EAAE,aAAa,QAAQ;AACxE,GAEaC,KAAuB,CAAC;AAAA,EACnC,YAAAd;AAAA,EACA,aAAAC;AAAA,EACA,WAAAtB;AAAA,EACA,YAAAU;AACF,MAAkB;AAChB,MAAIW,MAAe,OAAOC,MAAgB,OAAOtB,MAAc,OAAOU,MAAe;AAC5E,WAAA;AAEH,QAAAa,IAAItB,EAAkBD,CAAS,GAC/BE,IAAID,EAAkBS,CAAU,GAChCgB,IAAiBzB,EAAkBqB,CAAW,GAC9CG,IAAgBxB,EAAkBoB,CAAU,GAE5CV,IAAYe,EAAe,IAAIH,CAAC,EAAE,IAAIrB,EAAE,IAAIuB,CAAa,CAAC,GAC1DM,IAAc7B,EAAE,IAAIuB,CAAa,EAAE,IAAIF,EAAE,IAAIrB,CAAC,CAAC;AAG9C,SAAA,KAAK,IAAIS,EAAU,IAAIoB,CAAW,EAAE,aAAa,QAAQ,CAAC;AACnE,GClKMK,KAAqB,CAAC;AAAA,EAC1B,QAAA9D;AAAA,EACA,QAAAe;AAAA,EACA,OAAAvB;AACF,MAIOA,MAAU,SAASuB,MAAW,QAAQ,GAAGA,CAAM,IAAIf,EAAO,MAAM,EAAE,CAAC,KAAKA,GAsBlE+D,KAAa,CAAqBC,GAAaC,MAA4B;AACtF,UAAQD,GAAU;AAAA,IAChB,KAAKE,EAAS;AAAA,IACd,KAAKA,EAAS,MAAM;AACZ,YAAA,EAAE,SAAAhE,EAAY,IAAA+D;AACb,aAAA,GAAGD,CAAQ,IAAI9D,CAAO;AAAA,IAC/B;AAAA,IAEA,KAAKgE,EAAS,QAAQ;AACd,YAAA,EAAE,SAAAhE,GAAS,cAAAiE,EAAiB,IAAAF;AAClC,aAAO,GAAGD,CAAQ,IAAI9D,CAAO,IAAIiE,IAAe,MAAM,CAAC;AAAA,IACzD;AAAA,IAEA,KAAKD,EAAS,mBAAmB;AAC/B,YAAM,EAAE,MAAArB,GAAM,OAAArD,GAAO,SAAAU,GAAS,OAAAkE,MAAUH;AACxC,aAAO,GAAGD,CAAQ,IAAInB,CAAI,IAAIrD,CAAK,IAAIU,CAAO,GAAGkE,IAAQ,IAAIA,CAAK,KAAK,EAAE;AAAA,IAC3E;AAAA,IAEA,KAAKF,EAAS,SAAS;AACrB,YAAM,EAAE,OAAA1E,GAAO,QAAAQ,GAAQ,SAAAE,GAAS,YAAAmE,MAAeJ;AAe/C,aAAOI,IACH,GAAGL,CAAQ,IAAIxE,CAAK,IAAIQ,CAAM,UAC9B,GAAGgE,CAAQ,KAfW,CAACxE,GAAcQ,MAA2B;AAClE,gBAAQR,GAAO;AAAA,UACb,KAAKS,EAAM;AACF,mBAAA;AAAA,UACT,KAAKA,EAAM;AACF,mBAAA;AAAA,UACT,KAAKA,EAAM;AACF,mBAAA;AAAA,UACT;AACS,mBAAA,GAAGT,CAAK,IAAIQ,CAAM;AAAA,QAC7B;AAAA,MAAA,GAKmCR,GAAOQ,CAAM,CAAC,IAAIE,KAAW,EAAE;AAAA,IACtE;AAAA,IAEA,KAAKgE,EAAS,UAAU;AACtB,YAAM,EAAE,OAAA1E,GAAO,QAAAuB,GAAQ,QAAAf,GAAQ,aAAAsE,GAAa,mBAAAC,GAAmB,YAAAF,EAC7D,IAAAJ,GAEIO,IAAS,CAACH,KAAcE,IAAoB,IAAIA,CAAiB,KAAK,IACtEE,IAAkBX,GAAmB,EAAE,OAAAtE,GAAO,QAAAQ,GAAQ,QAAAe,GAAQ;AAG7D,aAAA,GAAGiD,CAAQ,IAAIxE,CAAK,GAFN6E,IAAa,MAAM,GAEE,GAAGI,CAAe,IAAIH,CAAW,GAAGE,CAAM;AAAA,IACtF;AAAA,IAEA,KAAKN,EAAS;AAAA,IACd,KAAKA,EAAS,YAAY;AAClB,YAAA,EAAE,OAAAQ,GAAO,SAAAxE,EAAY,IAAA+D;AAE3B,aAAO,GAAGD,CAAQ,IAAIU,CAAK,IAAIxE,CAAO;AAAA,IACxC;AAAA,IAEA;AACS,aAAA;AAAA,EACX;AACF,GCnGayE,KAAkB,CAACC,MAAiB;AAC/C,MAAIA,IAAO;AAAS,UAAA,IAAI,MAAM,wBAAwB;AACtD,SAAO,KAAKA;AACd,GAEaC,KAAmB,CAAChC,MAAiB;AAChD,MAAIA,EAAK,SAAS;AAAW,WAAA;AAE7B,QAAMiC,IAAQ;AAEd,SAAO,CAAC,CAACjC,EAAK,MAAMiC,CAAK;AAC3B,GAEaC,KAAyB,CAAC,CAACC,GAASC,GAASC,GAASC,GAAQC,CAAK,MAGvE,GAAGJ,CAAO,KAAKC,CAAO,KAAKC,CAAO,KAAKC,CAAM,GAFlC,OAAOC,KAAU,WAEgC,KAAK,IAAIA,CAAK,EAAE;ACjB9E,MAAMC,UAAkB,MAAM;AAAA,EACjC,YAAYC,GAAUC,GAAStB,GAAS;AACpC,UAAMuB,IAAQF,EAAS,UAAUA,EAAS,WAAW,IAAKA,EAAS,SAAS,IACtEG,IAAQH,EAAS,cAAc,IAC/BI,IAAS,GAAGF,CAAI,IAAIC,CAAK,GAAG,QAC5BE,IAASD,IAAS,eAAeA,CAAM,KAAK;AAClD,UAAM,uBAAuBC,CAAM,EAAE,GACrC,OAAO,eAAe,MAAM,YAAY;AAAA,MACpC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS,GACD,OAAO,eAAe,MAAM,WAAW;AAAA,MACnC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS,GACD,OAAO,eAAe,MAAM,WAAW;AAAA,MACnC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS,GACD,KAAK,OAAO,aACZ,KAAK,WAAWL,GAChB,KAAK,UAAUC,GACf,KAAK,UAAUtB;AAAA,EAClB;AACL;AC/BO,MAAM2B,WAAqB,MAAM;AAAA,EACpC,YAAYL,GAAS;AACjB,UAAM,mBAAmB,GACzB,OAAO,eAAe,MAAM,WAAW;AAAA,MACnC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS,GACD,KAAK,OAAO,gBACZ,KAAK,UAAUA;AAAA,EAClB;AACL;ACXO,MAAMM,IAAW,CAACpD,MAAUA,MAAU,QAAQ,OAAOA,KAAU,UCAzDqD,IAAmB,IAAIC,MAAY;AAC5C,aAAWC,KAAUD;AACjB,SAAK,CAACF,EAASG,CAAM,KAAK,MAAM,QAAQA,CAAM,MAAMA,MAAW;AAC3D,YAAM,IAAI,UAAU,0CAA0C;AAGtE,SAAOC,EAAU,CAAA,GAAI,GAAGF,CAAO;AACnC,GACaG,KAAe,CAACC,IAAU,IAAIC,IAAU,CAAA,MAAO;AACxD,QAAM1G,IAAS,IAAI,WAAW,QAAQyG,CAAO,GACvCE,IAAoBD,aAAmB,WAAW,SAClDJ,IAAS,IAAI,WAAW,QAAQI,CAAO;AAC7C,aAAW,CAACE,GAAK7D,CAAK,KAAKuD,EAAO,QAAO;AACrC,IAAKK,KAAqB5D,MAAU,eAAgBA,MAAU,SAC1D/C,EAAO,OAAO4G,CAAG,IAGjB5G,EAAO,IAAI4G,GAAK7D,CAAK;AAG7B,SAAO/C;AACX,GAEauG,IAAY,IAAIF,MAAY;AACrC,MAAIQ,IAAc,CAAA,GACdC,IAAU,CAAA;AACd,aAAWR,KAAUD;AACjB,QAAI,MAAM,QAAQC,CAAM;AACpB,MAAK,MAAM,QAAQO,CAAW,MAC1BA,IAAc,CAAA,IAElBA,IAAc,CAAC,GAAGA,GAAa,GAAGP,CAAM;AAAA,aAEnCH,EAASG,CAAM,GAAG;AACvB,eAAS,CAACM,GAAK7D,CAAK,KAAK,OAAO,QAAQuD,CAAM;AAC1C,QAAIH,EAASpD,CAAK,KAAK6D,KAAOC,MAC1B9D,IAAQwD,EAAUM,EAAYD,CAAG,GAAG7D,CAAK,IAE7C8D,IAAc,EAAE,GAAGA,GAAa,CAACD,CAAG,GAAG7D,EAAK;AAEhD,MAAIoD,EAASG,EAAO,OAAO,MACvBQ,IAAUN,GAAaM,GAASR,EAAO,OAAO,GAC9CO,EAAY,UAAUC;AAAA,IAE7B;AAEL,SAAOD;AACX,GChDaE,MAA0B,MAAM;AACzC,MAAIC,IAAiB,IACjBC,IAAiB;AACrB,QAAMC,IAAyB,OAAO,WAAW,kBAAmB,YAC9DC,IAAkB,OAAO,WAAW,WAAY;AACtD,SAAID,KAA0BC,MAC1BF,IAAiB,IAAI,WAAW,QAAQ,yBAAyB;AAAA,IAC7D,MAAM,IAAI,WAAW,eAAgB;AAAA,IACrC,QAAQ;AAAA;AAAA,IAER,IAAI,SAAS;AACT,aAAAD,IAAiB,IACV;AAAA,IACV;AAAA,EACJ,CAAA,EAAE,QAAQ,IAAI,cAAc,IAE1BA,KAAkB,CAACC;AAC9B,MACaG,KAA0B,OAAO,WAAW,mBAAoB,YAChEC,KAA0B,OAAO,WAAW,kBAAmB,YAC/DC,KAAmB,OAAO,WAAW,YAAa,YAClDC,KAAiB,CAAC,OAAO,QAAQ,OAAO,SAAS,QAAQ,QAAQ,GAGjEC,KAAgB;AAAA,EACzB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AAAA,EACb,MAAM;AACV,GAEaC,IAAiB,YACjBC,KAAO,OAAO,MAAM,GACpBC,KAAe;AAAA,EACxB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,cAAc;AAAA,EACd,WAAW;AAAA,EACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,OAAO;AACX,GACaC,KAAyB;AAAA,EAClC,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AAAA,EACb,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,QAAQ;AACZ,GC7DaC,KAAyB,CAACC,MAAUP,GAAe,SAASO,CAAK,IAAIA,EAAM,YAAa,IAAGA,GAClGC,KAAe,CAAC,OAAO,OAAO,QAAQ,UAAU,WAAW,OAAO,GAClEC,KAAmB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GACrDC,KAAwB,CAAC,KAAK,KAAK,GAAG,GACtCC,IAAsB;AAAA,EACxB,OAAO;AAAA,EACP,SAASH;AAAA,EACT,aAAaC;AAAA,EACb,kBAAkBC;AAAA,EAClB,eAAe,OAAO;AAAA,EACtB,cAAc,OAAO;AAAA,EACrB,OAAO,CAAAE,MAAgB,MAAO,MAAMA,IAAe,KAAM;AAC7D,GACaC,KAAwB,CAACC,IAAQ,OAAO;AACjD,MAAI,OAAOA,KAAU;AACjB,WAAO;AAAA,MACH,GAAGH;AAAA,MACH,OAAOG;AAAA,IACnB;AAEI,MAAIA,EAAM,WAAW,CAAC,MAAM,QAAQA,EAAM,OAAO;AAC7C,UAAM,IAAI,MAAM,gCAAgC;AAEpD,MAAIA,EAAM,eAAe,CAAC,MAAM,QAAQA,EAAM,WAAW;AACrD,UAAM,IAAI,MAAM,oCAAoC;AAExD,SAAO;AAAA,IACH,GAAGH;AAAA,IACH,GAAGG;AAAA,IACH,kBAAkBJ;AAAA,EAC1B;AACA;AC9Be,eAAeK,GAAQzC,GAAS0C,GAAMC,GAAiBjE,GAAS;AAC3E,SAAO,IAAI,QAAQ,CAACkE,GAASC,MAAW;AACpC,UAAMC,IAAY,WAAW,MAAM;AAC/B,MAAIH,KACAA,EAAgB,MAAK,GAEzBE,EAAO,IAAIxC,GAAaL,CAAO,CAAC;AAAA,IAC5C,GAAWtB,EAAQ,OAAO;AAClB,IAAKA,EACA,MAAMsB,GAAS0C,CAAI,EACnB,KAAKE,CAAO,EACZ,MAAMC,CAAM,EACZ,KAAK,MAAM;AACZ,mBAAaC,CAAS;AAAA,IAClC,CAAS;AAAA,EACT,CAAK;AACL;ACjBe,eAAeC,GAAMC,GAAI,EAAE,QAAAC,KAAU;AAChD,SAAO,IAAI,QAAQ,CAACL,GAASC,MAAW;AACpC,IAAII,MACAA,EAAO,eAAc,GACrBA,EAAO,iBAAiB,SAASC,GAAc,EAAE,MAAM,GAAI,CAAE;AAEjE,aAASA,IAAe;AACpB,mBAAaJ,CAAS,GACtBD,EAAOI,EAAO,MAAM;AAAA,IACvB;AACD,UAAMH,IAAY,WAAW,MAAM;AAC/B,MAAAG,KAAA,QAAAA,EAAQ,oBAAoB,SAASC,IACrCN;IACH,GAAEI,CAAE;AAAA,EACb,CAAK;AACL;ACfO,MAAMG,KAAqB,CAACnD,GAAStB,MAAY;AACpD,QAAM0E,IAAiB,CAAA;AACvB,aAAWrC,KAAOrC;AACd,IAAI,EAAEqC,KAAOgB,OAA2B,EAAEhB,KAAOe,OAAiB,EAAEf,KAAOf,OACvEoD,EAAerC,CAAG,IAAIrC,EAAQqC,CAAG;AAGzC,SAAOqC;AACX;ACDO,MAAMC,EAAG;AAAA,EACZ,OAAO,OAAOpB,GAAOvD,GAAS;AAC1B,UAAM4E,IAAK,IAAID,EAAGpB,GAAOvD,CAAO,GAC1B6E,IAAK,YAAY;AACnB,UAAI,OAAOD,EAAG,SAAS,WAAY,YAAYA,EAAG,SAAS,UAAU1B;AACjE,cAAM,IAAI,WAAW,iDAAiDA,CAAc,EAAE;AAG1F,YAAM,QAAQ;AACd,UAAI7B,IAAW,MAAMuD,EAAG;AACxB,iBAAWE,KAAQF,EAAG,SAAS,MAAM,eAAe;AAEhD,cAAMG,IAAmB,MAAMD,EAAKF,EAAG,SAASA,EAAG,UAAUA,EAAG,kBAAkBvD,EAAS,MAAK,CAAE,CAAC;AACnG,QAAI0D,aAA4B,WAAW,aACvC1D,IAAW0D;AAAA,MAElB;AAED,UADAH,EAAG,kBAAkBvD,CAAQ,GACzB,CAACA,EAAS,MAAMuD,EAAG,SAAS,iBAAiB;AAC7C,YAAIhJ,IAAQ,IAAIwF,EAAUC,GAAUuD,EAAG,SAASA,EAAG,QAAQ;AAC3D,mBAAWE,KAAQF,EAAG,SAAS,MAAM;AAEjC,UAAAhJ,IAAQ,MAAMkJ,EAAKlJ,CAAK;AAE5B,cAAMA;AAAA,MACT;AAGD,UAAIgJ,EAAG,SAAS,oBAAoB;AAChC,YAAI,OAAOA,EAAG,SAAS,sBAAuB;AAC1C,gBAAM,IAAI,UAAU,oDAAoD;AAE5E,YAAI,CAAC9B;AACD,gBAAM,IAAI,MAAM,6EAA6E;AAEjG,eAAO8B,EAAG,QAAQvD,EAAS,MAAO,GAAEuD,EAAG,SAAS,kBAAkB;AAAA,MACrE;AACD,aAAOvD;AAAA,IACnB,GAEc5F,IADoBmJ,EAAG,SAAS,MAAM,QAAQ,SAASA,EAAG,QAAQ,OAAO,YAAa,CAAA,IACxDA,EAAG,OAAOC,CAAE,IAAIA,EAAE;AACtD,eAAW,CAACG,GAAMC,CAAQ,KAAK,OAAO,QAAQhC,EAAa;AACvD,MAAAxH,EAAOuJ,CAAI,IAAI,YAAY;AAEvB,QAAAJ,EAAG,QAAQ,QAAQ,IAAI,UAAUA,EAAG,QAAQ,QAAQ,IAAI,QAAQ,KAAKK,CAAQ;AAE7E,cAAM5D,KADgB,MAAM5F,GACG;AAC/B,YAAIuJ,MAAS,QAAQ;AAMjB,cALI3D,EAAS,WAAW,QAGJ,MAAMA,EAAS,MAAO,EAAC,YAAW,GACrB,eACZ;AACjB,mBAAO;AAEX,cAAIrB,EAAQ;AACR,mBAAOA,EAAQ,UAAU,MAAMqB,EAAS,KAAM,CAAA;AAAA,QAErD;AACD,eAAOA,EAAS2D,CAAI;MACpC;AAEQ,WAAOvJ;AAAA,EACV;AAAA;AAAA,EAED,YAAY8H,GAAOvD,IAAU,IAAI;AAmD7B,QAlDA,OAAO,eAAe,MAAM,WAAW;AAAA,MACnC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS,GACD,OAAO,eAAe,MAAM,mBAAmB;AAAA,MAC3C,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS,GACD,OAAO,eAAe,MAAM,eAAe;AAAA,MACvC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS,GACD,OAAO,eAAe,MAAM,UAAU;AAAA,MAClC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS,GACD,OAAO,eAAe,MAAM,YAAY;AAAA,MACpC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS,GACD,KAAK,SAASuD,GACd,KAAK,WAAW;AAAA;AAAA,MAEZ,aAAa,KAAK,OAAO,eAAe;AAAA,MACxC,GAAGvD;AAAA,MACH,SAASiC,GAAa,KAAK,OAAO,SAASjC,EAAQ,OAAO;AAAA,MAC1D,OAAOgC,EAAU;AAAA,QACb,eAAe,CAAE;AAAA,QACjB,aAAa,CAAE;AAAA,QACf,aAAa,CAAE;AAAA,QACf,eAAe,CAAE;AAAA,MACjC,GAAehC,EAAQ,KAAK;AAAA,MAChB,QAAQsD,GAAuBtD,EAAQ,UAAU,KAAK,OAAO,MAAM;AAAA;AAAA,MAEnE,WAAW,OAAOA,EAAQ,aAAa,EAAE;AAAA,MACzC,OAAO6D,GAAsB7D,EAAQ,KAAK;AAAA,MAC1C,iBAAiBA,EAAQ,oBAAoB;AAAA,MAC7C,SAASA,EAAQ,WAAW;AAAA,MAC5B,OAAOA,EAAQ,SAAS,WAAW,MAAM,KAAK,UAAU;AAAA,IACpE,GACY,OAAO,KAAK,UAAW,YAAY,EAAE,KAAK,kBAAkB,OAAO,KAAK,kBAAkB,WAAW;AACrG,YAAM,IAAI,UAAU,2CAA2C;AAEnE,QAAI,KAAK,SAAS,aAAa,OAAO,KAAK,UAAW,UAAU;AAC5D,UAAI,KAAK,OAAO,WAAW,GAAG;AAC1B,cAAM,IAAI,MAAM,4DAA4D;AAEhF,MAAK,KAAK,SAAS,UAAU,SAAS,GAAG,MACrC,KAAK,SAAS,aAAa,MAE/B,KAAK,SAAS,KAAK,SAAS,YAAY,KAAK;AAAA,IAChD;AACD,QAAI6C,IAAyB;AAEzB,UADA,KAAK,kBAAkB,IAAI,WAAW,gBAAe,GACjD,KAAK,SAAS,QAAQ;AACtB,cAAMqC,IAAiB,KAAK,SAAS;AACrC,aAAK,SAAS,OAAO,iBAAiB,SAAS,MAAM;AACjD,eAAK,gBAAgB,MAAMA,EAAe,MAAM;AAAA,QACpE,CAAiB;AAAA,MACJ;AACD,WAAK,SAAS,SAAS,KAAK,gBAAgB;AAAA,IAC/C;AAMD,QALI1C,OAEA,KAAK,SAAS,SAAS,SAE3B,KAAK,UAAU,IAAI,WAAW,QAAQ,KAAK,QAAQ,KAAK,QAAQ,GAC5D,KAAK,SAAS,cAAc;AAM5B,YAAM2C,IAAe,OAJI,OAAO,KAAK,SAAS,gBAAiB,WACzD,KAAK,SAAS,aAAa,QAAQ,OAAO,EAAE,IAC5C,IAAI,gBAAgB,KAAK,SAAS,YAAY,EAAE,SAAQ,IAGxDC,IAAM,KAAK,QAAQ,IAAI,QAAQ,qBAAqBD,CAAY;AAEtE,OAAMpC,MAAoB,KAAK,SAAS,gBAAgB,WAAW,YAC5D,KAAK,SAAS,gBAAgB,oBAAoB,EAAE,KAAK,SAAS,WAAW,KAAK,SAAS,QAAQ,cAAc,MACpH,KAAK,QAAQ,QAAQ,OAAO,cAAc,GAG9C,KAAK,UAAU,IAAI,WAAW,QAAQ,IAAI,WAAW,QAAQqC,GAAK,EAAE,GAAG,KAAK,QAAO,CAAE,GAAG,KAAK,QAAQ;AAAA,IACxG;AACD,IAAI,KAAK,SAAS,SAAS,WACvB,KAAK,SAAS,OAAO,KAAK,UAAU,KAAK,SAAS,IAAI,GACtD,KAAK,QAAQ,QAAQ,IAAI,gBAAgB,KAAK,SAAS,QAAQ,IAAI,cAAc,KAAK,kBAAkB,GACxG,KAAK,UAAU,IAAI,WAAW,QAAQ,KAAK,SAAS,EAAE,MAAM,KAAK,SAAS,KAAM,CAAA;AAAA,EAEvF;AAAA,EACD,qBAAqBxJ,GAAO;AAExB,QADA,KAAK,eACD,KAAK,cAAc,KAAK,SAAS,MAAM,SAAS,EAAEA,aAAiB+F,KAAe;AAClF,UAAI/F,aAAiBwF,GAAW;AAC5B,YAAI,CAAC,KAAK,SAAS,MAAM,YAAY,SAASxF,EAAM,SAAS,MAAM;AAC/D,iBAAO;AAEX,cAAMyJ,IAAazJ,EAAM,SAAS,QAAQ,IAAI,aAAa;AAC3D,YAAIyJ,KAAc,KAAK,SAAS,MAAM,iBAAiB,SAASzJ,EAAM,SAAS,MAAM,GAAG;AACpF,cAAI0J,IAAQ,OAAOD,CAAU;AAO7B,iBANI,OAAO,MAAMC,CAAK,IAClBA,IAAQ,KAAK,MAAMD,CAAU,IAAI,KAAK,QAGtCC,KAAS,KAET,KAAK,SAAS,MAAM,kBAAkB,UAAaA,IAAQ,KAAK,SAAS,MAAM,gBACxE,IAEJA;AAAA,QACV;AACD,YAAI1J,EAAM,SAAS,WAAW;AAC1B,iBAAO;AAAA,MAEd;AACD,YAAM2J,IAAa,KAAK,SAAS,MAAM,MAAM,KAAK,WAAW;AAC7D,aAAO,KAAK,IAAI,KAAK,SAAS,MAAM,cAAcA,CAAU;AAAA,IAC/D;AACD,WAAO;AAAA,EACV;AAAA,EACD,kBAAkBlE,GAAU;AACxB,WAAI,KAAK,SAAS,cACdA,EAAS,OAAO,YAAY,KAAK,SAAS,UAAU,MAAMA,EAAS,KAAI,CAAE,IAEtEA;AAAA,EACV;AAAA,EACD,MAAM,OAAOwD,GAAI;AACb,QAAI;AACA,aAAO,MAAMA,EAAE;AAAA,IAClB,SACMjJ,GAAO;AACV,YAAM0I,IAAK,KAAK,IAAI,KAAK,qBAAqB1I,CAAK,GAAGsH,CAAc;AACpE,UAAIoB,MAAO,KAAK,KAAK,cAAc,GAAG;AAClC,cAAMD,GAAMC,GAAI,EAAE,QAAQ,KAAK,SAAS,OAAM,CAAE;AAChD,mBAAWQ,KAAQ,KAAK,SAAS,MAAM;AASnC,cAPmB,MAAMA,EAAK;AAAA,YAC1B,SAAS,KAAK;AAAA,YACd,SAAS,KAAK;AAAA,YACd,OAAOlJ;AAAA,YACP,YAAY,KAAK;AAAA,UACzC,CAAqB,MAEkBuH;AACf;AAGR,eAAO,KAAK,OAAO0B,CAAE;AAAA,MACxB;AACD,YAAMjJ;AAAA,IACT;AAAA,EACJ;AAAA,EACD,MAAM,SAAS;AACX,eAAWkJ,KAAQ,KAAK,SAAS,MAAM,eAAe;AAElD,YAAMrJ,IAAS,MAAMqJ,EAAK,KAAK,SAAS,KAAK,QAAQ;AACrD,UAAIrJ,aAAkB,SAAS;AAC3B,aAAK,UAAUA;AACf;AAAA,MACH;AACD,UAAIA,aAAkB;AAClB,eAAOA;AAAA,IAEd;AACD,UAAM+J,IAAoBf,GAAmB,KAAK,SAAS,KAAK,QAAQ;AACxE,WAAI,KAAK,SAAS,YAAY,KACnB,KAAK,SAAS,MAAM,KAAK,QAAQ,MAAK,GAAIe,CAAiB,IAE/DzB,GAAQ,KAAK,QAAQ,MAAO,GAAEyB,GAAmB,KAAK,iBAAiB,KAAK,QAAQ;AAAA,EAC9F;AAAA;AAAA,EAED,QAAQnE,GAAUoE,GAAoB;AAClC,UAAMC,IAAa,OAAOrE,EAAS,QAAQ,IAAI,gBAAgB,CAAC,KAAK;AACrE,QAAIsE,IAAmB;AACvB,WAAItE,EAAS,WAAW,OAChBoE,KACAA,EAAmB,EAAE,SAAS,GAAG,YAAAC,GAAY,kBAAAC,KAAoB,IAAI,WAAU,CAAE,GAE9E,IAAI,WAAW,SAAS,MAAM;AAAA,MACjC,QAAQtE,EAAS;AAAA,MACjB,YAAYA,EAAS;AAAA,MACrB,SAASA,EAAS;AAAA,IAClC,CAAa,KAEE,IAAI,WAAW,SAAS,IAAI,WAAW,eAAe;AAAA,MACzD,MAAM,MAAMuE,GAAY;AACpB,cAAMC,IAASxE,EAAS,KAAK,UAAS;AACtC,QAAIoE,KACAA,EAAmB,EAAE,SAAS,GAAG,kBAAkB,GAAG,YAAAC,EAAY,GAAE,IAAI,WAAU,CAAE;AAExF,uBAAeI,IAAO;AAClB,gBAAM,EAAE,MAAAC,GAAM,OAAAvH,EAAK,IAAK,MAAMqH,EAAO,KAAI;AACzC,cAAIE,GAAM;AACN,YAAAH,EAAW,MAAK;AAChB;AAAA,UACH;AACD,cAAIH,GAAoB;AACpB,YAAAE,KAAoBnH,EAAM;AAC1B,kBAAMF,IAAUoH,MAAe,IAAI,IAAIC,IAAmBD;AAC1D,YAAAD,EAAmB,EAAE,SAAAnH,GAAS,kBAAAqH,GAAkB,YAAAD,EAAY,GAAElH,CAAK;AAAA,UACtE;AACD,UAAAoH,EAAW,QAAQpH,CAAK,GACxB,MAAMsH,EAAI;AAAA,QACb;AACD,cAAMA,EAAI;AAAA,MACb;AAAA,IACb,CAAS,GAAG;AAAA,MACA,QAAQzE,EAAS;AAAA,MACjB,YAAYA,EAAS;AAAA,MACrB,SAASA,EAAS;AAAA,IAC9B,CAAS;AAAA,EACJ;AACL;ACxSA;AAIA,MAAM2E,IAAiB,CAACC,MAAa;AAEjC,QAAMrB,IAAK,CAACrB,GAAOvD,MAAY2E,EAAG,OAAOpB,GAAO1B,EAAiBoE,GAAUjG,CAAO,CAAC;AACnF,aAAWkG,KAAUlD;AAEjB,IAAA4B,EAAGsB,CAAM,IAAI,CAAC3C,GAAOvD,MAAY2E,EAAG,OAAOpB,GAAO1B,EAAiBoE,GAAUjG,GAAS,EAAE,QAAAkG,EAAM,CAAE,CAAC;AAErG,SAAAtB,EAAG,SAAS,CAACuB,MAAgBH,EAAenE,EAAiBsE,CAAW,CAAC,GACzEvB,EAAG,SAAS,CAACuB,MAAgBH,EAAenE,EAAiBoE,GAAUE,CAAW,CAAC,GACnFvB,EAAG,OAAOzB,IACHyB;AACX,GACMA,KAAKoB,EAAc,GACzBI,KAAexB,ICdTrC,KACJ,OAAO,SAAW,MACd,KACA,EAAE,UAAU,2BAA2B,SAAS,6BAEhD8D,KAAWzB,GAAG,OAAO,EAAE,SAAArC,GAAS,CAAA,GAEzB7G,KAAgB;AAAA,EAC3B,KAAK,CAAI0J,GAA6BpF,MAAsBqG,GAAS,IAAIjB,GAAKpF,CAAO,EAAE,KAAQ;AAAA,EAC/F,MAAM,CAAIoF,GAA6BpF,MACrCqG,GAAS,KAAKjB,GAAKpF,CAAO,EAAE,KAAQ;AACxC,GCZMsG,KAAkB,OAAO,OAAOtK,CAAK,GAE9BuK,KAAqB,CAACC,IAAqB,OAAO;AACvD,QAAAC,IAAuBD,EAAW,eAElC,CAACjL,CAAK,IAAIkL,EAAqB,MAAM,GAAG;AAC1C,MAAAH,GAAgB,SAAS/K,CAAK;AAAU,WAAA;AAE5C,QAAM,CAACmL,CAAU,IAAID,EAAqB,MAAM,GAAG;AAC/C,MAAAH,GAAgB,SAASI,CAAU;AAAU,WAAA;AAEjD,QAAM,IAAI;AAAA,IACR,uBAAuBF,CAAU;AAAA,EAAA;AAErC,GCDMG,IAAkB,GAClBC,IAAe,CAACC,MAAoB,OAAO,OAAOA,CAAO,GACzDC,IAAwB,CAACC,MAAuB,KAAK,MAAM,WAAWA,EAAW,SAAU,CAAA,CAAC;AAE3F,SAASC,EAAwB;AAAA,EACtC,OAAAxI;AAAA,EACA,eAAAyI,IAAgBN;AAAA,EAChB,SAAAE,IAAUF;AACZ,GAIG;AACD,MAAIE,MAAY;AAAG,WAAOrI,EAAM;AAChC,QAAM0I,IAAa1I,IAAQ;AAC3B,MAAI2I,IAAc3I,EAAM,WAAW,UAAU0I,IAAa,IAAI,CAAC;AAEzD,QAAAE,IAAYP,KAAWM,EAAY,SAAS;AAElD,EAAIC,IAAY,MACAD,IAAA,IAAI,OAAOC,CAAS,IAAID;AAGlC,QAAAE,IAAeF,EAAY,SAASN;AAC1C,MAAIS,IAAgBH,EAAY,MAAM,CAACN,CAAO;AAG9C,SAAI,SAASS,EAAcL,CAAa,CAAC,KAAK,IAE5CK,IAAgB,GAAGA,EAAc,UAAU,GAAGL,IAAgB,CAAC,CAAC,IAC9D,SAASK,EAAcL,IAAgB,CAAC,CAAC,IAAI,GAC7C,SAAU,CAAA,KAGIK,IAAAA,EAAc,UAAU,GAAGL,CAAa,GAGnD,GAAGC,IAAa,MAAM,EAAE,GAAGC,EAAY,MAAM,GAAGE,CAAY,CAAC,IAAIC,CAAa,GAAG;AAAA,IACtF;AAAA,IACA;AAAA,EAAA;AAEJ;;AAEO,MAAMC,IAAN,MAAMA,EAAkB;AAAA,EA2B7B,YAAYC,GAAwB;AAgNpC,IAAAC,EAAA,MAAAC;AAmDA,IAAAD,EAAA,MAAAE;AAmBA,IAAAF,EAAA,MAAAG;AAKA,IAAAH,EAAA,MAAAI;AAeA,IAAAJ,EAAA,MAAAK;AApUA,IAAAC,EAAA,2BAA4B,OAAO;AACnC,IAAAA,EAAA,qBAAsB;AACtB,IAAAA,EAAA;AAyBQ,UAAAvJ,IAAQwJ,EAAeR,CAAM,GAC7BS,IAAY,OAAOT,KAAW;AAC/B,SAAA,UAAUS,IAAYT,EAAO,UAAU,QAG5C,KAAK,oBACHS,KAAa,uBAAuBT,IAChCA,EAAO,oBACPZ,EAAa,KAAK,IAAIsB,GAAiBC,EAAY3J,CAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,GACpF4J,EAAA,MAAKR,GAAAS,IAAL,WAAe7J;AAAA,EACjB;AAAA,EAjCA,OAAO,WAAWA,GAAeqI,GAAkB;AACjD,WAAO,IAAIU,EAAkB;AAAA,MAC3B,SAAAV;AAAA,MACA,OAAOG,EAAwB,EAAE,OAAAxI,GAAO,eAAeqI,GAAS,SAAAA,GAAS;AAAA,IAAA,CAC1E;AAAA,EACH;AAAA,EAEA,OAAO,cAAc;AAAA,IACnB,OAAArI;AAAA,IACA,MAAA8J;AAAA,IACA,IAAA9M;AAAA,EAAA,GAKC;AACD,WAAO,KAAK;AAAA,MACTgD,EAAM,aAAa,QAAQ,IAAIoI,EAAapL,CAAE,IAAKoL,EAAa0B,CAAI;AAAA,MACrE9M;AAAA,IAAA;AAAA,EAEJ;AAAA,EAeA,IAAIgD,GAA6B;AAE/B,WAAO,IAAI,KAAK,YAAY,EAAE,SAAS,KAAK,SAAS,OAAAA,GAAO,YAAY,KAAK,SAAS,EAAG,CAAA;AAAA,EAC3F;AAAA,EACA,OAAO+J,GAAiC;AACtC,WAAOH,EAAA,MAAKV,GAAAc,GAAL,WAAkB,OAAO,GAAGD;AAAA,EACrC;AAAA,EACA,OAAOA,GAAiC;AACtC,WAAOH,EAAA,MAAKV,GAAAc,GAAL,WAAkB,OAAO,GAAGD;AAAA,EACrC;AAAA,EACA,OAAOA,GAAiC;AACtC,WAAOH,EAAA,MAAKV,GAAAc,GAAL,WAAkB,OAAO,GAAGD;AAAA,EACrC;AAAA,EACA,OAAOA,GAAiC;AACtC,WAAOH,EAAA,MAAKV,GAAAc,GAAL,WAAkB,OAAO,GAAGD;AAAA,EACrC;AAAA,EACA,GAAG/J,GAAgC;AAC1B,WAAA4J,EAAA,MAAKT,GAAAc,GAAL,WAAiB,MAAMjK;AAAA,EAChC;AAAA,EACA,IAAIA,GAAgC;AAC3B,WAAA4J,EAAA,MAAKT,GAAAc,GAAL,WAAiB,OAAOjK;AAAA,EACjC;AAAA,EACA,GAAGA,GAAgC;AAC1B,WAAA4J,EAAA,MAAKT,GAAAc,GAAL,WAAiB,MAAMjK;AAAA,EAChC;AAAA,EACA,IAAIA,GAAgC;AAC3B,WAAA4J,EAAA,MAAKT,GAAAc,GAAL,WAAiB,OAAOjK;AAAA,EACjC;AAAA,EACA,QAAQA,GAAgC;AAC/B,WAAA4J,EAAA,MAAKT,GAAAc,GAAL,WAAiB,WAAWjK;AAAA,EACrC;AAAA;AAAA,EAGA,SAAuCwG,GAAkC;AACvE,UAAMxG,IAAQ,KAAK;AAAA,MACjB,KAAK;AAAA,MACL,KAAK,WAAWsI,EAAsB,KAAK,iBAAiB;AAAA,IAAA;AAG9D,YAAQ9B,GAAM;AAAA,MACZ,KAAK;AACH,eAAO,OAAOxG,CAAK;AAAA,MACrB,KAAK;AACI,eAAAA;AAAA,MACT,KAAK;AACM,eAAA,KAAK,cAAc,OAAO,OAAO,KAAK,WAAW,EAAE,IAC1D,KAAK;AAAA,IACX;AAAA,EACF;AAAA;AAAA,EAGA,aAA2CwG,GAAkC;AAC3E,UAAM0D,IAAU,KAAK,oBAAoB9B,EAAa,KAAK,WAAW/K,EAAY,IAAI,GAChF8M,IAAY,KAAK,cAAcD;AAErC,YAAQ1D,GAAM;AAAA,MACZ,KAAK;AACH,eAAO,OAAO2D,CAAS;AAAA,MACzB,KAAK;AACH,eAAOA,EAAU;MACnB,KAAK;AACI,eAAAA;AAAA,IACX;AAAA,EACF;AAAA,EAEA,eAAenK,GAAgCqI,GAAkB;AAC3D,QAAA,CAACA,KAAW,OAAOrI,KAAU;AAAU,aAAOA,EAAM;AAElD,UAAAoK,IAAcZ,EAAexJ,CAAK,GAClCqK,IAAYV,EAAYS,CAAW;AAErC,WAAAC,MAAc,OAAOA,MAAc,cAAoB,KACpDT,EAAA,MAAKN,GAAAgB,GAAL,WAAeD,GAAWhC;AAAA,EACnC;AAAA,EAEA,cAAckC,IAA4B,GAAG;AACrC,UAAA,CAACC,GAAKC,CAAG,IAAI,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG,GAC9CC,IAAUF,KAAO,IACjBnC,IAAUoC,KAAO;AAGvB,SAFoB,SAASC,CAAO,IAAIA,EAAQ,SAASrC,EAAQ,SAASA,EAAQ,WAE/DkC;AACV,aAAA,KAAK,SAAS,QAAQ;AAG3B,QAAAG,EAAQ,UAAUH;AACb,aAAAG,EAAQ,MAAM,GAAGH,CAAiB,EAAE,OAAOG,EAAQ,QAAQ,GAAG;AAGnE,QAAA,SAASA,CAAO;AACX,aAAA,GAAGA,CAAO,IAAIrC,EAAQ,MAAM,GAAGkC,IAAoBG,EAAQ,MAAM,CAAC,GAAG;AAAA,QAC1EH,IAAoBG,EAAQ;AAAA,QAC5B;AAAA,MAAA;AAIE,UAAAC,IAAiB,SAAStC,CAAO,GACjCuC,IAAgB,GAAGD,CAAc,GAAG,MAAM,GAAGJ,CAAiB;AAEpE,WAAO,KAAKK,EAAc;AAAA,MACxBvC,EAAQ,SAAS,GAAGsC,CAAc,GAAG,SAASC,EAAc;AAAA,MAC5D;AAAA,IACD,CAAA;AAAA,EACH;AAAA,EAEA,QAAQC,IAAsB,GAAG;AACzB,UAAA,CAACL,GAAKC,CAAG,IAAI,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG,GAC9CC,IAAUF,KAAO,IACjBnC,IAAUoC,KAAO;AAEnB,QAAA,SAASC,CAAO;AACX,aAAA,GAAGA,CAAO,IAAIrC,EAAQ,MAAM,GAAGwC,CAAW,CAAC,GAAG,OAAOA,GAAa,GAAG;AAGxE,UAAAF,IAAiB,SAAStC,CAAO,GACjCuC,IAAgB,GAAGD,CAAc,GAAG,MAAM,GAAGE,CAAW;AAE9D,WAAO,KAAKD,EAAc;AAAA,MACxBvC,EAAQ,SAAS,GAAGsC,CAAc,GAAG,SAASC,EAAc;AAAA,MAC5D;AAAA,IACD,CAAA;AAAA,EACH;AAAA,EAEA,eAAeE,IAAS,GAAG;AACnB,UAAA9K,IAAQ,KAAK,SAAS,QAAQ,GAC9B+K,IAAgB,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,GAAG,GACvDC,IAAO,KAAK,MAAM,KAAK,MAAM,KAAK,IAAIhL,CAAK,CAAC,IAAI,CAAC,GACjDiL,IAASF,EAAcC,CAAI;AAEjC,QAAI,CAACC;AAAe,aAAA,KAAK,SAAS,QAAQ;AAEpC,UAAAC,IAAQ,OAAOF,IAAO;AAG5B,WAAO,IAFQhL,IAAQkL,GAEN,QAAQJ,CAAM,CAAC,GAAGG,CAAM;AAAA,EAC3C;AAAA,EAEA,WACEE,IAAW,KACX;AAAA,IACE,kBAAAC,IAAmB;AAAA,IACnB,SAAA/C,IAAU;AAAA,IACV,kBAAAgD,IAAmB;AAAA,IACnB,mBAAAC,IAAoB;AAAA,EACtB,IAAI,IACJ;AACM,UAAAtL,IAAQ,KAAK,SAAS,QAAQ,GAC9B,CAACwK,GAAKC,IAAM,EAAE,IAAIzK,EAAM,QAAQ,CAAC,EAAE,MAAM,GAAG,GAC5C0K,IAAUF,EAAI,QAAQ,yBAAyBc,CAAiB,GAEhEC,IACJ,CAACf,KAAO,CAACC,IACL,SACAD,MAAQ,MACN,GAAG,WAAW,KAAKC,CAAG,EAAE,CAAC,GAAG,QAAQ,KAAKY,CAAgB,IACzD,GAAGX,CAAO,GAAG,SAASD,CAAG,IAAI,GAAGY,CAAgB,GAAGZ,EAAI,MAAM,GAAGpC,CAAO,CAAC,KAAK,EAAE;AAEhF,WAAA,GAAG+C,MAAqB,UAAUD,IAAW,EAAE,GAAGI,CAAW,GAClEH,MAAqB,QAAQD,IAAW,EAC1C;AAAA,EACF;AAAA,EAEA,wBAAwBnL,GAAeqI,GAAkB;AACjD,UAAAI,IAAgBJ,KAAW,KAAK,WAAWF,GAC3CqD,IAA4B,KAAK;AAAA,MACrC/C;AAAA,MACAH,EAAsB,KAAK,iBAAiB;AAAA,IAAA,GAExCI,IAAa1I,IAAQ,IAErB2I,IAAc3I,EAAM,WAAW,UAAU0I,IAAa,IAAI,CAAC,GAC3DE,IAAY4C,KAA6B7C,EAAY,SAAS,IAE9D8C,IAAoB7C,IAAY,IAAI,IAAI,OAAOA,CAAS,IAAID,IAAcA,GAE1EE,IAAe4C,EAAkB,SAASD;AAChD,QAAI1C,IAAgB2C,EAAkB,MAAM,CAACD,CAAyB;AAGtE,WAAI,SAAS1C,EAAcL,CAAa,CAAC,KAAK,IAE5CK,IAAgB,GAAGA,EAAc,UAAU,GAAGL,IAAgB,CAAC,CAAC,IAC9D,SAASK,EAAcL,IAAgB,CAAC,CAAC,IAAI,GAC7C,SAAU,CAAA,KAGIK,IAAAA,EAAc,UAAU,GAAGL,CAAa,GAGnD,GAAGC,IAAa,MAAM,EAAE,GAAG+C,EAAkB;AAAA,MAClD;AAAA,MACA5C;AAAA,IAAA,CACD,IAAIC,CAAa,GAAG,QAAQ,UAAU,EAAE;AAAA,EAC3C;AAmGF;AAjGEI,IAAA,eAAAc,IAAA,SAAatC,MAA0CqC,GAAuC;AAC5F,QAAM2B,IAAmB9B,EAAA,MAAKP,GAAAsC,GAAL,WAA+B,MAAM,GAAG5B,IAC3D1B,IAAU,KAAK,IAAIqD,GAAkBpD,EAAsB,KAAK,iBAAiB,CAAC,GAClFsD,IAA6BxD,EAAaC,CAAO,GAEjDpL,IAAS8M,EAAK;AAAA,IAClB,CAAC8B,GAAaC,MAAQ;AACpB,YAAM9L,IAAQ,KAAK,eAAe8L,GAAKzD,CAAO;AAE9C,cAAQX,GAAQ;AAAA,QACd,KAAK;AACH,iBAAOmE,IAAM7L;AAAAA,QACf,KAAK;AACH,iBAAO6L,IAAM7L;AAAAA,QASf,KAAK;AACH,iBAAQ6L,IAAM7L,IAAS4L;AAAA,QACzB,KAAK,OAAO;AACV,cAAI5L,MAAU;AAAU,kBAAA,IAAI,WAAW,kBAAkB;AACzD,iBAAQ6L,IAAMD,IAA8B5L;AAAAA,QAC9C;AAAA,QACA;AACS,iBAAA6L;AAAA,MACX;AAAA,IACF;AAAA;AAAA,IAEC,KAAK,cAAcD,IAA8B,KAAK;AAAA,EAAA,GAGnD5L,IAAQwI,EAAwB;AAAA,IACpC,eAAeH;AAAA,IACf,SAAAA;AAAA,IACA,OAAOpL;AAAA,EAAA,CACR;AAGM,SAAA,IAAI,KAAK,YAAY;AAAA,IAC1B,mBAAmBmL,EAAaC,CAAO;AAAA,IACvC,SAAS,KAAK;AAAA,IACd,OAAArI;AAAA,IACA,YAAY,KAAK,SAAS;AAAA,EAAA,CAC3B;AACH,GAEAmJ,IAAA,eAAAc,IAAA,SAAYvC,MAAoDqC,GAAiC;AAC/F,QAAM1B,IAAUuB,EAAA,MAAKP,GAAAsC,GAAL,WAA+B,MAAM,GAAG5B,IAClD/J,IAAQ,KAAK,eAAe+J,EAAK,CAAC,GAAG1B,CAAO,GAC5C0D,IAAiB,KAAK,eAAe,MAAM1D,CAAO;AAExD,UAAQX,GAAQ;AAAA,IACd,KAAK;AACH,aAAOqE,IAAiB/L;AAAA,IAC1B,KAAK;AACH,aAAO+L,KAAkB/L;AAAA,IAC3B,KAAK;AACH,aAAO+L,IAAiB/L;AAAA,IAC1B,KAAK;AACH,aAAO+L,KAAkB/L;AAAA,IAC3B,KAAK;AACH,aAAO+L,MAAmB/L;AAAA,EAC9B;AACF,GAEAoJ,IAAA,eAAAS,cAAU7J,GAAgC;AAClC,QAAAqK,IAAYV,EAAY3J,CAAK,KAAK;AACnC,OAAA,cAAc4J,EAAA,MAAKN,GAAAgB,GAAL,WAAeD;AACpC,GAEAhB,IAAA,eAAAsC,gBAA6B5B,GAAiC;AAC5D,QAAMiC,IAAWjC,EACd,IAAI,CAAC+B,MACa,OAAOA,KAAQ,WAE5BA,EAAI,WAAWxD,EAAsBwD,EAAI,iBAAiB,IAC1DpC,GAAiBC,EAAYmC,CAAG,CAAC,CAGtC,EACA,OAAO,OAAO;AAEjB,SAAO,KAAK,IAAI,GAAGE,GAAU7D,CAAe;AAC9C,GAEAmB,IAAA,eAAAgB,IAAA,SAAUtK,GAAeqI,GAAkB;AACzC,QAAME,IAAaF,IAAUD,EAAaC,CAAO,IAAI,KAAK,mBACpD4D,IAAa3D,EAAsBC,CAAU,GAC7C,CAAC2D,IAAc,IAAIC,IAAc,EAAE,IAAInM,EAAM,MAAM,GAAG;AAErD,SAAA,OAAO,GAAGkM,CAAW,GAAGC,EAAY,OAAOF,GAAY,GAAG,CAAC,EAAE;AACtE;AA3UK,IAAMG,IAANrD;AA8UP,MAAMsD,KAAkB,KAAK,aAAa,YAAY;AAAA,EACpD,aAAa;AAAA,EACb,uBAAuB;AACzB,CAAC;AAED,SAAS1C,EAAY3J,GAAgC;AAG7C,QAAAsM,IAAa,GADjB,OAAOtM,KAAU,WAAWqM,GAAgB,OAAOrM,CAAK,IAAIwJ,EAAexJ,CAAK,CACjD,GAAG,WAAW,KAAK,GAAG,EAAE,MAAM,GAAG;AAElE,SAAOsM,EAAW,SAAS,IACvB,GAAGA,EAAW,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,IAAIA,EAAW,GAAG,EAAE,CAAC,KACxDA,EAAW,CAAC;AAClB;AAEA,SAAS5C,GAAiB1J,GAAe;;AACvC,QAAMgM,MAAWzN,IAAAyB,EAAM,MAAM,GAAG,EAAE,CAAC,MAAlB,gBAAAzB,EAAqB,WAAU;AACzC,SAAA,KAAK,IAAIyN,GAAU7D,CAAe;AAC3C;AAEA,SAASqB,EAAe+C,GAAuB;AACtC,SAAA,OAAOA,KAAU,WACpB,cAAcA,IACZA,EAAM,SAAS,QAAQ,IACvBA,EAAM,QACRA;AACN;ACzYA,MAAMlC,IAAY,CAACrK,GAAyBqI,MAC1C,OAAOrI,KAAU,WACbwI,EAAwB,EAAE,OAAAxI,GAAO,eAAeqI,GAAS,SAAAA,EAAS,CAAA,IAClErI;AAsBN,IAAIwM;AAIJ,MAAMC,KAAiB,CAACzE,MAA2B;AACjD,MAAI,CAACwE;AACG,UAAA,IAAI,MAAM,0EAA0E;AAI5F,SAFkBA,EAAgB,IAAIxE,EAAW,YAA2B,CAAA,KAExD,EAAE,SAAS3K,EAAY,MAAM,YAAY;AAC/D,GAEMqP,IAAmB,OAAOzO,GAAqB+B,IAA0B,MAAM;AACnF,EAAA+H,GAAmB9J,CAAW;AAE9B,QAAMoK,IAAU,MAAMzK,GAAW+O,EAAa1O,CAAW,CAAC,GACpDsN,IAAclB,EAAUrK,GAAOqI,CAAO;AAErC,SAAA,IAAIuE,EAAW,EAAE,SAAAvE,GAAS,OAAOkD,GAAa,YAAYtN,GAAa;AAChF;AAEO,MAAM2O,UAAmBR,EAAkB;AAAA,EAUhD,YAAYpD,GAA0B;AAC9B,UAAAhB,IACJ,gBAAgBgB,IAASA,EAAO,aAAa,GAAGA,EAAO,KAAK,IAAIA,EAAO,MAAM;AAE/E;AAAA,MACEA,EAAO,iBAAiBoD,IACpBpD,EAAO,QACP,EAAE,SAASA,EAAO,SAAS,OAAOA,EAAO,MAAM;AAAA,IAAA;AAhBvD,IAAAO,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,oBAAa;AACb,IAAAA,EAAA,qBAAc;AACd,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAYQ,UAAAsD,IAAYF,EAAa3E,CAAU;AAEpC,SAAA,OAAO9J,GAAa2O,CAAS,GAClC,KAAK,QAAQA,EAAU,OACvB,KAAK,SAASA,EAAU,QACxB,KAAK,SAASA,EAAU,QACxB,KAAK,UAAUA,EAAU,SACzB,KAAK,cAAcA,EAAU,aAC7B,KAAK,aAAaA,EAAU,YAE5B,KAAK,MAAM7D,EAAO;AAAA,EACpB;AAAA,EAEA,WAAW;AACF,WAAA,KAAK,cAAc,KAAK,SAAS,GAAG,KAAK,KAAK,IAAI,KAAK,MAAM;AAAA,EACtE;AAAA,EAEA,QAAQ;AACN,WAAO,KAAK,cAAc,GAAG,KAAK,KAAK,IAAI,KAAK,OAAO,QAAQ,KAAK,GAAG,CAAC,KAAK,KAAK;EACpF;AAAA,EAEA,GAAG,EAAE,OAAAjM,GAAO,QAAAQ,KAA4C;AACtD,WAAO,KAAK,UAAUR,KAAS,KAAK,WAAWQ;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,QAAQuP,GAAkB9M,IAA0B,GAAG;AAC5D,UAAM,CAACjD,GAAOuB,GAAQf,CAAM,IAAIuP,EAAS,MAAM,GAAG;AAC9C,QAAA,CAAC/P,KAAS,CAACuB;AAAc,YAAA,IAAI,MAAM,mBAAmB;AAEpD,UAAAL,IACJlB,MAAUS,EAAM,aAAaD,IAAS,GAAGR,CAAK,IAAIuB,CAAM,IAAIf,CAAM,KAAKuP;AAElE,WAAAJ,EAAiBzO,GAAa+B,CAAK;AAAA,EAC5C;AAAA,EAEA,OAAO,WAAW/B,GAAqB+B,IAA0B,GAAG;AAC3D,WAAA0M,EAAiBzO,GAAa+B,CAAK;AAAA,EAC5C;AAAA,EAEA,OAAO,eAAe/B,GAAqB+B,IAA0B,GAAG;AACtE,UAAM,EAAE,aAAA+M,EAAA,IAAgBJ,EAAa1O,CAAW,GAC1C;AAAA,MACJ,KAAA+O;AAAA,MACA,SAAA3E;AAAA,MACA,YAAY4E;AAAA,IAAA,IACVR,GAAexO,CAAoC,GAEjDsN,IAAclB,EAAUrK,GAAOqI,CAAO;AAQrC,WANO4E,IACV,IAAIL,EAAW,EAAE,KAAAI,GAAK,SAAA3E,GAAS,YAAY4E,GAAiB,OAAO1B,EAAY,CAAC,IAChFwB,IACE,IAAIH,EAAW,EAAE,KAAAI,GAAK,SAAS,GAAG,YAAY/O,GAAa,OAAOsN,GAAa,IAC/E;AAAA,EAGR;AAAA,EAEA,OAAO,eACLtN,GACA+B,IAA0B,GAC1B;AACO,WAAA0M,EAAiBzO,GAAa+B,CAAK;AAAA,EAC5C;AAAA,EAEA,OAAO,mBAAmBgI,GAAwBhI,IAA0B,GAAG;AAC7E,UAAM,EAAE,SAAAqI,GAAS,YAAY4E,EAAgB,IAAIR,GAAezE,CAAU,GACpEuD,IAAclB,EAAUrK,GAAOqI,CAAO;AAErC,WAAA,IAAIuE,EAAW,EAAE,SAAAvE,GAAS,YAAY4E,GAAiB,OAAO1B,GAAa;AAAA,EACpF;AAAA,EAEA,OAAO,qBAAqBtN,GAAgC+B,IAA0B,GAAG;AACvF,UAAM,EAAE,SAAAqI,GAAS,YAAAL,EAAW,IAAIhK,GAAmBC,CAAW,GACxDsN,IAAclB,EAAUrK,GAAOqI,CAAO;AAE5C,WAAO,IAAIuE,EAAW,EAAE,OAAOrB,GAAa,SAAAlD,GAAS,YAAAL,GAAY;AAAA,EACnE;AAAA,EAEA,OAAO,mBAAmB;AACxB,WAAO,IAAI;AAAA,MACT,OAAOtC,GAASC,MAAW;AACrB,YAAA;AACI,gBAAAuH,IAAgB,MAAM,OAAO,iBAAiB;AAYlC,UAAAV,IAXA,OAAO,OAAOU,CAAa,EAAE,OAAO,CAACrB,GAAKsB,MAAc;;AAC7D,oBAAA5O,IAAA4O,KAAA,gBAAAA,EAAA,WAAA,QAAA5O,EAAQ,QAAQ,CAAC,EAAE,YAAAyJ,GAAY,OAAAjL,GAAO,GAAGqQ,QAAW;AAC7D,cAAAvB,EAAI,IAAI7D,GAA0B;AAAA,gBAChC,YAAAA;AAAA,gBACA,SAAS,cAAcoF,IAAOA,EAAK,WAAW/P,EAAYN,CAAc;AAAA,cAAA,CACzE;AAAA,YAAA,IAGI8O;AAAA,UAAA,GACF,oBAAA,IAAA,CAA0D,GAIzDnG,EAAA,EAAE,IAAI,GAAA,CAAM;AAAA,iBACbtI,GAAO;AACd,kBAAQ,MAAMA,CAAK,GACZuI,EAAA;AAAA,YACL,IAAI;AAAA,YACJ,OAAAvI;AAAA,YACA,SACE;AAAA,UAAA,CACH;AAAA,QACH;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ;AACF;AAEa,MAAAiQ,KAAsB,CAACtQ,MAAiB;AAC7C,QAAAkF,IAAQ2K,EAAW,qBAAqB7P,CAAK;AAEnD,UAAQA,GAAO;AAAA,IACb,KAAKS,EAAM;AAAA,IACX,KAAKA,EAAM;AAAA,IACX,KAAKA,EAAM;AACF,aAAAyE,EAAM,IAAI,QAAU;AAAA,IAE7B,KAAKzE,EAAM;AACF,aAAAyE,EAAM,IAAI,UAAU;AAAA,IAE7B,KAAKzE,EAAM;AAAA,IACX,KAAKA,EAAM;AACF,aAAAyE,EAAM,IAAI,IAAU;AAAA,IAE7B,KAAKzE,EAAM;AAAA,IACX,KAAKA,EAAM;AACF,aAAAyE,EAAM,IAAI,CAAC;AAAA,IAEpB;AACS,aAAAA,EAAM,IAAI,IAAU;AAAA,EAC/B;AACF,GAEM0K,IAAe,CAAC3E,MAAuB;AAC3C,QAAM+E,IAAc/E,EAAW,MAAM,GAAG,EAAE,EAAE,SAAS,GAAG,GAClD,CAACE,GAAYoF,CAAW,IAAItF,EAAW,MAAM,GAAG,EAAE,IAAA,EAAO,MAAM,GAAG,GAClEuF,IACJvF,EAAW,SAAS,GAAG,KAAK,CAAC+E,IAAc/E,IAAa,GAAGxK,EAAM,SAAS,IAAI8P,CAAW,IAErF,CAACvQ,GAAOQ,CAAM,IAAIgQ,EAAmB,MAAM,GAAG,GAC9C,CAACjP,GAAQb,CAAO,KAAKsP,IAAcO,IAAc/P,GAAQ,MAAM,GAAG;AAEjE,SAAA;AAAA,IACL,SAASE,KAAA,gBAAAA,EAAS;AAAA,IAClB,OAAAV;AAAA,IACA,YAAYgB,GAAW,EAAE,OAAAhB,GAAO,QAAAQ,GAAQ;AAAA,IACxC,aAAAwP;AAAA,IACA,SACGA,IAAc,GAAG7E,CAAU,MAAM,OACjCzK,IAAU,GAAGa,CAAM,KAAIb,KAAA,gBAAAA,EAAS,kBAAiB,EAAE,KAAKF;AAAA,IAC3D,QAAAe;AAAA,EAAA;AAEJ,GC3PMkP,KAAgB;AAAA;AAAA;AAAA;AAAA,EAIpB,kCAAkC;AAAA,EAClC,kDAAkD;AAAA,EAClD,mBAAmB;AAAA,EACnB,6BAA6B;AAAA,EAC7B,8CAA8C;AAAA,EAC9C,mBAAmB;AAAA;AAAA;AAAA;AAAA,EAInB,iCAAiC;AAAA,EACjC,qCAAqC;AAAA,EACrC,yCAAyC;AAAA,EACzC,oCAAoC;AAAA,EACpC,kCAAkC;AAAA,EAClC,kCAAkC;AAAA,EAClC,iCAAiC;AAAA,EACjC,+BAA+B;AAAA;AAAA;AAAA;AAAA,EAI/B,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,gCAAgC;AAAA,EAChC,8BAA8B;AAAA,EAC9B,uCAAuC;AAAA,EACvC,kCAAkC;AAAA,EAClC,6BAA6B;AAAA,EAC7B,oCAAoC;AAAA;AAAA;AAAA;AAAA,EAIpC,gCAAgC;AAAA,EAChC,8CAA8C;AAAA,EAC9C,+CAA+C;AAAA,EAC/C,kDAAkD;AAAA,EAClD,+CAA+C;AAAA,EAC/C,gDAAgD;AAAA,EAChD,2CAA2C;AAAA,EAC3C,4CAA4C;AAAA,EAC5C,iCAAiC;AAAA,EACjC,wCAAwC;AAAA,EACxC,mDAAmD;AAAA,EACnD,oCAAoC;AAAA,EACpC,yCAAyC;AAAA,EACzC,uCAAuC;AAAA;AAAA;AAAA;AAAA,EAKvC,gCAAgC;AAAA;AAAA;AAAA;AAAA,EAKhC,mCAAmC;AACrC;AAIO,MAAMC,WAAqB,MAAM;AAAA,EACtC,YAAYC,GAAgBC,GAAmB;AACrC,YAAA,MAAMA,GAAa,EAAE,OAAOA,KAAA,gBAAAA,EAAa,OAAO,SAASA,KAAA,gBAAAA,EAAa,QAAA,CAAS,GAEjF,MAAAD,GAAU,EAAE,OAAO,EAAE,MAAMF,GAAcE,CAAQ,GAAG,SAASA,EAAS,EAAG,CAAA,GACxE,OAAA,eAAe,MAAMD,GAAa,SAAS;AAAA,EACpD;AACF;AClEO,MAAMxN,UAAsBmM,EAAkB;AAAA,EACnD,GAAGpM,GAAyB;AACnB,WAAA,KAAK,QAAQA,CAAK;AAAA,EAC3B;AAAA,EAEA,OAAO,WAAWA,GAAeqI,GAAkB;AACjD,WAAO,IAAIpI,EAAc;AAAA,MACvB,SAAAoI;AAAA,MACA,OAAOG,EAAwB,EAAE,OAAAxI,GAAO,eAAeqI,GAAS,SAAAA,GAAS;AAAA,IAAA,CAC1E;AAAA,EACH;AACF;","x_google_ignoreList":[4,5,6,7,8,9,10,11,12,13,14]}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/helpers/asset.ts","../src/helpers/liquidity.ts","../src/helpers/memo.ts","../src/helpers/others.ts","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/errors/HTTPError.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/errors/TimeoutError.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/is.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/merge.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/core/constants.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/normalize.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/timeout.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/delay.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/utils/options.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/core/Ky.js","../../../../node_modules/.pnpm/ky@1.1.3/node_modules/ky/distribution/index.js","../src/helpers/request.ts","../src/helpers/validators.ts","../src/modules/bigIntArithmetics.ts","../src/modules/assetValue.ts","../src/modules/swapKitError.ts","../src/modules/swapKitNumber.ts"],"sourcesContent":["import type { EVMChain } from '@swapkit/types';\nimport { BaseDecimal, Chain, ChainToRPC, EVMChainList, FeeOption } from '@swapkit/types';\n\nimport { RequestClient } from '../index.ts';\n\nconst getDecimalMethodHex = '0x313ce567';\n\nexport type CommonAssetString = 'MAYA.MAYA' | 'ETH.THOR' | 'ETH.vTHOR' | 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 'ETH.THOR':\n return { identifier: 'ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044', decimal: 18 };\n case 'ETH.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 'MAYA.MAYA':\n return { identifier: 'MAYA.MAYA', decimal: 4 };\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 * 10 ** 8}`;\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","// eslint-lint-disable-next-line @typescript-eslint/naming-convention\nexport class HTTPError extends Error {\n constructor(response, request, options) {\n const code = (response.status || response.status === 0) ? response.status : '';\n const title = response.statusText || '';\n const status = `${code} ${title}`.trim();\n const reason = status ? `status code ${status}` : 'an unknown error';\n super(`Request failed with ${reason}`);\n Object.defineProperty(this, \"response\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'HTTPError';\n this.response = response;\n this.request = request;\n this.options = options;\n }\n}\n//# sourceMappingURL=HTTPError.js.map","export class TimeoutError extends Error {\n constructor(request) {\n super('Request timed out');\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = 'TimeoutError';\n this.request = request;\n }\n}\n//# sourceMappingURL=TimeoutError.js.map","// eslint-disable-next-line @typescript-eslint/ban-types\nexport const isObject = (value) => value !== null && typeof value === 'object';\n//# sourceMappingURL=is.js.map","import { isObject } from './is.js';\nexport const validateAndMerge = (...sources) => {\n for (const source of sources) {\n if ((!isObject(source) || Array.isArray(source)) && source !== undefined) {\n throw new TypeError('The `options` argument must be an object');\n }\n }\n return deepMerge({}, ...sources);\n};\nexport const mergeHeaders = (source1 = {}, source2 = {}) => {\n const result = new globalThis.Headers(source1);\n const isHeadersInstance = source2 instanceof globalThis.Headers;\n const source = new globalThis.Headers(source2);\n for (const [key, value] of source.entries()) {\n if ((isHeadersInstance && value === 'undefined') || value === undefined) {\n result.delete(key);\n }\n else {\n result.set(key, value);\n }\n }\n return result;\n};\n// TODO: Make this strongly-typed (no `any`).\nexport const deepMerge = (...sources) => {\n let returnValue = {};\n let headers = {};\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n }\n else if (isObject(source)) {\n for (let [key, value] of Object.entries(source)) {\n if (isObject(value) && key in returnValue) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = { ...returnValue, [key]: value };\n }\n if (isObject(source.headers)) {\n headers = mergeHeaders(headers, source.headers);\n returnValue.headers = headers;\n }\n }\n }\n return returnValue;\n};\n//# sourceMappingURL=merge.js.map","export const supportsRequestStreams = (() => {\n let duplexAccessed = false;\n let hasContentType = false;\n const supportsReadableStream = typeof globalThis.ReadableStream === 'function';\n const supportsRequest = typeof globalThis.Request === 'function';\n if (supportsReadableStream && supportsRequest) {\n hasContentType = 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 duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n }\n return duplexAccessed && !hasContentType;\n})();\nexport const supportsAbortController = typeof globalThis.AbortController === 'function';\nexport const supportsResponseStreams = typeof globalThis.ReadableStream === 'function';\nexport const supportsFormData = typeof globalThis.FormData === 'function';\nexport const requestMethods = ['get', 'post', 'put', 'patch', 'head', 'delete'];\nconst validate = () => undefined;\nvalidate();\nexport const responseTypes = {\n json: 'application/json',\n text: 'text/*',\n formData: 'multipart/form-data',\n arrayBuffer: '*/*',\n blob: '*/*',\n};\n// The maximum value of a 32bit int (see issue #117)\nexport const maxSafeTimeout = 2147483647;\nexport const stop = Symbol('stop');\nexport const kyOptionKeys = {\n json: true,\n parseJson: true,\n searchParams: true,\n prefixUrl: true,\n retry: true,\n timeout: true,\n hooks: true,\n throwHttpErrors: true,\n onDownloadProgress: true,\n fetch: true,\n};\nexport const requestOptionsRegistry = {\n method: true,\n headers: true,\n body: true,\n mode: true,\n credentials: true,\n cache: true,\n redirect: true,\n referrer: true,\n referrerPolicy: true,\n integrity: true,\n keepalive: true,\n signal: true,\n window: true,\n dispatcher: true,\n duplex: true,\n};\n//# sourceMappingURL=constants.js.map","import { requestMethods } from '../core/constants.js';\nexport const normalizeRequestMethod = (input) => requestMethods.includes(input) ? input.toUpperCase() : input;\nconst retryMethods = ['get', 'put', 'head', 'delete', 'options', 'trace'];\nconst retryStatusCodes = [408, 413, 429, 500, 502, 503, 504];\nconst retryAfterStatusCodes = [413, 429, 503];\nconst defaultRetryOptions = {\n limit: 2,\n methods: retryMethods,\n statusCodes: retryStatusCodes,\n afterStatusCodes: retryAfterStatusCodes,\n maxRetryAfter: Number.POSITIVE_INFINITY,\n backoffLimit: Number.POSITIVE_INFINITY,\n delay: attemptCount => 0.3 * (2 ** (attemptCount - 1)) * 1000,\n};\nexport const normalizeRetryOptions = (retry = {}) => {\n if (typeof retry === 'number') {\n return {\n ...defaultRetryOptions,\n limit: retry,\n };\n }\n if (retry.methods && !Array.isArray(retry.methods)) {\n throw new Error('retry.methods must be an array');\n }\n if (retry.statusCodes && !Array.isArray(retry.statusCodes)) {\n throw new Error('retry.statusCodes must be an array');\n }\n return {\n ...defaultRetryOptions,\n ...retry,\n afterStatusCodes: retryAfterStatusCodes,\n };\n};\n//# sourceMappingURL=normalize.js.map","import { TimeoutError } from '../errors/TimeoutError.js';\n// `Promise.race()` workaround (#91)\nexport default async function timeout(request, init, abortController, options) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n if (abortController) {\n abortController.abort();\n }\n reject(new TimeoutError(request));\n }, options.timeout);\n void options\n .fetch(request, init)\n .then(resolve)\n .catch(reject)\n .then(() => {\n clearTimeout(timeoutId);\n });\n });\n}\n//# sourceMappingURL=timeout.js.map","// https://github.com/sindresorhus/delay/tree/ab98ae8dfcb38e1593286c94d934e70d14a4e111\nexport default async function delay(ms, { signal }) {\n return new Promise((resolve, reject) => {\n if (signal) {\n signal.throwIfAborted();\n signal.addEventListener('abort', abortHandler, { once: true });\n }\n function abortHandler() {\n clearTimeout(timeoutId);\n reject(signal.reason);\n }\n const timeoutId = setTimeout(() => {\n signal?.removeEventListener('abort', abortHandler);\n resolve();\n }, ms);\n });\n}\n//# sourceMappingURL=delay.js.map","import { kyOptionKeys, requestOptionsRegistry } from '../core/constants.js';\nexport const findUnknownOptions = (request, options) => {\n const unknownOptions = {};\n for (const key in options) {\n if (!(key in requestOptionsRegistry) && !(key in kyOptionKeys) && !(key in request)) {\n unknownOptions[key] = options[key];\n }\n }\n return unknownOptions;\n};\n//# sourceMappingURL=options.js.map","import { HTTPError } from '../errors/HTTPError.js';\nimport { TimeoutError } from '../errors/TimeoutError.js';\nimport { deepMerge, mergeHeaders } from '../utils/merge.js';\nimport { normalizeRequestMethod, normalizeRetryOptions } from '../utils/normalize.js';\nimport timeout from '../utils/timeout.js';\nimport delay from '../utils/delay.js';\nimport { findUnknownOptions } from '../utils/options.js';\nimport { maxSafeTimeout, responseTypes, stop, supportsAbortController, supportsFormData, supportsResponseStreams, supportsRequestStreams, } from './constants.js';\nexport class Ky {\n static create(input, options) {\n const ky = new Ky(input, options);\n const fn = async () => {\n if (typeof ky._options.timeout === 'number' && ky._options.timeout > maxSafeTimeout) {\n throw new RangeError(`The \\`timeout\\` option cannot be greater than ${maxSafeTimeout}`);\n }\n // Delay the fetch so that body method shortcuts can set the Accept header\n await Promise.resolve();\n let response = await ky._fetch();\n for (const hook of ky._options.hooks.afterResponse) {\n // eslint-disable-next-line no-await-in-loop\n const modifiedResponse = await hook(ky.request, ky._options, ky._decorateResponse(response.clone()));\n if (modifiedResponse instanceof globalThis.Response) {\n response = modifiedResponse;\n }\n }\n ky._decorateResponse(response);\n if (!response.ok && ky._options.throwHttpErrors) {\n let error = new HTTPError(response, ky.request, ky._options);\n for (const hook of ky._options.hooks.beforeError) {\n // eslint-disable-next-line no-await-in-loop\n error = await hook(error);\n }\n throw error;\n }\n // If `onDownloadProgress` is passed, it uses the stream API internally\n /* istanbul ignore next */\n if (ky._options.onDownloadProgress) {\n if (typeof ky._options.onDownloadProgress !== 'function') {\n throw new TypeError('The `onDownloadProgress` option must be a function');\n }\n if (!supportsResponseStreams) {\n throw new Error('Streams are not supported in your environment. `ReadableStream` is missing.');\n }\n return ky._stream(response.clone(), ky._options.onDownloadProgress);\n }\n return response;\n };\n const isRetriableMethod = ky._options.retry.methods.includes(ky.request.method.toLowerCase());\n const result = (isRetriableMethod ? ky._retry(fn) : fn());\n for (const [type, mimeType] of Object.entries(responseTypes)) {\n result[type] = async () => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n ky.request.headers.set('accept', ky.request.headers.get('accept') || mimeType);\n const awaitedResult = await result;\n const response = awaitedResult.clone();\n if (type === 'json') {\n if (response.status === 204) {\n return '';\n }\n const arrayBuffer = await response.clone().arrayBuffer();\n const responseSize = arrayBuffer.byteLength;\n if (responseSize === 0) {\n return '';\n }\n if (options.parseJson) {\n return options.parseJson(await response.text());\n }\n }\n return response[type]();\n };\n }\n return result;\n }\n // eslint-disable-next-line complexity\n constructor(input, options = {}) {\n Object.defineProperty(this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"abortController\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_retryCount\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_input\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._input = input;\n 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 ...options,\n headers: mergeHeaders(this._input.headers, options.headers),\n hooks: deepMerge({\n beforeRequest: [],\n beforeRetry: [],\n beforeError: [],\n afterResponse: [],\n }, options.hooks),\n method: normalizeRequestMethod(options.method ?? this._input.method),\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n prefixUrl: String(options.prefixUrl || ''),\n retry: normalizeRetryOptions(options.retry),\n throwHttpErrors: options.throwHttpErrors !== false,\n timeout: options.timeout ?? 10000,\n fetch: options.fetch ?? globalThis.fetch.bind(globalThis),\n };\n if (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 }\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 }\n if (!this._options.prefixUrl.endsWith('/')) {\n this._options.prefixUrl += '/';\n }\n this._input = this._options.prefixUrl + this._input;\n }\n if (supportsAbortController) {\n this.abortController = new globalThis.AbortController();\n if (this._options.signal) {\n const originalSignal = this._options.signal;\n this._options.signal.addEventListener('abort', () => {\n this.abortController.abort(originalSignal.reason);\n });\n }\n this._options.signal = this.abortController.signal;\n }\n if (supportsRequestStreams) {\n // @ts-expect-error - Types are outdated.\n this._options.duplex = 'half';\n }\n this.request = new globalThis.Request(this._input, this._options);\n if (this._options.searchParams) {\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const textSearchParams = typeof this._options.searchParams === 'string'\n ? this._options.searchParams.replace(/^\\?/, '')\n : new URLSearchParams(this._options.searchParams).toString();\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const searchParams = '?' + textSearchParams;\n const url = this.request.url.replace(/(?:\\?.*?)?(?=#|$)/, searchParams);\n // To provide correct form boundary, Content-Type header should be deleted each time when new Request instantiated from another one\n if (((supportsFormData && this._options.body instanceof globalThis.FormData)\n || this._options.body instanceof URLSearchParams) && !(this._options.headers && this._options.headers['content-type'])) {\n this.request.headers.delete('content-type');\n }\n // The spread of `this.request` is required as otherwise it misses the `duplex` option for some reason and throws.\n this.request = new globalThis.Request(new globalThis.Request(url, { ...this.request }), this._options);\n }\n if (this._options.json !== undefined) {\n this._options.body = JSON.stringify(this._options.json);\n this.request.headers.set('content-type', this._options.headers.get('content-type') ?? 'application/json');\n this.request = new globalThis.Request(this.request, { body: this._options.body });\n }\n }\n _calculateRetryDelay(error) {\n this._retryCount++;\n if (this._retryCount < this._options.retry.limit && !(error instanceof TimeoutError)) {\n if (error instanceof HTTPError) {\n if (!this._options.retry.statusCodes.includes(error.response.status)) {\n return 0;\n }\n const retryAfter = error.response.headers.get('Retry-After');\n if (retryAfter && this._options.retry.afterStatusCodes.includes(error.response.status)) {\n let after = Number(retryAfter);\n if (Number.isNaN(after)) {\n after = Date.parse(retryAfter) - Date.now();\n }\n else {\n after *= 1000;\n }\n if (this._options.retry.maxRetryAfter !== undefined && after > this._options.retry.maxRetryAfter) {\n return 0;\n }\n return after;\n }\n if (error.response.status === 413) {\n return 0;\n }\n }\n const retryDelay = this._options.retry.delay(this._retryCount);\n return Math.min(this._options.retry.backoffLimit, retryDelay);\n }\n return 0;\n }\n _decorateResponse(response) {\n if (this._options.parseJson) {\n response.json = async () => this._options.parseJson(await response.text());\n }\n return response;\n }\n async _retry(fn) {\n try {\n return await fn();\n }\n catch (error) {\n const ms = Math.min(this._calculateRetryDelay(error), maxSafeTimeout);\n if (ms !== 0 && this._retryCount > 0) {\n await delay(ms, { signal: this._options.signal });\n for (const hook of this._options.hooks.beforeRetry) {\n // eslint-disable-next-line no-await-in-loop\n const hookResult = await hook({\n request: this.request,\n options: this._options,\n error: error,\n retryCount: this._retryCount,\n });\n // If `stop` is returned from the hook, the retry process is stopped\n if (hookResult === stop) {\n return;\n }\n }\n return this._retry(fn);\n }\n throw error;\n }\n }\n async _fetch() {\n for (const hook of this._options.hooks.beforeRequest) {\n // eslint-disable-next-line no-await-in-loop\n const result = await hook(this.request, this._options);\n if (result instanceof Request) {\n this.request = result;\n break;\n }\n if (result instanceof Response) {\n return result;\n }\n }\n const nonRequestOptions = findUnknownOptions(this.request, this._options);\n if (this._options.timeout === false) {\n return this._options.fetch(this.request.clone(), nonRequestOptions);\n }\n return timeout(this.request.clone(), nonRequestOptions, this.abortController, this._options);\n }\n /* istanbul ignore next */\n _stream(response, onDownloadProgress) {\n const totalBytes = Number(response.headers.get('content-length')) || 0;\n let transferredBytes = 0;\n if (response.status === 204) {\n if (onDownloadProgress) {\n onDownloadProgress({ percent: 1, totalBytes, transferredBytes }, new Uint8Array());\n }\n return new globalThis.Response(null, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n return new globalThis.Response(new globalThis.ReadableStream({\n async start(controller) {\n const reader = response.body.getReader();\n if (onDownloadProgress) {\n onDownloadProgress({ percent: 0, transferredBytes: 0, totalBytes }, new Uint8Array());\n }\n async function read() {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n return;\n }\n if (onDownloadProgress) {\n transferredBytes += value.byteLength;\n const percent = totalBytes === 0 ? 0 : transferredBytes / totalBytes;\n onDownloadProgress({ percent, transferredBytes, totalBytes }, value);\n }\n controller.enqueue(value);\n await read();\n }\n await read();\n },\n }), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n}\n//# sourceMappingURL=Ky.js.map","/*! MIT License © Sindre Sorhus */\nimport { Ky } from './core/Ky.js';\nimport { requestMethods, stop } from './core/constants.js';\nimport { validateAndMerge } from './utils/merge.js';\nconst createInstance = (defaults) => {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n const ky = (input, options) => Ky.create(input, validateAndMerge(defaults, options));\n for (const method of requestMethods) {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n ky[method] = (input, options) => Ky.create(input, validateAndMerge(defaults, options, { method }));\n }\n ky.create = (newDefaults) => createInstance(validateAndMerge(newDefaults));\n ky.extend = (newDefaults) => createInstance(validateAndMerge(defaults, newDefaults));\n ky.stop = stop;\n return ky;\n};\nconst ky = createInstance();\nexport default ky;\nexport { HTTPError } from './errors/HTTPError.js';\nexport { TimeoutError } from './errors/TimeoutError.js';\n//# sourceMappingURL=index.js.map","import type { Options } from 'ky';\nimport ky from 'ky';\n\nconst headers =\n typeof window !== 'undefined'\n ? {}\n : { referrer: 'https://sk.thorswap.net', referer: 'https://sk.thorswap.net' };\n\nconst kyClient = ky.create({ headers });\n\nexport const RequestClient = {\n get: <T>(url: string | URL | Request, options?: Options) => kyClient.get(url, options).json<T>(),\n post: <T>(url: string | URL | Request, options?: Options) =>\n kyClient.post(url, options).json<T>(),\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 } 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 // 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 { isSynthetic } = getAssetInfo(assetString);\n const tokenInfo = staticTokensMap.get(assetString.toUpperCase() as TokenNames);\n\n if (!tokenInfo) {\n console.error(\n `Asset ${assetString} is not loaded. Use AssetValue.loadStaticAssets() to load it`,\n );\n return undefined;\n }\n\n const { tax, decimal, identifier } = tokenInfo;\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 tokenInfo = staticTokensMap.get(assetString);\n\n if (!tokenInfo) {\n console.error(\n `Asset ${assetString} is not loaded. Use AssetValue.loadStaticAssets() to load it`,\n );\n return undefined;\n }\n\n const { tax, decimal, identifier } = tokenInfo;\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 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 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] = identifier.split('.').pop()!.split('/');\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 /**\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":["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","s","toTCSwapKitNumber","T","A","part1","part2","part3","part4","part5","getAsymmetricAssetShare","assetDepth","numerator","getAsymmetricRuneWithdrawAmount","percent","getAsymmetricAssetWithdrawAmount","value","SwapKitNumber","getSymmetricPoolShare","getSymmetricWithdraw","name","getEstimatedPoolShare","runeAmount","assetAmount","R","P","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","HTTPError","response","request","code","title","status","reason","TimeoutError","isObject","validateAndMerge","sources","source","deepMerge","mergeHeaders","source1","source2","isHeadersInstance","key","returnValue","headers","supportsRequestStreams","duplexAccessed","hasContentType","supportsReadableStream","supportsRequest","supportsAbortController","supportsResponseStreams","supportsFormData","requestMethods","responseTypes","maxSafeTimeout","stop","kyOptionKeys","requestOptionsRegistry","normalizeRequestMethod","input","retryMethods","retryStatusCodes","retryAfterStatusCodes","defaultRetryOptions","attemptCount","normalizeRetryOptions","retry","timeout","init","abortController","resolve","reject","timeoutId","delay","ms","signal","abortHandler","findUnknownOptions","unknownOptions","Ky","ky","fn","hook","modifiedResponse","type","mimeType","originalSignal","searchParams","url","retryAfter","after","retryDelay","nonRequestOptions","onDownloadProgress","totalBytes","transferredBytes","controller","reader","read","done","createInstance","defaults","method","newDefaults","ky$1","kyClient","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","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","precisionDecimal","retrievePrecisionDecimal_fn","precisionDecimalMultiplier","acc","arg","compareToValue","decimals","padDecimal","integerPart","decimalPart","BigIntArithmetics","numberFormatter","splitValue","param","staticTokensMap","AssetValue","tax","assetInfo","getAssetInfo","urlAsset","createAssetValue","isSynthetic","tokenInfo","tokenPackages","tokenList","rest","getMinAmountByChain","staticToken","synthSymbol","adjustedIdentifier","errorMessages","SwapKitError","errorKey","sourceError"],"mappings":"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","x_google_ignoreList":[4,5,6,7,8,9,10,11,12,13,14]}
|
package/package.json
CHANGED
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
"vitest": "1.0.4",
|
|
11
11
|
"@internal/config": "null-rc.0",
|
|
12
12
|
"@swapkit/tokens": "1.0.0-rc.29",
|
|
13
|
-
"@swapkit/types": "1.0.0-rc.
|
|
13
|
+
"@swapkit/types": "1.0.0-rc.29"
|
|
14
14
|
},
|
|
15
15
|
"eslintConfig": {
|
|
16
16
|
"extends": "../../../internal/eslint-config"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
19
|
"@swapkit/tokens": "1.0.0-rc.29",
|
|
20
|
-
"@swapkit/types": "1.0.0-rc.
|
|
20
|
+
"@swapkit/types": "1.0.0-rc.29"
|
|
21
21
|
},
|
|
22
22
|
"exports": {
|
|
23
23
|
".": {
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"repository": "https://github.com/thorswap/SwapKit.git",
|
|
43
43
|
"type": "module",
|
|
44
44
|
"types": "./dist/index.d.ts",
|
|
45
|
-
"version": "1.0.0-rc.
|
|
45
|
+
"version": "1.0.0-rc.54",
|
|
46
46
|
"scripts": {
|
|
47
47
|
"build": "vite build",
|
|
48
48
|
"clean": "rm -rf dist vite.config.ts.* .turbo node_modules",
|