@swapkit/helpers 1.0.0-rc.52 → 1.0.0-rc.53

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 CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var Te=Object.create;var D=Object.defineProperty;var ve=Object.getOwnPropertyDescriptor;var Se=Object.getOwnPropertyNames;var $e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Ie=(s,e,t)=>e in s?D(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var Be=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Se(e))!Re.call(s,r)&&r!==t&&D(s,r,{get:()=>e[r],enumerable:!(n=ve(e,r))||n.enumerable});return s};var Me=(s,e,t)=>(t=s!=null?Te($e(s)):{},Be(e||!s||!s.__esModule?D(t,"default",{value:s,enumerable:!0}):t,s));var p=(s,e,t)=>(Ie(s,typeof e!="symbol"?e+"":e,t),t),Oe=(s,e,t)=>{if(!e.has(s))throw TypeError("Cannot "+t)};var w=(s,e,t)=>{if(e.has(s))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(s):e.set(s,t)};var d=(s,e,t)=>(Oe(s,e,"access private method"),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@swapkit/types"),Ee="0x313ce567",re=async({chain:s,to:e})=>{try{const{result:t}=await ge.post(i.ChainToRPC[s],{headers:{accept:"*/*","content-type":"application/json","cache-control":"no-cache"},body:JSON.stringify({id:44,jsonrpc:"2.0",method:"eth_call",params:[{to:e.toLowerCase(),data:Ee},"latest"]})});return parseInt(BigInt(t).toString())}catch(t){return console.error(t),i.BaseDecimal[s]}},qe=async s=>{if(s===i.Chain.Ethereum)return i.BaseDecimal.ETH;const[,e]=s.split("-");return e!=null&&e.startsWith("0x")?re({chain:i.Chain.Ethereum,to:e}):i.BaseDecimal.ETH},xe=async s=>{const[,e]=s.split("-");return e!=null&&e.startsWith("0x")?re({chain:i.Chain.Avalanche,to:e.toLowerCase()}):i.BaseDecimal.AVAX},Pe=async s=>(s===i.Chain.BinanceSmartChain,i.BaseDecimal.BSC),ie=async({chain:s,symbol:e})=>{switch(s){case i.Chain.Ethereum:return qe(e);case i.Chain.Avalanche:return xe(e);case i.Chain.BinanceSmartChain:return Pe(e);default:return i.BaseDecimal[s]}},Ve={[i.FeeOption.Average]:1.2,[i.FeeOption.Fast]:1.5,[i.FeeOption.Fastest]:2},K=({chain:s,symbol:e})=>{switch(s){case i.Chain.Bitcoin:case i.Chain.BitcoinCash:case i.Chain.Litecoin:case i.Chain.Dogecoin:case i.Chain.Binance:case i.Chain.Ethereum:case i.Chain.Avalanche:return e===s;case i.Chain.Arbitrum:case i.Chain.Optimism:return e==="ETH";case i.Chain.Maya:return e==="CACAO";case i.Chain.Kujira:return e==="KUJI";case i.Chain.Cosmos:return e==="ATOM";case i.Chain.Polygon:return e==="MATIC";case i.Chain.BinanceSmartChain:return e==="BNB";case i.Chain.THORChain:return e==="RUNE"}},ae=s=>{switch(s){case"ETH.THOR":return{identifier:"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044",decimal:18};case"ETH.vTHOR":return{identifier:"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d",decimal:18};case i.Chain.Cosmos:return{identifier:"GAIA.ATOM",decimal:i.BaseDecimal[s]};case i.Chain.THORChain:return{identifier:"THOR.RUNE",decimal:i.BaseDecimal[s]};case i.Chain.BinanceSmartChain:return{identifier:"BSC.BNB",decimal:i.BaseDecimal[s]};case i.Chain.Maya:return{identifier:"MAYA.CACAO",decimal:i.BaseDecimal.MAYA};case"MAYA.MAYA":return{identifier:"MAYA.MAYA",decimal:4};case i.Chain.Kujira:case i.Chain.Arbitrum:case i.Chain.Optimism:case i.Chain.BitcoinCash:case i.Chain.Litecoin:case i.Chain.Dogecoin:case i.Chain.Binance:case i.Chain.Avalanche:case i.Chain.Polygon:case i.Chain.Bitcoin:case i.Chain.Ethereum:return{identifier:`${s}.${s}`,decimal:i.BaseDecimal[s]}}},oe=({chain:s,symbol:e})=>{if(e.includes("/"))return"Synth";switch(s){case i.Chain.Bitcoin:case i.Chain.BitcoinCash:case i.Chain.Dogecoin:case i.Chain.Litecoin:case i.Chain.Maya:case i.Chain.THORChain:return"Native";case i.Chain.Cosmos:return e==="ATOM"?"Native":i.Chain.Cosmos;case i.Chain.Kujira:return e===i.Chain.Kujira?"Native":i.Chain.Kujira;case i.Chain.Binance:return e===i.Chain.Binance?"Native":"BEP2";case i.Chain.BinanceSmartChain:return e===i.Chain.Binance?"Native":"BEP20";case i.Chain.Ethereum:return e===i.Chain.Ethereum?"Native":"ERC20";case i.Chain.Avalanche:return e===i.Chain.Avalanche?"Native":i.Chain.Avalanche;case i.Chain.Polygon:return e===i.Chain.Polygon?"Native":"POLYGON";case i.Chain.Arbitrum:return[i.Chain.Ethereum,i.Chain.Arbitrum].includes(e)?"Native":"ARBITRUM";case i.Chain.Optimism:return[i.Chain.Ethereum,i.Chain.Optimism].includes(e)?"Native":"OPTIMISM"}},ke=s=>{var c;const[e,...t]=s.split("."),n=s.includes("/"),r=t.join("."),a=(c=r==null?void 0:r.split("-"))==null?void 0:c[0];return{chain:e,symbol:r,ticker:a,synth:n}},De=new RegExp(/(.)\1{6}|\.ORG|\.NET|\.FINANCE|\.COM|WWW|HTTP|\\\\|\/\/|[\s$%:[\]]/,"gmi"),Ne=s=>{const[e,t]=s.split(".");if(!i.EVMChainList.includes(e))return!0;const[,n]=t.split("-");return K({chain:e,symbol:t})||!!n},je=s=>s.filter(e=>{const t=`${e.chain}.${e.symbol}`;return!De.test(t)&&Ne(t)&&e.value!=="0"}),ce=({liquidityUnits:s,poolUnits:e,runeDepth:t})=>{const n=m(s),r=m(e),a=m(t),c=n.mul(a),o=r.mul(r).mul(2),u=r.mul(n).mul(2),h=n.mul(n),l=r.mul(r).mul(r);return c.mul(o.sub(u).add(h)).div(l)},ue=({liquidityUnits:s,poolUnits:e,assetDepth:t})=>{const n=m(s),r=m(e),a=m(t),c=n.mul(a),o=r.mul(r).mul(2),u=r.mul(n).mul(2),h=n.mul(n),l=c.mul(o.sub(u).add(h)),f=r.mul(r).mul(r);return l.div(f)},He=({percent:s,runeDepth:e,liquidityUnits:t,poolUnits:n})=>ce({runeDepth:e,liquidityUnits:t,poolUnits:n}).mul(s),Le=({percent:s,assetDepth:e,liquidityUnits:t,poolUnits:n})=>ue({assetDepth:e,liquidityUnits:t,poolUnits:n}).mul(s),m=s=>g.fromBigInt(BigInt(s),i.BaseDecimal.THOR),le=({liquidityUnits:s,poolUnits:e,runeDepth:t,assetDepth:n})=>({assetAmount:m(n).mul(s).div(e),runeAmount:m(t).mul(s).div(e)}),Fe=({liquidityUnits:s,poolUnits:e,runeDepth:t,assetDepth:n,percent:r})=>Object.fromEntries(Object.entries(le({liquidityUnits:s,poolUnits:e,runeDepth:t,assetDepth:n})).map(([a,c])=>[a,c.mul(r)])),Ue=({runeDepth:s,poolUnits:e,assetDepth:t,liquidityUnits:n,runeAmount:r,assetAmount:a})=>{const c=new g({value:s,decimal:8}),o=new g({value:t,decimal:8}),u=new g({value:e,decimal:8}),h=new g({value:r,decimal:8}),l=new g({value:a,decimal:8}),f=h.mul(o),V=l.mul(c),ye=h.mul(l),be=c.mul(o),Ce=u.mul(f.add(V.add(ye.mul(2)))),we=f.add(V.add(be.mul(2))),Q=Ce.div(we),k=m(n).add(Q);if(Q.getBaseValue("number")===0)return k.div(u).getBaseValue("number");const Ae=u.add(k);return k.div(Ae).getBaseValue("number")},We=({runeAmount:s,assetAmount:e,runeDepth:t,assetDepth:n})=>{if(s==="0"||e==="0"||t==="0"||n==="0")return 0;const r=m(t),a=m(n),c=m(e),o=m(s),u=c.mul(r).sub(a.mul(o)),h=a.mul(o).add(r.mul(a));return Math.abs(u.div(h).getBaseValue("number"))},Ge=({symbol:s,ticker:e,chain:t})=>t==="ETH"&&e!=="ETH"?`${e}-${s.slice(-3)}`:s,Ke=(s,e)=>{switch(s){case i.MemoType.LEAVE:case i.MemoType.BOND:{const{address:t}=e;return`${s}:${t}`}case i.MemoType.UNBOND:{const{address:t,unbondAmount:n}=e;return`${s}:${t}:${n*10**8}`}case i.MemoType.THORNAME_REGISTER:{const{name:t,chain:n,address:r,owner:a}=e;return`${s}:${t}:${n}:${r}${a?`:${a}`:""}`}case i.MemoType.DEPOSIT:{const{chain:t,symbol:n,address:r,singleSide:a}=e;return a?`${s}:${t}/${n}::t:0`:`${s}:${((o,u)=>{switch(o){case i.Chain.Litecoin:return"l";case i.Chain.Dogecoin:return"d";case i.Chain.BitcoinCash:return"c";default:return`${o}.${u}`}})(t,n)}:${r||""}:t:0`}case i.MemoType.WITHDRAW:{const{chain:t,ticker:n,symbol:r,basisPoints:a,targetAssetString:c,singleSide:o}=e,u=!o&&c?`:${c}`:"",h=Ge({chain:t,symbol:r,ticker:n});return`${s}:${t}${o?"/":"."}${h}:${a}${u}`}case i.MemoType.OPEN_LOAN:case i.MemoType.CLOSE_LOAN:{const{asset:t,address:n}=e;return`${s}:${t}:${n}`}default:return""}},Ye=s=>{if(s<0)throw new Error("Invalid number of year");return 10+s},ze=s=>{if(s.length>30)return!1;const e=/^[a-zA-Z0-9+_-]+$/g;return!!s.match(e)},Je=([s,e,t,n,r])=>`${s}'/${e}'/${t}'/${n}${typeof r!="number"?"":`/${r}`}`;class X extends Error{constructor(e,t,n){const r=e.status||e.status===0?e.status:"",a=e.statusText||"",c=`${r} ${a}`.trim(),o=c?`status code ${c}`:"an unknown error";super(`Request failed with ${o}`),Object.defineProperty(this,"response",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"request",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name="HTTPError",this.response=e,this.request=t,this.options=n}}class he extends Error{constructor(e){super("Request timed out"),Object.defineProperty(this,"request",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name="TimeoutError",this.request=e}}const E=s=>s!==null&&typeof s=="object",M=(...s)=>{for(const e of s)if((!E(e)||Array.isArray(e))&&e!==void 0)throw new TypeError("The `options` argument must be an object");return Y({},...s)},de=(s={},e={})=>{const t=new globalThis.Headers(s),n=e instanceof globalThis.Headers,r=new globalThis.Headers(e);for(const[a,c]of r.entries())n&&c==="undefined"||c===void 0?t.delete(a):t.set(a,c);return t},Y=(...s)=>{let e={},t={};for(const n of s)if(Array.isArray(n))Array.isArray(e)||(e=[]),e=[...e,...n];else if(E(n)){for(let[r,a]of Object.entries(n))E(a)&&r in e&&(a=Y(e[r],a)),e={...e,[r]:a};E(n.headers)&&(t=de(t,n.headers),e.headers=t)}return e},Qe=(()=>{let s=!1,e=!1;const t=typeof globalThis.ReadableStream=="function",n=typeof globalThis.Request=="function";return t&&n&&(e=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return s=!0,"half"}}).headers.has("Content-Type")),s&&!e})(),Xe=typeof globalThis.AbortController=="function",Ze=typeof globalThis.ReadableStream=="function",et=typeof globalThis.FormData=="function",me=["get","post","put","patch","head","delete"],tt={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*"},N=2147483647,pe=Symbol("stop"),st={json:!0,parseJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,fetch:!0},nt={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,dispatcher:!0,duplex:!0},rt=s=>me.includes(s)?s.toUpperCase():s,it=["get","put","head","delete","options","trace"],at=[408,413,429,500,502,503,504],fe=[413,429,503],Z={limit:2,methods:it,statusCodes:at,afterStatusCodes:fe,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:s=>.3*2**(s-1)*1e3},ot=(s={})=>{if(typeof s=="number")return{...Z,limit:s};if(s.methods&&!Array.isArray(s.methods))throw new Error("retry.methods must be an array");if(s.statusCodes&&!Array.isArray(s.statusCodes))throw new Error("retry.statusCodes must be an array");return{...Z,...s,afterStatusCodes:fe}};async function ct(s,e,t,n){return new Promise((r,a)=>{const c=setTimeout(()=>{t&&t.abort(),a(new he(s))},n.timeout);n.fetch(s,e).then(r).catch(a).then(()=>{clearTimeout(c)})})}async function ut(s,{signal:e}){return new Promise((t,n)=>{e&&(e.throwIfAborted(),e.addEventListener("abort",r,{once:!0}));function r(){clearTimeout(a),n(e.reason)}const a=setTimeout(()=>{e==null||e.removeEventListener("abort",r),t()},s)})}const lt=(s,e)=>{const t={};for(const n in e)!(n in nt)&&!(n in st)&&!(n in s)&&(t[n]=e[n]);return t};class x{static create(e,t){const n=new x(e,t),r=async()=>{if(typeof n._options.timeout=="number"&&n._options.timeout>N)throw new RangeError(`The \`timeout\` option cannot be greater than ${N}`);await Promise.resolve();let o=await n._fetch();for(const u of n._options.hooks.afterResponse){const h=await u(n.request,n._options,n._decorateResponse(o.clone()));h instanceof globalThis.Response&&(o=h)}if(n._decorateResponse(o),!o.ok&&n._options.throwHttpErrors){let u=new X(o,n.request,n._options);for(const h of n._options.hooks.beforeError)u=await h(u);throw u}if(n._options.onDownloadProgress){if(typeof n._options.onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!Ze)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");return n._stream(o.clone(),n._options.onDownloadProgress)}return o},c=n._options.retry.methods.includes(n.request.method.toLowerCase())?n._retry(r):r();for(const[o,u]of Object.entries(tt))c[o]=async()=>{n.request.headers.set("accept",n.request.headers.get("accept")||u);const l=(await c).clone();if(o==="json"){if(l.status===204||(await l.clone().arrayBuffer()).byteLength===0)return"";if(t.parseJson)return t.parseJson(await l.text())}return l[o]()};return c}constructor(e,t={}){if(Object.defineProperty(this,"request",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"abortController",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_retryCount",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_input",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._input=e,this._options={credentials:this._input.credentials||"same-origin",...t,headers:de(this._input.headers,t.headers),hooks:Y({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},t.hooks),method:rt(t.method??this._input.method),prefixUrl:String(t.prefixUrl||""),retry:ot(t.retry),throwHttpErrors:t.throwHttpErrors!==!1,timeout:t.timeout??1e4,fetch:t.fetch??globalThis.fetch.bind(globalThis)},typeof this._input!="string"&&!(this._input instanceof URL||this._input instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(this._options.prefixUrl&&typeof this._input=="string"){if(this._input.startsWith("/"))throw new Error("`input` must not begin with a slash when using `prefixUrl`");this._options.prefixUrl.endsWith("/")||(this._options.prefixUrl+="/"),this._input=this._options.prefixUrl+this._input}if(Xe){if(this.abortController=new globalThis.AbortController,this._options.signal){const n=this._options.signal;this._options.signal.addEventListener("abort",()=>{this.abortController.abort(n.reason)})}this._options.signal=this.abortController.signal}if(Qe&&(this._options.duplex="half"),this.request=new globalThis.Request(this._input,this._options),this._options.searchParams){const r="?"+(typeof this._options.searchParams=="string"?this._options.searchParams.replace(/^\?/,""):new URLSearchParams(this._options.searchParams).toString()),a=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,r);(et&&this._options.body instanceof globalThis.FormData||this._options.body instanceof URLSearchParams)&&!(this._options.headers&&this._options.headers["content-type"])&&this.request.headers.delete("content-type"),this.request=new globalThis.Request(new globalThis.Request(a,{...this.request}),this._options)}this._options.json!==void 0&&(this._options.body=JSON.stringify(this._options.json),this.request.headers.set("content-type",this._options.headers.get("content-type")??"application/json"),this.request=new globalThis.Request(this.request,{body:this._options.body}))}_calculateRetryDelay(e){if(this._retryCount++,this._retryCount<this._options.retry.limit&&!(e instanceof he)){if(e instanceof X){if(!this._options.retry.statusCodes.includes(e.response.status))return 0;const n=e.response.headers.get("Retry-After");if(n&&this._options.retry.afterStatusCodes.includes(e.response.status)){let r=Number(n);return Number.isNaN(r)?r=Date.parse(n)-Date.now():r*=1e3,this._options.retry.maxRetryAfter!==void 0&&r>this._options.retry.maxRetryAfter?0:r}if(e.response.status===413)return 0}const t=this._options.retry.delay(this._retryCount);return Math.min(this._options.retry.backoffLimit,t)}return 0}_decorateResponse(e){return this._options.parseJson&&(e.json=async()=>this._options.parseJson(await e.text())),e}async _retry(e){try{return await e()}catch(t){const n=Math.min(this._calculateRetryDelay(t),N);if(n!==0&&this._retryCount>0){await ut(n,{signal:this._options.signal});for(const r of this._options.hooks.beforeRetry)if(await r({request:this.request,options:this._options,error:t,retryCount:this._retryCount})===pe)return;return this._retry(e)}throw t}}async _fetch(){for(const t of this._options.hooks.beforeRequest){const n=await t(this.request,this._options);if(n instanceof Request){this.request=n;break}if(n instanceof Response)return n}const e=lt(this.request,this._options);return this._options.timeout===!1?this._options.fetch(this.request.clone(),e):ct(this.request.clone(),e,this.abortController,this._options)}_stream(e,t){const n=Number(e.headers.get("content-length"))||0;let r=0;return e.status===204?(t&&t({percent:1,totalBytes:n,transferredBytes:r},new Uint8Array),new globalThis.Response(null,{status:e.status,statusText:e.statusText,headers:e.headers})):new globalThis.Response(new globalThis.ReadableStream({async start(a){const c=e.body.getReader();t&&t({percent:0,transferredBytes:0,totalBytes:n},new Uint8Array);async function o(){const{done:u,value:h}=await c.read();if(u){a.close();return}if(t){r+=h.byteLength;const l=n===0?0:r/n;t({percent:l,transferredBytes:r,totalBytes:n},h)}a.enqueue(h),await o()}await o()}}),{status:e.status,statusText:e.statusText,headers:e.headers})}}/*! MIT License © Sindre Sorhus */const H=s=>{const e=(t,n)=>x.create(t,M(s,n));for(const t of me)e[t]=(n,r)=>x.create(n,M(s,r,{method:t}));return e.create=t=>H(M(t)),e.extend=t=>H(M(s,t)),e.stop=pe,e},ht=H(),dt=ht,mt=typeof window<"u"?{}:{referrer:"https://sk.thorswap.net",referer:"https://sk.thorswap.net"},ee=dt.create({headers:mt}),ge={get:(s,e)=>ee.get(s,e).json(),post:(s,e)=>ee.post(s,e).json()},te=Object.values(i.Chain),pt=(s="")=>{const e=s.toUpperCase(),[t]=e.split(".");if(te.includes(t))return!0;const[n]=e.split("/");if(te.includes(n))return!0;throw new Error(`Invalid identifier: ${s}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`)},$=8,b=s=>10n**BigInt(s),v=s=>Math.log10(parseFloat(s.toString()));function R({value:s,bigIntDecimal:e=$,decimal:t=$}){if(t===0)return s.toString();const n=s<0n;let r=s.toString().substring(n?1:0);const a=t-(r.length-1);a>0&&(r="0".repeat(a)+r);const c=r.length-t;let o=r.slice(-t);return parseInt(o[e])>=5?o=`${o.substring(0,e-1)}${(parseInt(o[e-1])+1).toString()}`:o=o.substring(0,e),`${n?"-":""}${r.slice(0,c)}.${o}`.replace(/\.?0*$/,"")}var C,S,_,A,P,_e,I,L,B,F;const J=class J{constructor(e){w(this,C);w(this,_);w(this,P);w(this,I);w(this,B);p(this,"decimalMultiplier",10n**8n);p(this,"bigIntValue",0n);p(this,"decimal");const t=U(e),n=typeof e=="object";this.decimal=n?e.decimal:void 0,this.decimalMultiplier=n&&"decimalMultiplier"in e?e.decimalMultiplier:b(Math.max(se(O(t)),this.decimal||0)),d(this,P,_e).call(this,t)}static fromBigInt(e,t){return new J({decimal:t,value:R({value:e,bigIntDecimal:t,decimal:t})})}static shiftDecimals({value:e,from:t,to:n}){return this.fromBigInt(e.getBaseValue("bigint")*b(n)/b(t),n)}set(e){return new this.constructor({decimal:this.decimal,value:e,identifier:this.toString()})}add(...e){return d(this,C,S).call(this,"add",...e)}sub(...e){return d(this,C,S).call(this,"sub",...e)}mul(...e){return d(this,C,S).call(this,"mul",...e)}div(...e){return d(this,C,S).call(this,"div",...e)}gt(e){return d(this,_,A).call(this,"gt",e)}gte(e){return d(this,_,A).call(this,"gte",e)}lt(e){return d(this,_,A).call(this,"lt",e)}lte(e){return d(this,_,A).call(this,"lte",e)}eqValue(e){return d(this,_,A).call(this,"eqValue",e)}getValue(e){const t=this.formatBigIntToSafeValue(this.bigIntValue,this.decimal||v(this.decimalMultiplier));switch(e){case"number":return Number(t);case"string":return t;case"bigint":return this.bigIntValue*10n**BigInt(this.decimal||8n)/this.decimalMultiplier}}getBaseValue(e){const t=this.decimalMultiplier/b(this.decimal||i.BaseDecimal.THOR),n=this.bigIntValue/t;switch(e){case"number":return Number(n);case"string":return n.toString();case"bigint":return n}}getBigIntValue(e,t){if(!t&&typeof e=="object")return e.bigIntValue;const n=U(e),r=O(n);return r==="0"||r==="undefined"?0n:d(this,B,F).call(this,r,t)}toSignificant(e=6){const[t,n]=this.getValue("string").split("."),r=t||"",a=n||"";if((parseInt(r)?r.length+a.length:a.length)<=e)return this.getValue("string");if(r.length>=e)return r.slice(0,e).padEnd(r.length,"0");if(parseInt(r))return`${r}.${a.slice(0,e-r.length)}`.padEnd(e-r.length,"0");const o=parseInt(a),u=`${o}`.slice(0,e);return`0.${u.padStart(a.length-`${o}`.length+u.length,"0")}`}toFixed(e=6){const[t,n]=this.getValue("string").split("."),r=t||"",a=n||"";if(parseInt(r))return`${r}.${a.slice(0,e)}`.padEnd(e,"0");const c=parseInt(a),o=`${c}`.slice(0,e);return`0.${o.padStart(a.length-`${c}`.length+o.length,"0")}`}toAbbreviation(e=2){const t=this.getValue("number"),n=["","K","M","B","T","Q","Qi","S"],r=Math.floor(Math.log10(Math.abs(t))/3),a=n[r];if(!a)return this.getValue("string");const c=10**(r*3);return`${(t/c).toFixed(e)}${a}`}toCurrency(e="$",{currencyPosition:t="start",decimal:n=2,decimalSeparator:r=".",thousandSeparator:a=","}={}){const c=this.getValue("number"),[o,u=""]=c.toFixed(6).split("."),h=o.replace(/\B(?=(\d{3})+(?!\d))/g,a),l=!o&&!u?"0.00":o==="0"?`${parseFloat(`0.${u}`)}`.replace(".",r):`${h}${parseInt(u)?`${r}${u.slice(0,n)}`:""}`;return`${t==="start"?e:""}${l}${t==="end"?e:""}`}formatBigIntToSafeValue(e,t){const n=t||this.decimal||$,r=Math.max(n,v(this.decimalMultiplier)),a=e<0n,c=e.toString().substring(a?1:0),o=r-(c.length-1),u=o>0?"0".repeat(o)+c:c,h=u.length-r;let l=u.slice(-r);return parseInt(l[n])>=5?l=`${l.substring(0,n-1)}${(parseInt(l[n-1])+1).toString()}`:l=l.substring(0,n),`${a?"-":""}${u.slice(0,h)}.${l}`.replace(/\.?0*$/,"")}};C=new WeakSet,S=function(e,...t){const n=d(this,I,L).call(this,this,...t),r=Math.max(n,v(this.decimalMultiplier)),a=b(r),c=t.reduce((u,h)=>{const l=this.getBigIntValue(h,r);switch(e){case"add":return u+l;case"sub":return u-l;case"mul":return u*l/a;case"div":{if(l===0n)throw new RangeError("Division by zero");return u*a/l}default:return u}},this.bigIntValue*a/this.decimalMultiplier),o=R({bigIntDecimal:r,decimal:r,value:c});return new this.constructor({decimalMultiplier:b(r),decimal:this.decimal,value:o,identifier:this.toString()})},_=new WeakSet,A=function(e,...t){const n=d(this,I,L).call(this,this,...t),r=this.getBigIntValue(t[0],n),a=this.getBigIntValue(this,n);switch(e){case"gt":return a>r;case"gte":return a>=r;case"lt":return a<r;case"lte":return a<=r;case"eqValue":return a===r}},P=new WeakSet,_e=function(e){const t=O(e)||"0";this.bigIntValue=d(this,B,F).call(this,t)},I=new WeakSet,L=function(...e){const t=e.map(n=>typeof n=="object"?n.decimal||v(n.decimalMultiplier):se(O(n))).filter(Boolean);return Math.max(...t,$)},B=new WeakSet,F=function(e,t){const n=t?b(t):this.decimalMultiplier,r=v(n),[a="",c=""]=e.split(".");return BigInt(`${a}${c.padEnd(r,"0")}`)};let T=J;const ft=Intl.NumberFormat("fullwide",{useGrouping:!1,maximumFractionDigits:20});function O(s){const t=`${typeof s=="number"?ft.format(s):U(s)}`.replaceAll(",",".").split(".");return t.length>1?`${t.slice(0,-1).join("")}.${t.at(-1)}`:t[0]}function se(s){var t;const e=((t=s.split(".")[1])==null?void 0:t.length)||0;return Math.max(e,$)}function U(s){return typeof s=="object"?"getValue"in s?s.getValue("string"):s.value:s}const q=(s,e)=>typeof s=="bigint"?R({value:s,bigIntDecimal:e,decimal:e}):s;let W;const ne=s=>{if(!W)throw new Error("Static assets not loaded, call await AssetValue.loadStaticAssets() first");return W.get(s.toUpperCase())||{decimal:i.BaseDecimal.THOR,identifier:""}},j=async(s,e=0)=>{pt(s);const t=await ie(G(s)),n=q(e,t);return new y({decimal:t,value:n,identifier:s})};class y extends T{constructor(t){const n="identifier"in t?t.identifier:`${t.chain}.${t.symbol}`;super(t.value instanceof T?t.value:{decimal:t.decimal,value:t.value});p(this,"address");p(this,"chain");p(this,"isGasAsset",!1);p(this,"isSynthetic",!1);p(this,"symbol");p(this,"tax");p(this,"ticker");p(this,"type");const r=G(n);this.type=oe(r),this.chain=r.chain,this.ticker=r.ticker,this.symbol=r.symbol,this.address=r.address,this.isSynthetic=r.isSynthetic,this.isGasAsset=r.isGasAsset,this.tax=t.tax}toString(){return this.isSynthetic?this.symbol:`${this.chain}.${this.symbol}`}toUrl(){return this.isSynthetic?`${this.chain}.${this.symbol.replace("/",".")}`:this.toString()}eq({chain:t,symbol:n}){return this.chain===t&&this.symbol===n}static fromUrl(t,n=0){const[r,a,c]=t.split(".");if(!r||!a)throw new Error("Invalid asset url");const o=r===i.Chain.THORChain&&c?`${r}.${a}/${c}`:t;return j(o,n)}static fromString(t,n=0){return j(t,n)}static fromStringSync(t,n=0){const{isSynthetic:r}=G(t),{tax:a,decimal:c,identifier:o}=ne(t),u=q(n,c);return o?new y({tax:a,decimal:c,identifier:o,value:u}):r?new y({tax:a,decimal:8,identifier:t,value:u}):void 0}static fromIdentifier(t,n=0){return j(t,n)}static fromIdentifierSync(t,n=0){const{decimal:r,identifier:a}=ne(t),c=q(n,r);return new y({decimal:r,identifier:a,value:c})}static fromChainOrSignature(t,n=0){const{decimal:r,identifier:a}=ae(t),c=q(n,r);return new y({value:c,decimal:r,identifier:a})}static loadStaticAssets(){return new Promise(async(t,n)=>{try{const r=await import("@swapkit/tokens");W=Object.values(r).reduce((c,o)=>{var u;return(u=o==null?void 0:o.tokens)==null||u.forEach(({identifier:h,chain:l,...f})=>{c.set(h,{identifier:h,decimal:"decimals"in f?f.decimals:i.BaseDecimal[l]})}),c},new Map),t({ok:!0})}catch(r){console.error(r),n({ok:!1,error:r,message:"Couldn't load static assets. Ensure you have installed @swapkit/tokens package"})}})}}const gt=s=>{const e=y.fromChainOrSignature(s);switch(s){case i.Chain.Bitcoin:case i.Chain.Litecoin:case i.Chain.BitcoinCash:return e.set(10001e-8);case i.Chain.Dogecoin:return e.set(1.00000001);case i.Chain.Avalanche:case i.Chain.Ethereum:return e.set(1e-8);case i.Chain.THORChain:case i.Chain.Maya:return e.set(0);default:return e.set(1e-8)}},G=s=>{const e=s.slice(0,14).includes("/"),[t,n]=s.split(".").pop().split("/"),r=s.includes(".")&&!e?s:`${i.Chain.THORChain}.${n}`,[a,c]=r.split("."),[o,u]=(e?n:c).split("-");return{address:u==null?void 0:u.toLowerCase(),chain:a,isGasAsset:K({chain:a,symbol:c}),isSynthetic:e,symbol:(e?`${t}/`:"")+(u?`${o}-${(u==null?void 0:u.toLowerCase())??""}`:c),ticker:o}},_t={core_wallet_connection_not_found:10001,core_estimated_max_spendable_chain_not_supported:10002,core_extend_error:10003,core_inbound_data_not_found:10004,core_approve_asset_address_or_from_not_found:10005,core_chain_halted:10099,core_wallet_xdefi_not_installed:10101,core_wallet_evmwallet_not_installed:10102,core_wallet_walletconnect_not_installed:10103,core_wallet_keystore_not_installed:10104,core_wallet_ledger_not_installed:10105,core_wallet_trezor_not_installed:10106,core_wallet_keplr_not_installed:10107,core_wallet_okx_not_installed:10108,core_swap_invalid_params:10200,core_swap_route_not_complete:10201,core_swap_asset_not_recognized:10202,core_swap_contract_not_found:10203,core_swap_route_transaction_not_found:10204,core_swap_contract_not_supported:10205,core_swap_transaction_error:10206,core_swap_quote_mode_not_supported:10207,core_transaction_deposit_error:10301,core_transaction_create_liquidity_rune_error:10302,core_transaction_create_liquidity_asset_error:10303,core_transaction_create_liquidity_invalid_params:10304,core_transaction_add_liquidity_invalid_params:10305,core_transaction_add_liquidity_no_rune_address:10306,core_transaction_add_liquidity_rune_error:10307,core_transaction_add_liquidity_asset_error:10308,core_transaction_withdraw_error:10309,core_transaction_deposit_to_pool_error:10310,core_transaction_deposit_insufficient_funds_error:10311,core_transaction_deposit_gas_error:10312,core_transaction_invalid_sender_address:10313,core_transaction_deposit_server_error:10313,wallet_ledger_connection_error:20001,helpers_number_different_decimals:99101};class z extends Error{constructor(e,t){console.error(t,{stack:t==null?void 0:t.stack,message:t==null?void 0:t.message}),super(e,{cause:{code:_t[e],message:e}}),Object.setPrototypeOf(this,z.prototype)}}class g extends T{eq(e){return this.eqValue(e)}static fromBigInt(e,t){return new g({decimal:t,value:R({value:e,bigIntDecimal:t,decimal:t})})}}exports.AssetValue=y;exports.BigIntArithmetics=T;exports.RequestClient=ge;exports.SwapKitError=z;exports.SwapKitNumber=g;exports.assetFromString=ke;exports.derivationPathToString=Je;exports.filterAssets=je;exports.formatBigIntToSafeValue=R;exports.gasFeeMultiplier=Ve;exports.getAssetType=oe;exports.getAsymmetricAssetShare=ue;exports.getAsymmetricAssetWithdrawAmount=Le;exports.getAsymmetricRuneShare=ce;exports.getAsymmetricRuneWithdrawAmount=He;exports.getCommonAssetInfo=ae;exports.getDecimal=ie;exports.getEstimatedPoolShare=Ue;exports.getLiquiditySlippage=We;exports.getMemoFor=Ke;exports.getMinAmountByChain=gt;exports.getSymmetricPoolShare=le;exports.getSymmetricWithdraw=Fe;exports.getTHORNameCost=Ye;exports.isGasAsset=K;exports.validateTHORName=ze;
1
+ "use strict";var At=Object.create;var N=Object.defineProperty;var Tt=Object.getOwnPropertyDescriptor;var vt=Object.getOwnPropertyNames;var St=Object.getPrototypeOf,$t=Object.prototype.hasOwnProperty;var Rt=(n,t,e)=>t in n?N(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var Bt=(n,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of vt(t))!$t.call(n,r)&&r!==e&&N(n,r,{get:()=>t[r],enumerable:!(s=Tt(t,r))||s.enumerable});return n};var It=(n,t,e)=>(e=n!=null?At(St(n)):{},Bt(t||!n||!n.__esModule?N(e,"default",{value:n,enumerable:!0}):e,n));var p=(n,t,e)=>(Rt(n,typeof t!="symbol"?t+"":t,e),e),Ot=(n,t,e)=>{if(!t.has(n))throw TypeError("Cannot "+e)};var w=(n,t,e)=>{if(t.has(n))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(n):t.set(n,e)};var d=(n,t,e)=>(Ot(n,t,"access private method"),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@swapkit/types"),Mt="0x313ce567",nt=async({chain:n,to:t})=>{try{const{result:e}=await ft.post(i.ChainToRPC[n],{headers:{accept:"*/*","content-type":"application/json","cache-control":"no-cache"},body:JSON.stringify({id:44,jsonrpc:"2.0",method:"eth_call",params:[{to:t.toLowerCase(),data:Mt},"latest"]})});return parseInt(BigInt(e).toString())}catch(e){return console.error(e),i.BaseDecimal[n]}},Et=async n=>{if(n===i.Chain.Ethereum)return i.BaseDecimal.ETH;const[,t]=n.split("-");return t!=null&&t.startsWith("0x")?nt({chain:i.Chain.Ethereum,to:t}):i.BaseDecimal.ETH},qt=async n=>{const[,t]=n.split("-");return t!=null&&t.startsWith("0x")?nt({chain:i.Chain.Avalanche,to:t.toLowerCase()}):i.BaseDecimal.AVAX},xt=async n=>(n===i.Chain.BinanceSmartChain,i.BaseDecimal.BSC),rt=async({chain:n,symbol:t})=>{switch(n){case i.Chain.Ethereum:return Et(t);case i.Chain.Avalanche:return qt(t);case i.Chain.BinanceSmartChain:return xt(t);default:return i.BaseDecimal[n]}},Pt={[i.FeeOption.Average]:1.2,[i.FeeOption.Fast]:1.5,[i.FeeOption.Fastest]:2},K=({chain:n,symbol:t})=>{switch(n){case i.Chain.Bitcoin:case i.Chain.BitcoinCash:case i.Chain.Litecoin:case i.Chain.Dogecoin:case i.Chain.Binance:case i.Chain.Ethereum:case i.Chain.Avalanche:return t===n;case i.Chain.Arbitrum:case i.Chain.Optimism:return t==="ETH";case i.Chain.Maya:return t==="CACAO";case i.Chain.Kujira:return t==="KUJI";case i.Chain.Cosmos:return t==="ATOM";case i.Chain.Polygon:return t==="MATIC";case i.Chain.BinanceSmartChain:return t==="BNB";case i.Chain.THORChain:return t==="RUNE"}},it=n=>{switch(n){case"ETH.THOR":return{identifier:"ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044",decimal:18};case"ETH.vTHOR":return{identifier:"ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d",decimal:18};case i.Chain.Cosmos:return{identifier:"GAIA.ATOM",decimal:i.BaseDecimal[n]};case i.Chain.THORChain:return{identifier:"THOR.RUNE",decimal:i.BaseDecimal[n]};case i.Chain.BinanceSmartChain:return{identifier:"BSC.BNB",decimal:i.BaseDecimal[n]};case i.Chain.Maya:return{identifier:"MAYA.CACAO",decimal:i.BaseDecimal.MAYA};case"MAYA.MAYA":return{identifier:"MAYA.MAYA",decimal:4};case i.Chain.Kujira:case i.Chain.Arbitrum:case i.Chain.Optimism:case i.Chain.BitcoinCash:case i.Chain.Litecoin:case i.Chain.Dogecoin:case i.Chain.Binance:case i.Chain.Avalanche:case i.Chain.Polygon:case i.Chain.Bitcoin:case i.Chain.Ethereum:return{identifier:`${n}.${n}`,decimal:i.BaseDecimal[n]}}},at=({chain:n,symbol:t})=>{if(t.includes("/"))return"Synth";switch(n){case i.Chain.Bitcoin:case i.Chain.BitcoinCash:case i.Chain.Dogecoin:case i.Chain.Litecoin:case i.Chain.Maya:case i.Chain.THORChain:return"Native";case i.Chain.Cosmos:return t==="ATOM"?"Native":i.Chain.Cosmos;case i.Chain.Kujira:return t===i.Chain.Kujira?"Native":i.Chain.Kujira;case i.Chain.Binance:return t===i.Chain.Binance?"Native":"BEP2";case i.Chain.BinanceSmartChain:return t===i.Chain.Binance?"Native":"BEP20";case i.Chain.Ethereum:return t===i.Chain.Ethereum?"Native":"ERC20";case i.Chain.Avalanche:return t===i.Chain.Avalanche?"Native":i.Chain.Avalanche;case i.Chain.Polygon:return t===i.Chain.Polygon?"Native":"POLYGON";case i.Chain.Arbitrum:return[i.Chain.Ethereum,i.Chain.Arbitrum].includes(t)?"Native":"ARBITRUM";case i.Chain.Optimism:return[i.Chain.Ethereum,i.Chain.Optimism].includes(t)?"Native":"OPTIMISM"}},Vt=n=>{var c;const[t,...e]=n.split("."),s=n.includes("/"),r=e.join("."),a=(c=r==null?void 0:r.split("-"))==null?void 0:c[0];return{chain:t,symbol:r,ticker:a,synth:s}},kt=new RegExp(/(.)\1{6}|\.ORG|\.NET|\.FINANCE|\.COM|WWW|HTTP|\\\\|\/\/|[\s$%:[\]]/,"gmi"),Dt=n=>{const[t,e]=n.split(".");if(!i.EVMChainList.includes(t))return!0;const[,s]=e.split("-");return K({chain:t,symbol:e})||!!s},Nt=n=>n.filter(t=>{const e=`${t.chain}.${t.symbol}`;return!kt.test(e)&&Dt(e)&&t.value!=="0"});function ot({liquidityUnits:n,poolUnits:t,runeDepth:e}){const s=m(n),r=m(t),a=m(e),c=s.mul(a),o=r.mul(r).mul(2),u=r.mul(s).mul(2),h=s.mul(s),l=r.mul(r).mul(r);return c.mul(o.sub(u).add(h)).div(l)}function ct({liquidityUnits:n,poolUnits:t,assetDepth:e}){const s=m(n),r=m(t),a=m(e),c=s.mul(a),o=r.mul(r).mul(2),u=r.mul(s).mul(2),h=s.mul(s),l=c.mul(o.sub(u).add(h)),C=r.mul(r).mul(r);return l.div(C)}function jt({percent:n,runeDepth:t,liquidityUnits:e,poolUnits:s}){return ot({runeDepth:t,liquidityUnits:e,poolUnits:s}).mul(n)}function Ht({percent:n,assetDepth:t,liquidityUnits:e,poolUnits:s}){return ct({assetDepth:t,liquidityUnits:e,poolUnits:s}).mul(n)}function m(n){return f.fromBigInt(BigInt(n),i.BaseDecimal.THOR)}function ut({liquidityUnits:n,poolUnits:t,runeDepth:e,assetDepth:s}){return{assetAmount:m(s).mul(n).div(t),runeAmount:m(e).mul(n).div(t)}}function Ut({liquidityUnits:n,poolUnits:t,runeDepth:e,assetDepth:s,percent:r}){return Object.fromEntries(Object.entries(ut({liquidityUnits:n,poolUnits:t,runeDepth:e,assetDepth:s})).map(([a,c])=>[a,c.mul(r)]))}function Lt({runeDepth:n,poolUnits:t,assetDepth:e,liquidityUnits:s,runeAmount:r,assetAmount:a}){const c=new f({value:n,decimal:8}),o=new f({value:e,decimal:8}),u=new f({value:t,decimal:8}),h=new f({value:r,decimal:8}),l=new f({value:a,decimal:8}),C=h.mul(o),k=l.mul(c),_t=h.mul(l),yt=c.mul(o),bt=u.mul(C.add(k.add(_t.mul(2)))),Ct=C.add(k.add(yt.mul(2))),Q=bt.div(Ct),D=m(s).add(Q);if(Q.getBaseValue("number")===0)return D.div(u).getBaseValue("number");const wt=u.add(D);return D.div(wt).getBaseValue("number")}function Ft({runeAmount:n,assetAmount:t,runeDepth:e,assetDepth:s}){if(n==="0"||t==="0"||e==="0"||s==="0")return 0;const r=m(e),a=m(s),c=m(t),o=m(n),u=c.mul(r).sub(a.mul(o)),h=a.mul(o).add(r.mul(a));return Math.abs(u.div(h).getBaseValue("number"))}const Wt=(n,t)=>{switch(n){case i.MemoType.LEAVE:case i.MemoType.BOND:{const{address:e}=t;return`${n}:${e}`}case i.MemoType.UNBOND:{const{address:e,unbondAmount:s}=t;return`${n}:${e}:${s*10**8}`}case i.MemoType.THORNAME_REGISTER:{const{name:e,chain:s,address:r,owner:a}=t;return`${n}:${e}:${s}:${r}${a?`:${a}`:""}`}case i.MemoType.DEPOSIT:{const{chain:e,symbol:s,address:r,singleSide:a}=t;return a?`${n}:${e}/${s}::t:0`:`${n}:${((o,u)=>{switch(o){case i.Chain.Litecoin:return"l";case i.Chain.Dogecoin:return"d";case i.Chain.BitcoinCash:return"c";default:return`${o}.${u}`}})(e,s)}:${r||""}:t:0`}case i.MemoType.WITHDRAW:{const{chain:e,ticker:s,symbol:r,basisPoints:a,targetAssetString:c,singleSide:o}=t,u=e==="ETH"&&s!=="ETH"?`${s}-${r.slice(-3)}`:r,h=!o&&c?`:${c}`:"";return`${n}:${e}${o?"/":"."}${u}:${a}${h}`}case i.MemoType.OPEN_LOAN:case i.MemoType.CLOSE_LOAN:{const{asset:e,address:s}=t;return`${n}:${e}:${s}`}default:return""}};function Gt(n){if(n<0)throw new Error("Invalid number of year");return 10+n}function Kt(n){if(n.length>30)return!1;const t=/^[a-zA-Z0-9+_-]+$/g;return!!n.match(t)}function Yt([n,t,e,s,r]){return`${n}'/${t}'/${e}'/${s}${typeof r!="number"?"":`/${r}`}`}class X extends Error{constructor(t,e,s){const r=t.status||t.status===0?t.status:"",a=t.statusText||"",c=`${r} ${a}`.trim(),o=c?`status code ${c}`:"an unknown error";super(`Request failed with ${o}`),Object.defineProperty(this,"response",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"request",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name="HTTPError",this.response=t,this.request=e,this.options=s}}class lt extends Error{constructor(t){super("Request timed out"),Object.defineProperty(this,"request",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name="TimeoutError",this.request=t}}const q=n=>n!==null&&typeof n=="object",M=(...n)=>{for(const t of n)if((!q(t)||Array.isArray(t))&&t!==void 0)throw new TypeError("The `options` argument must be an object");return Y({},...n)},ht=(n={},t={})=>{const e=new globalThis.Headers(n),s=t instanceof globalThis.Headers,r=new globalThis.Headers(t);for(const[a,c]of r.entries())s&&c==="undefined"||c===void 0?e.delete(a):e.set(a,c);return e},Y=(...n)=>{let t={},e={};for(const s of n)if(Array.isArray(s))Array.isArray(t)||(t=[]),t=[...t,...s];else if(q(s)){for(let[r,a]of Object.entries(s))q(a)&&r in t&&(a=Y(t[r],a)),t={...t,[r]:a};q(s.headers)&&(e=ht(e,s.headers),t.headers=e)}return t},zt=(()=>{let n=!1,t=!1;const e=typeof globalThis.ReadableStream=="function",s=typeof globalThis.Request=="function";return e&&s&&(t=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return n=!0,"half"}}).headers.has("Content-Type")),n&&!t})(),Jt=typeof globalThis.AbortController=="function",Qt=typeof globalThis.ReadableStream=="function",Xt=typeof globalThis.FormData=="function",dt=["get","post","put","patch","head","delete"],Zt={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*"},j=2147483647,mt=Symbol("stop"),te={json:!0,parseJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,fetch:!0},ee={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,dispatcher:!0,duplex:!0},se=n=>dt.includes(n)?n.toUpperCase():n,ne=["get","put","head","delete","options","trace"],re=[408,413,429,500,502,503,504],pt=[413,429,503],Z={limit:2,methods:ne,statusCodes:re,afterStatusCodes:pt,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:n=>.3*2**(n-1)*1e3},ie=(n={})=>{if(typeof n=="number")return{...Z,limit:n};if(n.methods&&!Array.isArray(n.methods))throw new Error("retry.methods must be an array");if(n.statusCodes&&!Array.isArray(n.statusCodes))throw new Error("retry.statusCodes must be an array");return{...Z,...n,afterStatusCodes:pt}};async function ae(n,t,e,s){return new Promise((r,a)=>{const c=setTimeout(()=>{e&&e.abort(),a(new lt(n))},s.timeout);s.fetch(n,t).then(r).catch(a).then(()=>{clearTimeout(c)})})}async function oe(n,{signal:t}){return new Promise((e,s)=>{t&&(t.throwIfAborted(),t.addEventListener("abort",r,{once:!0}));function r(){clearTimeout(a),s(t.reason)}const a=setTimeout(()=>{t==null||t.removeEventListener("abort",r),e()},n)})}const ce=(n,t)=>{const e={};for(const s in t)!(s in ee)&&!(s in te)&&!(s in n)&&(e[s]=t[s]);return e};class P{static create(t,e){const s=new P(t,e),r=async()=>{if(typeof s._options.timeout=="number"&&s._options.timeout>j)throw new RangeError(`The \`timeout\` option cannot be greater than ${j}`);await Promise.resolve();let o=await s._fetch();for(const u of s._options.hooks.afterResponse){const h=await u(s.request,s._options,s._decorateResponse(o.clone()));h instanceof globalThis.Response&&(o=h)}if(s._decorateResponse(o),!o.ok&&s._options.throwHttpErrors){let u=new X(o,s.request,s._options);for(const h of s._options.hooks.beforeError)u=await h(u);throw u}if(s._options.onDownloadProgress){if(typeof s._options.onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!Qt)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");return s._stream(o.clone(),s._options.onDownloadProgress)}return o},c=s._options.retry.methods.includes(s.request.method.toLowerCase())?s._retry(r):r();for(const[o,u]of Object.entries(Zt))c[o]=async()=>{s.request.headers.set("accept",s.request.headers.get("accept")||u);const l=(await c).clone();if(o==="json"){if(l.status===204||(await l.clone().arrayBuffer()).byteLength===0)return"";if(e.parseJson)return e.parseJson(await l.text())}return l[o]()};return c}constructor(t,e={}){if(Object.defineProperty(this,"request",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"abortController",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_retryCount",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_input",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._input=t,this._options={credentials:this._input.credentials||"same-origin",...e,headers:ht(this._input.headers,e.headers),hooks:Y({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},e.hooks),method:se(e.method??this._input.method),prefixUrl:String(e.prefixUrl||""),retry:ie(e.retry),throwHttpErrors:e.throwHttpErrors!==!1,timeout:e.timeout??1e4,fetch:e.fetch??globalThis.fetch.bind(globalThis)},typeof this._input!="string"&&!(this._input instanceof URL||this._input instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(this._options.prefixUrl&&typeof this._input=="string"){if(this._input.startsWith("/"))throw new Error("`input` must not begin with a slash when using `prefixUrl`");this._options.prefixUrl.endsWith("/")||(this._options.prefixUrl+="/"),this._input=this._options.prefixUrl+this._input}if(Jt){if(this.abortController=new globalThis.AbortController,this._options.signal){const s=this._options.signal;this._options.signal.addEventListener("abort",()=>{this.abortController.abort(s.reason)})}this._options.signal=this.abortController.signal}if(zt&&(this._options.duplex="half"),this.request=new globalThis.Request(this._input,this._options),this._options.searchParams){const r="?"+(typeof this._options.searchParams=="string"?this._options.searchParams.replace(/^\?/,""):new URLSearchParams(this._options.searchParams).toString()),a=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,r);(Xt&&this._options.body instanceof globalThis.FormData||this._options.body instanceof URLSearchParams)&&!(this._options.headers&&this._options.headers["content-type"])&&this.request.headers.delete("content-type"),this.request=new globalThis.Request(new globalThis.Request(a,{...this.request}),this._options)}this._options.json!==void 0&&(this._options.body=JSON.stringify(this._options.json),this.request.headers.set("content-type",this._options.headers.get("content-type")??"application/json"),this.request=new globalThis.Request(this.request,{body:this._options.body}))}_calculateRetryDelay(t){if(this._retryCount++,this._retryCount<this._options.retry.limit&&!(t instanceof lt)){if(t instanceof X){if(!this._options.retry.statusCodes.includes(t.response.status))return 0;const s=t.response.headers.get("Retry-After");if(s&&this._options.retry.afterStatusCodes.includes(t.response.status)){let r=Number(s);return Number.isNaN(r)?r=Date.parse(s)-Date.now():r*=1e3,this._options.retry.maxRetryAfter!==void 0&&r>this._options.retry.maxRetryAfter?0:r}if(t.response.status===413)return 0}const e=this._options.retry.delay(this._retryCount);return Math.min(this._options.retry.backoffLimit,e)}return 0}_decorateResponse(t){return this._options.parseJson&&(t.json=async()=>this._options.parseJson(await t.text())),t}async _retry(t){try{return await t()}catch(e){const s=Math.min(this._calculateRetryDelay(e),j);if(s!==0&&this._retryCount>0){await oe(s,{signal:this._options.signal});for(const r of this._options.hooks.beforeRetry)if(await r({request:this.request,options:this._options,error:e,retryCount:this._retryCount})===mt)return;return this._retry(t)}throw e}}async _fetch(){for(const e of this._options.hooks.beforeRequest){const s=await e(this.request,this._options);if(s instanceof Request){this.request=s;break}if(s instanceof Response)return s}const t=ce(this.request,this._options);return this._options.timeout===!1?this._options.fetch(this.request.clone(),t):ae(this.request.clone(),t,this.abortController,this._options)}_stream(t,e){const s=Number(t.headers.get("content-length"))||0;let r=0;return t.status===204?(e&&e({percent:1,totalBytes:s,transferredBytes:r},new Uint8Array),new globalThis.Response(null,{status:t.status,statusText:t.statusText,headers:t.headers})):new globalThis.Response(new globalThis.ReadableStream({async start(a){const c=t.body.getReader();e&&e({percent:0,transferredBytes:0,totalBytes:s},new Uint8Array);async function o(){const{done:u,value:h}=await c.read();if(u){a.close();return}if(e){r+=h.byteLength;const l=s===0?0:r/s;e({percent:l,transferredBytes:r,totalBytes:s},h)}a.enqueue(h),await o()}await o()}}),{status:t.status,statusText:t.statusText,headers:t.headers})}}/*! MIT License © Sindre Sorhus */const U=n=>{const t=(e,s)=>P.create(e,M(n,s));for(const e of dt)t[e]=(s,r)=>P.create(s,M(n,r,{method:e}));return t.create=e=>U(M(e)),t.extend=e=>U(M(n,e)),t.stop=mt,t},ue=U(),le=ue,he=typeof window<"u"?{}:{referrer:"https://sk.thorswap.net",referer:"https://sk.thorswap.net"},tt=le.create({headers:he}),ft={get:(n,t)=>tt.get(n,t).json(),post:(n,t)=>tt.post(n,t).json()},et=[...Object.values(i.Chain),"TERRA"];function de(n=""){const t=n.toUpperCase(),[e]=t.split(".");if(et.includes(e))return!0;const[s]=t.split("/");if(et.includes(s))return!0;throw new Error(`Invalid identifier: ${n}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`)}const $=8,_=n=>10n**BigInt(n),T=n=>Math.log10(parseFloat(n.toString()));function R({value:n,bigIntDecimal:t=$,decimal:e=$}){if(e===0)return n.toString();const s=n<0n;let r=n.toString().substring(s?1:0);const a=e-(r.length-1);a>0&&(r="0".repeat(a)+r);const c=r.length-e;let o=r.slice(-e);return parseInt(o[t])>=5?o=`${o.substring(0,t-1)}${(parseInt(o[t-1])+1).toString()}`:o=o.substring(0,t),`${s?"-":""}${r.slice(0,c)}.${o}`.replace(/\.?0*$/,"")}var y,v,g,A,V,gt,I,L,O,F;const J=class J{constructor(t){w(this,y);w(this,g);w(this,V);w(this,I);w(this,O);p(this,"decimalMultiplier",10n**8n);p(this,"bigIntValue",0n);p(this,"decimal");const e=W(t),s=typeof t=="object";this.decimal=s?t.decimal:void 0,this.decimalMultiplier=s&&"decimalMultiplier"in t?t.decimalMultiplier:_(Math.max(st(E(e)),this.decimal||0)),d(this,V,gt).call(this,e)}static fromBigInt(t,e){return new J({decimal:e,value:R({value:t,bigIntDecimal:e,decimal:e})})}static shiftDecimals({value:t,from:e,to:s}){return this.fromBigInt(t.getBaseValue("bigint")*_(s)/_(e),s)}set(t){return new this.constructor({decimal:this.decimal,value:t,identifier:this.toString()})}add(...t){return d(this,y,v).call(this,"add",...t)}sub(...t){return d(this,y,v).call(this,"sub",...t)}mul(...t){return d(this,y,v).call(this,"mul",...t)}div(...t){return d(this,y,v).call(this,"div",...t)}gt(t){return d(this,g,A).call(this,"gt",t)}gte(t){return d(this,g,A).call(this,"gte",t)}lt(t){return d(this,g,A).call(this,"lt",t)}lte(t){return d(this,g,A).call(this,"lte",t)}eqValue(t){return d(this,g,A).call(this,"eqValue",t)}getValue(t){const e=this.formatBigIntToSafeValue(this.bigIntValue,this.decimal||T(this.decimalMultiplier));switch(t){case"number":return Number(e);case"string":return e;case"bigint":return this.bigIntValue*10n**BigInt(this.decimal||8n)/this.decimalMultiplier}}getBaseValue(t){const e=this.decimalMultiplier/_(this.decimal||i.BaseDecimal.THOR),s=this.bigIntValue/e;switch(t){case"number":return Number(s);case"string":return s.toString();case"bigint":return s}}getBigIntValue(t,e){if(!e&&typeof t=="object")return t.bigIntValue;const s=W(t),r=E(s);return r==="0"||r==="undefined"?0n:d(this,O,F).call(this,r,e)}toSignificant(t=6){const[e,s]=this.getValue("string").split("."),r=e||"",a=s||"";if((parseInt(r)?r.length+a.length:a.length)<=t)return this.getValue("string");if(r.length>=t)return r.slice(0,t).padEnd(r.length,"0");if(parseInt(r))return`${r}.${a.slice(0,t-r.length)}`.padEnd(t-r.length,"0");const o=parseInt(a),u=`${o}`.slice(0,t);return`0.${u.padStart(a.length-`${o}`.length+u.length,"0")}`}toFixed(t=6){const[e,s]=this.getValue("string").split("."),r=e||"",a=s||"";if(parseInt(r))return`${r}.${a.slice(0,t)}`.padEnd(t,"0");const c=parseInt(a),o=`${c}`.slice(0,t);return`0.${o.padStart(a.length-`${c}`.length+o.length,"0")}`}toAbbreviation(t=2){const e=this.getValue("number"),s=["","K","M","B","T","Q","Qi","S"],r=Math.floor(Math.log10(Math.abs(e))/3),a=s[r];if(!a)return this.getValue("string");const c=10**(r*3);return`${(e/c).toFixed(t)}${a}`}toCurrency(t="$",{currencyPosition:e="start",decimal:s=2,decimalSeparator:r=".",thousandSeparator:a=","}={}){const c=this.getValue("number"),[o,u=""]=c.toFixed(6).split("."),h=o.replace(/\B(?=(\d{3})+(?!\d))/g,a),l=!o&&!u?"0.00":o==="0"?`${parseFloat(`0.${u}`)}`.replace(".",r):`${h}${parseInt(u)?`${r}${u.slice(0,s)}`:""}`;return`${e==="start"?t:""}${l}${e==="end"?t:""}`}formatBigIntToSafeValue(t,e){const s=e||this.decimal||$,r=Math.max(s,T(this.decimalMultiplier)),a=t<0n,c=t.toString().substring(a?1:0),o=r-(c.length-1),u=o>0?"0".repeat(o)+c:c,h=u.length-r;let l=u.slice(-r);return parseInt(l[s])>=5?l=`${l.substring(0,s-1)}${(parseInt(l[s-1])+1).toString()}`:l=l.substring(0,s),`${a?"-":""}${u.slice(0,h)}.${l}`.replace(/\.?0*$/,"")}};y=new WeakSet,v=function(t,...e){const s=d(this,I,L).call(this,this,...e),r=Math.max(s,T(this.decimalMultiplier)),a=_(r),c=e.reduce((u,h)=>{const l=this.getBigIntValue(h,r);switch(t){case"add":return u+l;case"sub":return u-l;case"mul":return u*l/a;case"div":{if(l===0n)throw new RangeError("Division by zero");return u*a/l}default:return u}},this.bigIntValue*a/this.decimalMultiplier),o=R({bigIntDecimal:r,decimal:r,value:c});return new this.constructor({decimalMultiplier:_(r),decimal:this.decimal,value:o,identifier:this.toString()})},g=new WeakSet,A=function(t,...e){const s=d(this,I,L).call(this,this,...e),r=this.getBigIntValue(e[0],s),a=this.getBigIntValue(this,s);switch(t){case"gt":return a>r;case"gte":return a>=r;case"lt":return a<r;case"lte":return a<=r;case"eqValue":return a===r}},V=new WeakSet,gt=function(t){const e=E(t)||"0";this.bigIntValue=d(this,O,F).call(this,e)},I=new WeakSet,L=function(...t){const e=t.map(s=>typeof s=="object"?s.decimal||T(s.decimalMultiplier):st(E(s))).filter(Boolean);return Math.max(...e,$)},O=new WeakSet,F=function(t,e){const s=e?_(e):this.decimalMultiplier,r=T(s),[a="",c=""]=t.split(".");return BigInt(`${a}${c.padEnd(r,"0")}`)};let B=J;const me=Intl.NumberFormat("fullwide",{useGrouping:!1,maximumFractionDigits:20});function E(n){const e=`${typeof n=="number"?me.format(n):W(n)}`.replaceAll(",",".").split(".");return e.length>1?`${e.slice(0,-1).join("")}.${e.at(-1)}`:e[0]}function st(n){var e;const t=((e=n.split(".")[1])==null?void 0:e.length)||0;return Math.max(t,$)}function W(n){return typeof n=="object"?"getValue"in n?n.getValue("string"):n.value:n}const S=new Map;class b extends B{constructor({value:e,decimal:s,tax:r,chain:a,symbol:c,identifier:o}){super(typeof e=="object"?e:{decimal:s,value:e});p(this,"address");p(this,"chain");p(this,"isGasAsset",!1);p(this,"isSynthetic",!1);p(this,"symbol");p(this,"tax");p(this,"ticker");p(this,"type");const u=G(o||`${a}.${c}`);this.type=at(u),this.tax=r,this.chain=u.chain,this.ticker=u.ticker,this.symbol=u.symbol,this.address=u.address,this.isSynthetic=u.isSynthetic,this.isGasAsset=u.isGasAsset}toString(){return this.isSynthetic?this.symbol:`${this.chain}.${this.symbol}`}toUrl(){return this.isSynthetic?`${this.chain}.${this.symbol.replace("/",".")}`:this.toString()}eq({chain:e,symbol:s}){return this.chain===e&&this.symbol===s}static fromUrl(e,s=0){const[r,a,c]=e.split(".");if(!r||!a)throw new Error("Invalid asset url");const o=r===i.Chain.THORChain&&c?`${r}.${a}/${c}`:e;return H(o,s)}static fromString(e,s=0){return H(e,s)}static fromIdentifier(e,s=0){return H(e,s)}static fromStringSync(e,s=0){const{isSynthetic:r}=G(e),a=S.get(e.toUpperCase());if(!a){console.error(`Asset ${e} is not loaded. Use AssetValue.loadStaticAssets() to load it`);return}const{tax:c,decimal:o,identifier:u}=a;return new b({tax:c,value:x(s,o),identifier:r?e:u,decimal:r?8:o})}static fromIdentifierSync(e,s=0){const r=S.get(e);if(!r){console.error(`Asset ${e} is not loaded. Use AssetValue.loadStaticAssets() to load it`);return}const{tax:a,decimal:c,identifier:o}=r;return new b({tax:a,decimal:c,identifier:o,value:x(s,c)})}static fromChainOrSignature(e,s=0){const{decimal:r,identifier:a}=it(e);return new b({value:x(s,r),decimal:r,identifier:a})}static loadStaticAssets(){return new Promise(async(e,s)=>{try{const r=await import("@swapkit/tokens");Object.values(r).forEach(a=>{var c;(c=a==null?void 0:a.tokens)==null||c.forEach(({identifier:o,chain:u,...h})=>{S.set(o.toUpperCase(),{identifier:o,decimal:"decimals"in h?h.decimals:i.BaseDecimal[u]})})}),e({ok:!0})}catch(r){console.error(r),s({ok:!1,error:r,message:"Couldn't load static assets. Ensure you have installed @swapkit/tokens package"})}})}}function pe(n){const t=b.fromChainOrSignature(n);switch(n){case i.Chain.Bitcoin:case i.Chain.Litecoin:case i.Chain.BitcoinCash:return t.set(10001e-8);case i.Chain.Dogecoin:return t.set(1.00000001);case i.Chain.Avalanche:case i.Chain.Ethereum:return t.set(1e-8);case i.Chain.THORChain:case i.Chain.Maya:return t.set(0);default:return t.set(1e-8)}}async function H(n,t=0){de(n);const e=S.get(n.toUpperCase()),s=(e==null?void 0:e.decimal)||await rt(G(n));return e||S.set(n.toUpperCase(),{identifier:n,decimal:s}),new b({decimal:s,value:x(t,s),identifier:n})}function x(n,t){return typeof n=="bigint"?R({value:n,bigIntDecimal:t,decimal:t}):n}function G(n){const t=n.slice(0,14).includes("/"),[e,s]=n.split(".").pop().split("/"),r=n.includes(".")&&!t?n:`${i.Chain.THORChain}.${s}`,[a,c]=r.split("."),[o,u]=(t?s:c).split("-");return{address:u==null?void 0:u.toLowerCase(),chain:a,isGasAsset:K({chain:a,symbol:c}),isSynthetic:t,symbol:(t?`${e}/`:"")+(u?`${o}-${(u==null?void 0:u.toLowerCase())??""}`:c),ticker:o}}const fe={core_wallet_connection_not_found:10001,core_estimated_max_spendable_chain_not_supported:10002,core_extend_error:10003,core_inbound_data_not_found:10004,core_approve_asset_address_or_from_not_found:10005,core_chain_halted:10099,core_wallet_xdefi_not_installed:10101,core_wallet_evmwallet_not_installed:10102,core_wallet_walletconnect_not_installed:10103,core_wallet_keystore_not_installed:10104,core_wallet_ledger_not_installed:10105,core_wallet_trezor_not_installed:10106,core_wallet_keplr_not_installed:10107,core_wallet_okx_not_installed:10108,core_swap_invalid_params:10200,core_swap_route_not_complete:10201,core_swap_asset_not_recognized:10202,core_swap_contract_not_found:10203,core_swap_route_transaction_not_found:10204,core_swap_contract_not_supported:10205,core_swap_transaction_error:10206,core_swap_quote_mode_not_supported:10207,core_transaction_deposit_error:10301,core_transaction_create_liquidity_rune_error:10302,core_transaction_create_liquidity_asset_error:10303,core_transaction_create_liquidity_invalid_params:10304,core_transaction_add_liquidity_invalid_params:10305,core_transaction_add_liquidity_no_rune_address:10306,core_transaction_add_liquidity_rune_error:10307,core_transaction_add_liquidity_asset_error:10308,core_transaction_withdraw_error:10309,core_transaction_deposit_to_pool_error:10310,core_transaction_deposit_insufficient_funds_error:10311,core_transaction_deposit_gas_error:10312,core_transaction_invalid_sender_address:10313,core_transaction_deposit_server_error:10313,wallet_ledger_connection_error:20001,helpers_number_different_decimals:99101};class z extends Error{constructor(t,e){console.error(e,{stack:e==null?void 0:e.stack,message:e==null?void 0:e.message}),super(t,{cause:{code:fe[t],message:t}}),Object.setPrototypeOf(this,z.prototype)}}class f extends B{eq(t){return this.eqValue(t)}static fromBigInt(t,e){return new f({decimal:e,value:R({value:t,bigIntDecimal:e,decimal:e})})}}exports.AssetValue=b;exports.BigIntArithmetics=B;exports.RequestClient=ft;exports.SwapKitError=z;exports.SwapKitNumber=f;exports.assetFromString=Vt;exports.derivationPathToString=Yt;exports.filterAssets=Nt;exports.formatBigIntToSafeValue=R;exports.gasFeeMultiplier=Pt;exports.getAssetType=at;exports.getAsymmetricAssetShare=ct;exports.getAsymmetricAssetWithdrawAmount=Ht;exports.getAsymmetricRuneShare=ot;exports.getAsymmetricRuneWithdrawAmount=jt;exports.getCommonAssetInfo=it;exports.getDecimal=rt;exports.getEstimatedPoolShare=Lt;exports.getLiquiditySlippage=Ft;exports.getMemoFor=Wt;exports.getMinAmountByChain=pe;exports.getSymmetricPoolShare=ut;exports.getSymmetricWithdraw=Ut;exports.getTHORNameCost=Gt;exports.isGasAsset=K;exports.validateTHORName=Kt;
2
2
  //# sourceMappingURL=index.cjs.map