@galacticcouncil/sdk 0.0.1-beta.10 → 0.0.1-beta.11

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.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var je=Object.create;var Ie=Object.defineProperty;var et=Object.getOwnPropertyDescriptor;var tt=Object.getOwnPropertyNames;var nt=Object.getPrototypeOf,rt=Object.prototype.hasOwnProperty;var ot=(d,n)=>()=>(n||d((n={exports:{}}).exports,n),n.exports),it=(d,n)=>{for(var a in n)Ie(d,a,{get:n[a],enumerable:!0})},Ve=(d,n,a,m)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of tt(n))!rt.call(d,o)&&o!==a&&Ie(d,o,{get:()=>n[o],enumerable:!(m=et(n,o))||m.enumerable});return d};var st=(d,n,a)=>(a=d!=null?je(nt(d)):{},Ve(n||!d||!d.__esModule?Ie(a,"default",{value:d,enumerable:!0}):a,d)),at=d=>Ve(Ie({},"__esModule",{value:!0}),d);var Je=ot((sn,re)=>{var gt={},y,{TextEncoder:mt,TextDecoder:dt}=require("util"),M=0,ve=null;function Me(){return(ve===null||ve.buffer!==y.memory.buffer)&&(ve=new Uint8Array(y.memory.buffer)),ve}var Re=new mt("utf-8"),_t=typeof Re.encodeInto=="function"?function(d,n){return Re.encodeInto(d,n)}:function(d,n){let a=Re.encode(d);return n.set(a),{read:d.length,written:a.length}};function D(d,n,a){if(a===void 0){let P=Re.encode(d),O=n(P.length);return Me().subarray(O,O+P.length).set(P),M=P.length,O}let m=d.length,o=n(m),_=Me(),w=0;for(;w<m;w++){let P=d.charCodeAt(w);if(P>127)break;_[o+w]=P}if(w!==m){w!==0&&(d=d.slice(w)),o=a(o,m,m=w+d.length*3);let P=Me().subarray(o+w,o+m);w+=_t(d,P).written}return M=w,o}var Te=null;function K(){return(Te===null||Te.buffer!==y.memory.buffer)&&(Te=new Int32Array(y.memory.buffer)),Te}var Ze=new dt("utf-8",{ignoreBOM:!0,fatal:!0});Ze.decode();function ce(d,n){return Ze.decode(Me().subarray(d,d+n))}re.exports.calculate_pool_trade_fee=function(d,n,a){try{let _=y.__wbindgen_add_to_stack_pointer(-16),w=D(d,y.__wbindgen_malloc,y.__wbindgen_realloc),P=M;y.calculate_pool_trade_fee(_,w,P,n,a);var m=K()[_/4+0],o=K()[_/4+1];return ce(m,o)}finally{y.__wbindgen_add_to_stack_pointer(16),y.__wbindgen_free(m,o)}};re.exports.get_spot_price=function(d,n,a){try{let _=y.__wbindgen_add_to_stack_pointer(-16),w=D(d,y.__wbindgen_malloc,y.__wbindgen_realloc),P=M,O=D(n,y.__wbindgen_malloc,y.__wbindgen_realloc),N=M,I=D(a,y.__wbindgen_malloc,y.__wbindgen_realloc),x=M;y.get_spot_price(_,w,P,O,N,I,x);var m=K()[_/4+0],o=K()[_/4+1];return ce(m,o)}finally{y.__wbindgen_add_to_stack_pointer(16),y.__wbindgen_free(m,o)}};re.exports.calculate_out_given_in=function(d,n,a){try{let _=y.__wbindgen_add_to_stack_pointer(-16),w=D(d,y.__wbindgen_malloc,y.__wbindgen_realloc),P=M,O=D(n,y.__wbindgen_malloc,y.__wbindgen_realloc),N=M,I=D(a,y.__wbindgen_malloc,y.__wbindgen_realloc),x=M;y.calculate_out_given_in(_,w,P,O,N,I,x);var m=K()[_/4+0],o=K()[_/4+1];return ce(m,o)}finally{y.__wbindgen_add_to_stack_pointer(16),y.__wbindgen_free(m,o)}};re.exports.calculate_in_given_out=function(d,n,a){try{let _=y.__wbindgen_add_to_stack_pointer(-16),w=D(d,y.__wbindgen_malloc,y.__wbindgen_realloc),P=M,O=D(n,y.__wbindgen_malloc,y.__wbindgen_realloc),N=M,I=D(a,y.__wbindgen_malloc,y.__wbindgen_realloc),x=M;y.calculate_in_given_out(_,w,P,O,N,I,x);var m=K()[_/4+0],o=K()[_/4+1];return ce(m,o)}finally{y.__wbindgen_add_to_stack_pointer(16),y.__wbindgen_free(m,o)}};re.exports.calculate_liquidity_in=function(d,n,a){try{let _=y.__wbindgen_add_to_stack_pointer(-16),w=D(d,y.__wbindgen_malloc,y.__wbindgen_realloc),P=M,O=D(n,y.__wbindgen_malloc,y.__wbindgen_realloc),N=M,I=D(a,y.__wbindgen_malloc,y.__wbindgen_realloc),x=M;y.calculate_liquidity_in(_,w,P,O,N,I,x);var m=K()[_/4+0],o=K()[_/4+1];return ce(m,o)}finally{y.__wbindgen_add_to_stack_pointer(16),y.__wbindgen_free(m,o)}};re.exports.calculate_shares=function(d,n,a){try{let _=y.__wbindgen_add_to_stack_pointer(-16),w=D(d,y.__wbindgen_malloc,y.__wbindgen_realloc),P=M,O=D(n,y.__wbindgen_malloc,y.__wbindgen_realloc),N=M,I=D(a,y.__wbindgen_malloc,y.__wbindgen_realloc),x=M;y.calculate_shares(_,w,P,O,N,I,x);var m=K()[_/4+0],o=K()[_/4+1];return ce(m,o)}finally{y.__wbindgen_add_to_stack_pointer(16),y.__wbindgen_free(m,o)}};re.exports.calculate_liquidity_out_asset_a=function(d,n,a,m){try{let w=y.__wbindgen_add_to_stack_pointer(-16),P=D(d,y.__wbindgen_malloc,y.__wbindgen_realloc),O=M,N=D(n,y.__wbindgen_malloc,y.__wbindgen_realloc),I=M,x=D(a,y.__wbindgen_malloc,y.__wbindgen_realloc),R=M,F=D(m,y.__wbindgen_malloc,y.__wbindgen_realloc),A=M;y.calculate_liquidity_out_asset_a(w,P,O,N,I,x,R,F,A);var o=K()[w/4+0],_=K()[w/4+1];return ce(o,_)}finally{y.__wbindgen_add_to_stack_pointer(16),y.__wbindgen_free(o,_)}};re.exports.calculate_liquidity_out_asset_b=function(d,n,a,m){try{let w=y.__wbindgen_add_to_stack_pointer(-16),P=D(d,y.__wbindgen_malloc,y.__wbindgen_realloc),O=M,N=D(n,y.__wbindgen_malloc,y.__wbindgen_realloc),I=M,x=D(a,y.__wbindgen_malloc,y.__wbindgen_realloc),R=M,F=D(m,y.__wbindgen_malloc,y.__wbindgen_realloc),A=M;y.calculate_liquidity_out_asset_b(w,P,O,N,I,x,R,F,A);var o=K()[w/4+0],_=K()[w/4+1];return ce(o,_)}finally{y.__wbindgen_add_to_stack_pointer(16),y.__wbindgen_free(o,_)}};var ht=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),wt=require("fs").readFileSync(ht),Pt=new WebAssembly.Module(wt),yt=new WebAssembly.Instance(Pt,gt);y=yt.exports;re.exports.__wasm=y});var Bt={};it(Bt,{BigNumber:()=>me,DECIMAL_PLACES:()=>Ye,INFINITY:()=>pt,ONE:()=>ft,PolkadotPoolService:()=>be,PoolFactory:()=>fe,PoolType:()=>ye,Router:()=>pe,TradeRouter:()=>Be,TradeType:()=>Ge,XykPool:()=>ae,ZERO:()=>ut,bnum:()=>U,scale:()=>se});module.exports=at(Bt);var Ee=class{constructor(n=1/0){this.capacity=n;this.storage=[]}enqueue(n){if(this.size()===this.capacity)throw Error("Queue has reached max capacity, you cannot add more items");this.storage.push(n)}dequeue(){return this.storage.shift()}size(){return this.storage.length}};var lt=4,he=class{isNotVisited(n,a){let m=!0;return a.forEach(o=>{o[0]===n&&(m=!1)}),m}findPaths(n,a,m){let o=[],_=new Ee,w=[];for(w.push([a,""]),_.enqueue(w);_.size()>0;){let P=_.dequeue();if(P==null||P.length>lt)return o;let O=P[P.length-1];(m===null||O[0]===m)&&o.push(P),n[O[0]].forEach(I=>{if(this.isNotVisited(I[0],P)){let x=[...P];x.push(I),_.enqueue(x)}})}return o}buildAndPopulateGraph(n,a){let m=[];for(let o=0;o<n.length;o++)m.push([]);for(let[o,_,w]of a){let P=parseInt(_),O=parseInt(w);m[P].push([O,o])}return m}};function Le(d){let n={};for(let a of d){let m=a.tokens.length;for(let o=0;o<m;o++){n[a.tokens[o].id]||(n[a.tokens[o].id]=[]);for(let _=0;_<m;_++){if(o==_)continue;let w=[a.address,a.tokens[o].id,a.tokens[_].id];n[a.tokens[o].id].push(w)}}}return n}var we=class{getProposals(n,a,m){let o=Le(m),_=Object.keys(o),w=_.map(I=>o[I]).flat(),P=new he,O=P.buildAndPopulateGraph(_,w),N=P.findPaths(O,parseInt(n),a?parseInt(a):null);return this.parsePaths(N)}parsePaths(n){let a=[];for(let m of n){let o=[];for(let _=0;_<m.length;_++){let w=m[_],P=m[_+1];if(P==null)break;o.push(this.toEdge(w,P))}a.push(o)}return a}toEdge(n,a){return[a[1],n[0].toString(),a[0].toString()]}};var Pe=class{constructor(n){this.api=n}getStorageKey(n,a){return n[0].toHuman()[a]}getStorageEntryArray(n){return n[1].toHuman()}async getAssetMetadata(n){return await this.api.query.assetRegistry.assetMetadataMap(n)}async getSystemAccountBalance(n){let{data:{free:a}}=await this.api.query.system.account(n);return a.toString()}async getTokenAccountBalance(n,a){let{free:m}=await this.api.query.tokens.accounts(n,a);return m.toString()}};var ye=(o=>(o.XYK="XYK",o.LBP="LBP",o.Stable="Stable",o.Omni="Omni",o))(ye||{}),Ge=(a=>(a.Buy="Buy",a.Sell="Sell",a))(Ge||{});var Ae=class extends Pe{async getPools(){let a=(await this.api.query.xyk.poolAssets.entries()).map(async m=>{let o=this.getStorageKey(m,0),_=this.getStorageEntryArray(m),w=await this.getPoolTokens(o,_);return{address:o,type:"XYK",tradeFee:this.getTradeFee(),tokens:w}});return Promise.all(a)}async getPoolTokens(n,a){let m=a.map(async o=>{let _=await this.getBalance(n,o),P=(await super.getAssetMetadata(o)).toHuman();return{id:o,balance:_,decimals:P.decimals,symbol:P.symbol}});return Promise.all(m)}getBalance(n,a){return a==="0"?this.getSystemAccountBalance(n):this.getTokenAccountBalance(n,a)}getTradeFee(){let n=this.api.consts.xyk.getExchangeFee;return(n[0].toNumber()/n[1].toNumber()*100).toString()}};var be=class{constructor(n){this.api=n}async getPools(){let n=[],a=await new Ae(this.api).getPools();return n.push(a),n.flat()}};var ct=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,He=Math.ceil,ne=Math.floor,W="[BigNumber Error] ",We=W+"Number primitive has more than 15 significant digits: ",ee=1e14,E=14,Ue=9007199254740991,Xe=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],le=1e7,H=1e9;function $e(d){var n,a,m,o=b.prototype={constructor:b,toString:null,valueOf:null},_=new b(1),w=20,P=4,O=-7,N=21,I=-1e7,x=1e7,R=!1,F=1,A=0,$={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},j="0123456789abcdefghijklmnopqrstuvwxyz",ue=!0;function b(e,t){var r,f,s,c,g,i,l,p,u=this;if(!(u instanceof b))return new b(e,t);if(t==null){if(e&&e._isBigNumber===!0){u.s=e.s,!e.c||e.e>x?u.c=u.e=null:e.e<I?u.c=[u.e=0]:(u.e=e.e,u.c=e.c.slice());return}if((i=typeof e=="number")&&e*0==0){if(u.s=1/e<0?(e=-e,-1):1,e===~~e){for(c=0,g=e;g>=10;g/=10,c++);c>x?u.c=u.e=null:(u.e=c,u.c=[e]);return}p=String(e)}else{if(!ct.test(p=String(e)))return m(u,p,i);u.s=p.charCodeAt(0)==45?(p=p.slice(1),-1):1}(c=p.indexOf("."))>-1&&(p=p.replace(".","")),(g=p.search(/e/i))>0?(c<0&&(c=g),c+=+p.slice(g+1),p=p.substring(0,g)):c<0&&(c=p.length)}else{if(C(t,2,j.length,"Base"),t==10&&ue)return u=new b(e),Y(u,w+u.e+1,P);if(p=String(e),i=typeof e=="number"){if(e*0!=0)return m(u,p,i,t);if(u.s=1/e<0?(p=p.slice(1),-1):1,b.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(We+e)}else u.s=p.charCodeAt(0)===45?(p=p.slice(1),-1):1;for(r=j.slice(0,t),c=g=0,l=p.length;g<l;g++)if(r.indexOf(f=p.charAt(g))<0){if(f=="."){if(g>c){c=l;continue}}else if(!s&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){s=!0,g=-1,c=0;continue}return m(u,String(e),i,t)}i=!1,p=a(p,t,10,u.s),(c=p.indexOf("."))>-1?p=p.replace(".",""):c=p.length}for(g=0;p.charCodeAt(g)===48;g++);for(l=p.length;p.charCodeAt(--l)===48;);if(p=p.slice(g,++l)){if(l-=g,i&&b.DEBUG&&l>15&&(e>Ue||e!==ne(e)))throw Error(We+u.s*e);if((c=c-g-1)>x)u.c=u.e=null;else if(c<I)u.c=[u.e=0];else{if(u.e=c,u.c=[],g=(c+1)%E,c<0&&(g+=E),g<l){for(g&&u.c.push(+p.slice(0,g)),l-=E;g<l;)u.c.push(+p.slice(g,g+=E));g=E-(p=p.slice(g)).length}else g-=l;for(;g--;p+="0");u.c.push(+p)}}else u.c=[u.e=0]}b.clone=$e,b.ROUND_UP=0,b.ROUND_DOWN=1,b.ROUND_CEIL=2,b.ROUND_FLOOR=3,b.ROUND_HALF_UP=4,b.ROUND_HALF_DOWN=5,b.ROUND_HALF_EVEN=6,b.ROUND_HALF_CEIL=7,b.ROUND_HALF_FLOOR=8,b.EUCLID=9,b.config=b.set=function(e){var t,r;if(e!=null)if(typeof e=="object"){if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(r=e[t],C(r,0,H,t),w=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(r=e[t],C(r,0,8,t),P=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&(r=e[t],r&&r.pop?(C(r[0],-H,0,t),C(r[1],0,H,t),O=r[0],N=r[1]):(C(r,-H,H,t),O=-(N=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if(r=e[t],r&&r.pop)C(r[0],-H,-1,t),C(r[1],1,H,t),I=r[0],x=r[1];else if(C(r,-H,H,t),r)I=-(x=r<0?-r:r);else throw Error(W+t+" cannot be zero: "+r);if(e.hasOwnProperty(t="CRYPTO"))if(r=e[t],r===!!r)if(r)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))R=r;else throw R=!r,Error(W+"crypto unavailable");else R=r;else throw Error(W+t+" not true or false: "+r);if(e.hasOwnProperty(t="MODULO_MODE")&&(r=e[t],C(r,0,9,t),F=r),e.hasOwnProperty(t="POW_PRECISION")&&(r=e[t],C(r,0,H,t),A=r),e.hasOwnProperty(t="FORMAT"))if(r=e[t],typeof r=="object")$=r;else throw Error(W+t+" not an object: "+r);if(e.hasOwnProperty(t="ALPHABET"))if(r=e[t],typeof r=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(r))ue=r.slice(0,10)=="0123456789",j=r;else throw Error(W+t+" invalid: "+r)}else throw Error(W+"Object expected: "+e);return{DECIMAL_PLACES:w,ROUNDING_MODE:P,EXPONENTIAL_AT:[O,N],RANGE:[I,x],CRYPTO:R,MODULO_MODE:F,POW_PRECISION:A,FORMAT:$,ALPHABET:j}},b.isBigNumber=function(e){if(!e||e._isBigNumber!==!0)return!1;if(!b.DEBUG)return!0;var t,r,f=e.c,s=e.e,c=e.s;e:if({}.toString.call(f)=="[object Array]"){if((c===1||c===-1)&&s>=-H&&s<=H&&s===ne(s)){if(f[0]===0){if(s===0&&f.length===1)return!0;break e}if(t=(s+1)%E,t<1&&(t+=E),String(f[0]).length==t){for(t=0;t<f.length;t++)if(r=f[t],r<0||r>=ee||r!==ne(r))break e;if(r!==0)return!0}}}else if(f===null&&s===null&&(c===null||c===1||c===-1))return!0;throw Error(W+"Invalid BigNumber: "+e)},b.maximum=b.max=function(){return Ke(arguments,o.lt)},b.minimum=b.min=function(){return Ke(arguments,o.gt)},b.random=function(){var e=9007199254740992,t=Math.random()*e&2097151?function(){return ne(Math.random()*e)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(r){var f,s,c,g,i,l=0,p=[],u=new b(_);if(r==null?r=w:C(r,0,H),g=He(r/E),R)if(crypto.getRandomValues){for(f=crypto.getRandomValues(new Uint32Array(g*=2));l<g;)i=f[l]*131072+(f[l+1]>>>11),i>=9e15?(s=crypto.getRandomValues(new Uint32Array(2)),f[l]=s[0],f[l+1]=s[1]):(p.push(i%1e14),l+=2);l=g/2}else if(crypto.randomBytes){for(f=crypto.randomBytes(g*=7);l<g;)i=(f[l]&31)*281474976710656+f[l+1]*1099511627776+f[l+2]*4294967296+f[l+3]*16777216+(f[l+4]<<16)+(f[l+5]<<8)+f[l+6],i>=9e15?crypto.randomBytes(7).copy(f,l):(p.push(i%1e14),l+=7);l=g/7}else throw R=!1,Error(W+"crypto unavailable");if(!R)for(;l<g;)i=t(),i<9e15&&(p[l++]=i%1e14);for(g=p[--l],r%=E,g&&r&&(i=Xe[E-r],p[l]=ne(g/i)*i);p[l]===0;p.pop(),l--);if(l<0)p=[c=0];else{for(c=-1;p[0]===0;p.splice(0,1),c-=E);for(l=1,i=p[0];i>=10;i/=10,l++);l<E&&(c-=E-l)}return u.e=c,u.c=p,u}}(),b.sum=function(){for(var e=1,t=arguments,r=new b(t[0]);e<t.length;)r=r.plus(t[e++]);return r},a=function(){var e="0123456789";function t(r,f,s,c){for(var g,i=[0],l,p=0,u=r.length;p<u;){for(l=i.length;l--;i[l]*=f);for(i[0]+=c.indexOf(r.charAt(p++)),g=0;g<i.length;g++)i[g]>s-1&&(i[g+1]==null&&(i[g+1]=0),i[g+1]+=i[g]/s|0,i[g]%=s)}return i.reverse()}return function(r,f,s,c,g){var i,l,p,u,h,B,S,v,q=r.indexOf("."),G=w,k=P;for(q>=0&&(u=A,A=0,r=r.replace(".",""),v=new b(f),B=v.pow(r.length-q),A=u,v.c=t(ie(Z(B.c),B.e,"0"),10,s,e),v.e=v.c.length),S=t(r,f,s,g?(i=j,e):(i=e,j)),p=u=S.length;S[--u]==0;S.pop());if(!S[0])return i.charAt(0);if(q<0?--p:(B.c=S,B.e=p,B.s=c,B=n(B,v,G,k,s),S=B.c,h=B.r,p=B.e),l=p+G+1,q=S[l],u=s/2,h=h||l<0||S[l+1]!=null,h=k<4?(q!=null||h)&&(k==0||k==(B.s<0?3:2)):q>u||q==u&&(k==4||h||k==6&&S[l-1]&1||k==(B.s<0?8:7)),l<1||!S[0])r=h?ie(i.charAt(1),-G,i.charAt(0)):i.charAt(0);else{if(S.length=l,h)for(--s;++S[--l]>s;)S[l]=0,l||(++p,S=[1].concat(S));for(u=S.length;!S[--u];);for(q=0,r="";q<=u;r+=i.charAt(S[q++]));r=ie(r,p,i.charAt(0))}return r}}(),n=function(){function e(f,s,c){var g,i,l,p,u=0,h=f.length,B=s%le,S=s/le|0;for(f=f.slice();h--;)l=f[h]%le,p=f[h]/le|0,g=S*l+p*B,i=B*l+g%le*le+u,u=(i/c|0)+(g/le|0)+S*p,f[h]=i%c;return u&&(f=[u].concat(f)),f}function t(f,s,c,g){var i,l;if(c!=g)l=c>g?1:-1;else for(i=l=0;i<c;i++)if(f[i]!=s[i]){l=f[i]>s[i]?1:-1;break}return l}function r(f,s,c,g){for(var i=0;c--;)f[c]-=i,i=f[c]<s[c]?1:0,f[c]=i*g+f[c]-s[c];for(;!f[0]&&f.length>1;f.splice(0,1));}return function(f,s,c,g,i){var l,p,u,h,B,S,v,q,G,k,T,z,Se,Ce,qe,te,_e,Q=f.s==s.s?1:-1,V=f.c,L=s.c;if(!V||!V[0]||!L||!L[0])return new b(!f.s||!s.s||(V?L&&V[0]==L[0]:!L)?NaN:V&&V[0]==0||!L?Q*0:Q/0);for(q=new b(Q),G=q.c=[],p=f.e-s.e,Q=c+p+1,i||(i=ee,p=J(f.e/E)-J(s.e/E),Q=Q/E|0),u=0;L[u]==(V[u]||0);u++);if(L[u]>(V[u]||0)&&p--,Q<0)G.push(1),h=!0;else{for(Ce=V.length,te=L.length,u=0,Q+=2,B=ne(i/(L[0]+1)),B>1&&(L=e(L,B,i),V=e(V,B,i),te=L.length,Ce=V.length),Se=te,k=V.slice(0,te),T=k.length;T<te;k[T++]=0);_e=L.slice(),_e=[0].concat(_e),qe=L[0],L[1]>=i/2&&qe++;do{if(B=0,l=t(L,k,te,T),l<0){if(z=k[0],te!=T&&(z=z*i+(k[1]||0)),B=ne(z/qe),B>1)for(B>=i&&(B=i-1),S=e(L,B,i),v=S.length,T=k.length;t(S,k,v,T)==1;)B--,r(S,te<v?_e:L,v,i),v=S.length,l=1;else B==0&&(l=B=1),S=L.slice(),v=S.length;if(v<T&&(S=[0].concat(S)),r(k,S,T,i),T=k.length,l==-1)for(;t(L,k,te,T)<1;)B++,r(k,te<T?_e:L,T,i),T=k.length}else l===0&&(B++,k=[0]);G[u++]=B,k[0]?k[T++]=V[Se]||0:(k=[V[Se]],T=1)}while((Se++<Ce||k[0]!=null)&&Q--);h=k[0]!=null,G[0]||G.splice(0,1)}if(i==ee){for(u=1,Q=G[0];Q>=10;Q/=10,u++);Y(q,c+(q.e=u+p*E-1)+1,g,h)}else q.e=p,q.r=+h;return q}}();function De(e,t,r,f){var s,c,g,i,l;if(r==null?r=P:C(r,0,8),!e.c)return e.toString();if(s=e.c[0],g=e.e,t==null)l=Z(e.c),l=f==1||f==2&&(g<=O||g>=N)?ke(l,g):ie(l,g,"0");else if(e=Y(new b(e),t,r),c=e.e,l=Z(e.c),i=l.length,f==1||f==2&&(t<=c||c<=O)){for(;i<t;l+="0",i++);l=ke(l,c)}else if(t-=g,l=ie(l,c,"0"),c+1>i){if(--t>0)for(l+=".";t--;l+="0");}else if(t+=c-i,t>0)for(c+1==i&&(l+=".");t--;l+="0");return e.s<0&&s?"-"+l:l}function Ke(e,t){for(var r,f=1,s=new b(e[0]);f<e.length;f++)if(r=new b(e[f]),r.s)t.call(s,r)&&(s=r);else{s=r;break}return s}function Fe(e,t,r){for(var f=1,s=t.length;!t[--s];t.pop());for(s=t[0];s>=10;s/=10,f++);return(r=f+r*E-1)>x?e.c=e.e=null:r<I?e.c=[e.e=0]:(e.e=r,e.c=t),e}m=function(){var e=/^(-?)0([xbo])(?=\w[\w.]*$)/i,t=/^([^.]+)\.$/,r=/^\.([^.]+)$/,f=/^-?(Infinity|NaN)$/,s=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(c,g,i,l){var p,u=i?g:g.replace(s,"");if(f.test(u))c.s=isNaN(u)?null:u<0?-1:1;else{if(!i&&(u=u.replace(e,function(h,B,S){return p=(S=S.toLowerCase())=="x"?16:S=="b"?2:8,!l||l==p?B:h}),l&&(p=l,u=u.replace(t,"$1").replace(r,"0.$1")),g!=u))return new b(u,p);if(b.DEBUG)throw Error(W+"Not a"+(l?" base "+l:"")+" number: "+g);c.s=null}c.c=c.e=null}}();function Y(e,t,r,f){var s,c,g,i,l,p,u,h=e.c,B=Xe;if(h){e:{for(s=1,i=h[0];i>=10;i/=10,s++);if(c=t-s,c<0)c+=E,g=t,l=h[p=0],u=l/B[s-g-1]%10|0;else if(p=He((c+1)/E),p>=h.length)if(f){for(;h.length<=p;h.push(0));l=u=0,s=1,c%=E,g=c-E+1}else break e;else{for(l=i=h[p],s=1;i>=10;i/=10,s++);c%=E,g=c-E+s,u=g<0?0:l/B[s-g-1]%10|0}if(f=f||t<0||h[p+1]!=null||(g<0?l:l%B[s-g-1]),f=r<4?(u||f)&&(r==0||r==(e.s<0?3:2)):u>5||u==5&&(r==4||f||r==6&&(c>0?g>0?l/B[s-g]:0:h[p-1])%10&1||r==(e.s<0?8:7)),t<1||!h[0])return h.length=0,f?(t-=e.e+1,h[0]=B[(E-t%E)%E],e.e=-t||0):h[0]=e.e=0,e;if(c==0?(h.length=p,i=1,p--):(h.length=p+1,i=B[E-c],h[p]=g>0?ne(l/B[s-g]%B[g])*i:0),f)for(;;)if(p==0){for(c=1,g=h[0];g>=10;g/=10,c++);for(g=h[0]+=i,i=1;g>=10;g/=10,i++);c!=i&&(e.e++,h[0]==ee&&(h[0]=1));break}else{if(h[p]+=i,h[p]!=ee)break;h[p--]=0,i=1}for(c=h.length;h[--c]===0;h.pop());}e.e>x?e.c=e.e=null:e.e<I&&(e.c=[e.e=0])}return e}function oe(e){var t,r=e.e;return r===null?e.toString():(t=Z(e.c),t=r<=O||r>=N?ke(t,r):ie(t,r,"0"),e.s<0?"-"+t:t)}return o.absoluteValue=o.abs=function(){var e=new b(this);return e.s<0&&(e.s=1),e},o.comparedTo=function(e,t){return ge(this,new b(e,t))},o.decimalPlaces=o.dp=function(e,t){var r,f,s,c=this;if(e!=null)return C(e,0,H),t==null?t=P:C(t,0,8),Y(new b(c),e+c.e+1,t);if(!(r=c.c))return null;if(f=((s=r.length-1)-J(this.e/E))*E,s=r[s])for(;s%10==0;s/=10,f--);return f<0&&(f=0),f},o.dividedBy=o.div=function(e,t){return n(this,new b(e,t),w,P)},o.dividedToIntegerBy=o.idiv=function(e,t){return n(this,new b(e,t),0,1)},o.exponentiatedBy=o.pow=function(e,t){var r,f,s,c,g,i,l,p,u,h=this;if(e=new b(e),e.c&&!e.isInteger())throw Error(W+"Exponent not an integer: "+oe(e));if(t!=null&&(t=new b(t)),i=e.e>14,!h.c||!h.c[0]||h.c[0]==1&&!h.e&&h.c.length==1||!e.c||!e.c[0])return u=new b(Math.pow(+oe(h),i?2-xe(e):+oe(e))),t?u.mod(t):u;if(l=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new b(NaN);f=!l&&h.isInteger()&&t.isInteger(),f&&(h=h.mod(t))}else{if(e.e>9&&(h.e>0||h.e<-1||(h.e==0?h.c[0]>1||i&&h.c[1]>=24e7:h.c[0]<8e13||i&&h.c[0]<=9999975e7)))return c=h.s<0&&xe(e)?-0:0,h.e>-1&&(c=1/c),new b(l?1/c:c);A&&(c=He(A/E+2))}for(i?(r=new b(.5),l&&(e.s=1),p=xe(e)):(s=Math.abs(+oe(e)),p=s%2),u=new b(_);;){if(p){if(u=u.times(h),!u.c)break;c?u.c.length>c&&(u.c.length=c):f&&(u=u.mod(t))}if(s){if(s=ne(s/2),s===0)break;p=s%2}else if(e=e.times(r),Y(e,e.e+1,1),e.e>14)p=xe(e);else{if(s=+oe(e),s===0)break;p=s%2}h=h.times(h),c?h.c&&h.c.length>c&&(h.c.length=c):f&&(h=h.mod(t))}return f?u:(l&&(u=_.div(u)),t?u.mod(t):c?Y(u,A,P,g):u)},o.integerValue=function(e){var t=new b(this);return e==null?e=P:C(e,0,8),Y(t,t.e+1,e)},o.isEqualTo=o.eq=function(e,t){return ge(this,new b(e,t))===0},o.isFinite=function(){return!!this.c},o.isGreaterThan=o.gt=function(e,t){return ge(this,new b(e,t))>0},o.isGreaterThanOrEqualTo=o.gte=function(e,t){return(t=ge(this,new b(e,t)))===1||t===0},o.isInteger=function(){return!!this.c&&J(this.e/E)>this.c.length-2},o.isLessThan=o.lt=function(e,t){return ge(this,new b(e,t))<0},o.isLessThanOrEqualTo=o.lte=function(e,t){return(t=ge(this,new b(e,t)))===-1||t===0},o.isNaN=function(){return!this.s},o.isNegative=function(){return this.s<0},o.isPositive=function(){return this.s>0},o.isZero=function(){return!!this.c&&this.c[0]==0},o.minus=function(e,t){var r,f,s,c,g=this,i=g.s;if(e=new b(e,t),t=e.s,!i||!t)return new b(NaN);if(i!=t)return e.s=-t,g.plus(e);var l=g.e/E,p=e.e/E,u=g.c,h=e.c;if(!l||!p){if(!u||!h)return u?(e.s=-t,e):new b(h?g:NaN);if(!u[0]||!h[0])return h[0]?(e.s=-t,e):new b(u[0]?g:P==3?-0:0)}if(l=J(l),p=J(p),u=u.slice(),i=l-p){for((c=i<0)?(i=-i,s=u):(p=l,s=h),s.reverse(),t=i;t--;s.push(0));s.reverse()}else for(f=(c=(i=u.length)<(t=h.length))?i:t,i=t=0;t<f;t++)if(u[t]!=h[t]){c=u[t]<h[t];break}if(c&&(s=u,u=h,h=s,e.s=-e.s),t=(f=h.length)-(r=u.length),t>0)for(;t--;u[r++]=0);for(t=ee-1;f>i;){if(u[--f]<h[f]){for(r=f;r&&!u[--r];u[r]=t);--u[r],u[f]+=ee}u[f]-=h[f]}for(;u[0]==0;u.splice(0,1),--p);return u[0]?Fe(e,u,p):(e.s=P==3?-1:1,e.c=[e.e=0],e)},o.modulo=o.mod=function(e,t){var r,f,s=this;return e=new b(e,t),!s.c||!e.s||e.c&&!e.c[0]?new b(NaN):!e.c||s.c&&!s.c[0]?new b(s):(F==9?(f=e.s,e.s=1,r=n(s,e,0,3),e.s=f,r.s*=f):r=n(s,e,0,F),e=s.minus(r.times(e)),!e.c[0]&&F==1&&(e.s=s.s),e)},o.multipliedBy=o.times=function(e,t){var r,f,s,c,g,i,l,p,u,h,B,S,v,q,G,k=this,T=k.c,z=(e=new b(e,t)).c;if(!T||!z||!T[0]||!z[0])return!k.s||!e.s||T&&!T[0]&&!z||z&&!z[0]&&!T?e.c=e.e=e.s=null:(e.s*=k.s,!T||!z?e.c=e.e=null:(e.c=[0],e.e=0)),e;for(f=J(k.e/E)+J(e.e/E),e.s*=k.s,l=T.length,h=z.length,l<h&&(v=T,T=z,z=v,s=l,l=h,h=s),s=l+h,v=[];s--;v.push(0));for(q=ee,G=le,s=h;--s>=0;){for(r=0,B=z[s]%G,S=z[s]/G|0,g=l,c=s+g;c>s;)p=T[--g]%G,u=T[g]/G|0,i=S*p+u*B,p=B*p+i%G*G+v[c]+r,r=(p/q|0)+(i/G|0)+S*u,v[c--]=p%q;v[c]=r}return r?++f:v.splice(0,1),Fe(e,v,f)},o.negated=function(){var e=new b(this);return e.s=-e.s||null,e},o.plus=function(e,t){var r,f=this,s=f.s;if(e=new b(e,t),t=e.s,!s||!t)return new b(NaN);if(s!=t)return e.s=-t,f.minus(e);var c=f.e/E,g=e.e/E,i=f.c,l=e.c;if(!c||!g){if(!i||!l)return new b(s/0);if(!i[0]||!l[0])return l[0]?e:new b(i[0]?f:s*0)}if(c=J(c),g=J(g),i=i.slice(),s=c-g){for(s>0?(g=c,r=l):(s=-s,r=i),r.reverse();s--;r.push(0));r.reverse()}for(s=i.length,t=l.length,s-t<0&&(r=l,l=i,i=r,t=s),s=0;t;)s=(i[--t]=i[t]+l[t]+s)/ee|0,i[t]=ee===i[t]?0:i[t]%ee;return s&&(i=[s].concat(i),++g),Fe(e,i,g)},o.precision=o.sd=function(e,t){var r,f,s,c=this;if(e!=null&&e!==!!e)return C(e,1,H),t==null?t=P:C(t,0,8),Y(new b(c),e,t);if(!(r=c.c))return null;if(s=r.length-1,f=s*E+1,s=r[s]){for(;s%10==0;s/=10,f--);for(s=r[0];s>=10;s/=10,f++);}return e&&c.e+1>f&&(f=c.e+1),f},o.shiftedBy=function(e){return C(e,-Ue,Ue),this.times("1e"+e)},o.squareRoot=o.sqrt=function(){var e,t,r,f,s,c=this,g=c.c,i=c.s,l=c.e,p=w+4,u=new b("0.5");if(i!==1||!g||!g[0])return new b(!i||i<0&&(!g||g[0])?NaN:g?c:1/0);if(i=Math.sqrt(+oe(c)),i==0||i==1/0?(t=Z(g),(t.length+l)%2==0&&(t+="0"),i=Math.sqrt(+t),l=J((l+1)/2)-(l<0||l%2),i==1/0?t="5e"+l:(t=i.toExponential(),t=t.slice(0,t.indexOf("e")+1)+l),r=new b(t)):r=new b(i+""),r.c[0]){for(l=r.e,i=l+p,i<3&&(i=0);;)if(s=r,r=u.times(s.plus(n(c,s,p,1))),Z(s.c).slice(0,i)===(t=Z(r.c)).slice(0,i))if(r.e<l&&--i,t=t.slice(i-3,i+1),t=="9999"||!f&&t=="4999"){if(!f&&(Y(s,s.e+w+2,0),s.times(s).eq(c))){r=s;break}p+=4,i+=4,f=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(Y(r,r.e+w+2,1),e=!r.times(r).eq(c));break}}return Y(r,r.e+w+1,P,e)},o.toExponential=function(e,t){return e!=null&&(C(e,0,H),e++),De(this,e,t,1)},o.toFixed=function(e,t){return e!=null&&(C(e,0,H),e=e+this.e+1),De(this,e,t)},o.toFormat=function(e,t,r){var f,s=this;if(r==null)e!=null&&t&&typeof t=="object"?(r=t,t=null):e&&typeof e=="object"?(r=e,e=t=null):r=$;else if(typeof r!="object")throw Error(W+"Argument not an object: "+r);if(f=s.toFixed(e,t),s.c){var c,g=f.split("."),i=+r.groupSize,l=+r.secondaryGroupSize,p=r.groupSeparator||"",u=g[0],h=g[1],B=s.s<0,S=B?u.slice(1):u,v=S.length;if(l&&(c=i,i=l,l=c,v-=c),i>0&&v>0){for(c=v%i||i,u=S.substr(0,c);c<v;c+=i)u+=p+S.substr(c,i);l>0&&(u+=p+S.slice(c)),B&&(u="-"+u)}f=h?u+(r.decimalSeparator||"")+((l=+r.fractionGroupSize)?h.replace(new RegExp("\\d{"+l+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):h):u}return(r.prefix||"")+f+(r.suffix||"")},o.toFraction=function(e){var t,r,f,s,c,g,i,l,p,u,h,B,S=this,v=S.c;if(e!=null&&(i=new b(e),!i.isInteger()&&(i.c||i.s!==1)||i.lt(_)))throw Error(W+"Argument "+(i.isInteger()?"out of range: ":"not an integer: ")+oe(i));if(!v)return new b(S);for(t=new b(_),p=r=new b(_),f=l=new b(_),B=Z(v),c=t.e=B.length-S.e-1,t.c[0]=Xe[(g=c%E)<0?E+g:g],e=!e||i.comparedTo(t)>0?c>0?t:p:i,g=x,x=1/0,i=new b(B),l.c[0]=0;u=n(i,t,0,1),s=r.plus(u.times(f)),s.comparedTo(e)!=1;)r=f,f=s,p=l.plus(u.times(s=p)),l=s,t=i.minus(u.times(s=t)),i=s;return s=n(e.minus(r),f,0,1),l=l.plus(s.times(p)),r=r.plus(s.times(f)),l.s=p.s=S.s,c=c*2,h=n(p,f,c,P).minus(S).abs().comparedTo(n(l,r,c,P).minus(S).abs())<1?[p,f]:[l,r],x=g,h},o.toNumber=function(){return+oe(this)},o.toPrecision=function(e,t){return e!=null&&C(e,1,H),De(this,e,t,2)},o.toString=function(e){var t,r=this,f=r.s,s=r.e;return s===null?f?(t="Infinity",f<0&&(t="-"+t)):t="NaN":(e==null?t=s<=O||s>=N?ke(Z(r.c),s):ie(Z(r.c),s,"0"):e===10&&ue?(r=Y(new b(r),w+s+1,P),t=ie(Z(r.c),r.e,"0")):(C(e,2,j.length,"Base"),t=a(ie(Z(r.c),s,"0"),10,e,f,!0)),f<0&&r.c[0]&&(t="-"+t)),t},o.valueOf=o.toJSON=function(){return oe(this)},o._isBigNumber=!0,o[Symbol.toStringTag]="BigNumber",o[Symbol.for("nodejs.util.inspect.custom")]=o.valueOf,d!=null&&b.set(d),b}function J(d){var n=d|0;return d>0||d===n?n:n-1}function Z(d){for(var n,a,m=1,o=d.length,_=d[0]+"";m<o;){for(n=d[m++]+"",a=E-n.length;a--;n="0"+n);_+=n}for(o=_.length;_.charCodeAt(--o)===48;);return _.slice(0,o+1||1)}function ge(d,n){var a,m,o=d.c,_=n.c,w=d.s,P=n.s,O=d.e,N=n.e;if(!w||!P)return null;if(a=o&&!o[0],m=_&&!_[0],a||m)return a?m?0:-P:w;if(w!=P)return w;if(a=w<0,m=O==N,!o||!_)return m?0:!o^a?1:-1;if(!m)return O>N^a?1:-1;for(P=(O=o.length)<(N=_.length)?O:N,w=0;w<P;w++)if(o[w]!=_[w])return o[w]>_[w]^a?1:-1;return O==N?0:O>N^a?1:-1}function C(d,n,a,m){if(d<n||d>a||d!==ne(d))throw Error(W+(m||"Argument")+(typeof d=="number"?d<n||d>a?" out of range: ":" not an integer: ":" not a primitive number: ")+String(d))}function xe(d){var n=d.c.length-1;return J(d.e/E)==n&&d.c[n]%2!=0}function ke(d,n){return(d.length>1?d.charAt(0)+"."+d.slice(1):d)+(n<0?"e":"e+")+n}function ie(d,n,a){var m,o;if(n<0){for(o=a+".";++n;o+=a);d=o+d}else if(m=d.length,++n>m){for(o=a,n-=m;--n;o+=a);d+=o}else n<m&&(d=d.slice(0,n)+"."+d.slice(n));return d}var me=$e();var Ye=12;me.config({EXPONENTIAL_AT:[-100,100],ROUNDING_MODE:1,DECIMAL_PLACES:Ye});var ut=U(0),ft=U(1),pt=U("Infinity");function se(d,n){let a=new me(n.toString()),m=new me(10).pow(a);return d.times(m)}function U(d){return new me(d.toString())}function Qe(d){return U(parseFloat(d)/100)}function ze(d,n){return d.multipliedBy(n).decimalPlaces(0,1)}function Oe(d,n,a,m){let o=d.shiftedBy(-1*n).multipliedBy(a),_=m;return o.minus(_).abs().div(o.plus(_).div(2)).multipliedBy(100).decimalPlaces(2)}function X(d,n){return d.shiftedBy(-1*n).toString()}var de=st(Je());function bt(d,n,a){return(0,de.get_spot_price)(d,n,a)}function Ot(d,n,a){return(0,de.calculate_in_given_out)(d,n,a)}function Nt(d,n,a){return(0,de.calculate_out_given_in)(d,n,a)}var Ne={getSpotPrice:bt,calculateInGivenOut:Ot,calculateOutGivenIn:Nt};var ae=class{static fromPool(n){return new ae(n.address,n.tradeFee,n.tokens)}constructor(n,a,m){this.type="XYK",this.address=n,this.tradeFee=a,this.tokens=m}validPair(n,a){return!0}parsePoolPair(n,a){let m=new Map(this.tokens.map(O=>[O.id,O])),o=m.get(n),_=m.get(a);if(o==null)throw new Error("Pool does not contain tokenIn");if(_==null)throw new Error("Pool does not contain tokenOut");let w=U(o.balance),P=U(_.balance);return{tradeFee:Qe(this.tradeFee),tokenIn:n,tokenOut:a,decimalsIn:o.decimals,decimalsOut:_.decimals,balanceIn:w,balanceOut:P}}calculateInGivenOut(n,a){let m=Ne.calculateInGivenOut(n.balanceIn.toString(),n.balanceOut.toString(),a.toString());return U(m)}getSpotPriceIn(n){let a=Ne.getSpotPrice(n.balanceOut.toString(),n.balanceIn.toString(),se(U(1),n.decimalsOut).toString());return U(a)}calculateOutGivenIn(n,a){let m=Ne.calculateOutGivenIn(n.balanceIn.toString(),n.balanceOut.toString(),a.toString());return U(m)}getSpotPriceOut(n){let a=Ne.getSpotPrice(n.balanceIn.toString(),n.balanceOut.toString(),se(U(1),n.decimalsIn).toString());return U(a)}};var fe=class{static get(n){switch(n.type){case"XYK":return ae.fromPool(n);default:throw new Error("Pool type "+n.type+" is not supported yet")}}};var pe=class{constructor(n,a){this.defaultRouterOptions={includeOnly:[]};this.poolService=n,this.routeSuggester=new we,this.routerOptions={...this.defaultRouterOptions,...a}}async getPools(){let n=await this.poolService.getPools(),a=new Set(this.routerOptions.includeOnly);return a.size===0?n:n.filter(m=>a.has(m.type))}async getAllAssets(){let n=await this.getAssets();return[...new Map(n).values()]}async getAssetPairs(n){let a=await this.getPools();if(a.length===0)throw new Error("No pools configured");let{assets:m,poolsMap:o}=await this.validateToken(n,a),w=this.getPaths(n,null,o,a).map(P=>P[P.length-1].tokenOut);return this.toPoolAssets([...new Set(w)],m)}async getAllPaths(n,a){let m=await this.getPools();if(m.length===0)throw new Error("No pools configured");let{poolsMap:o}=await this.validateTokenPair(n,a,m);return this.getPaths(n,a,o,m)}async getAssets(){let n=await this.getPools();if(n.length===0)throw new Error("No pools configured");let a=n.map(m=>m.tokens.map(({id:o,symbol:_})=>({token:o,symbol:_}))).flat();return new Map(a.map(m=>[m.token,m]))}getPaths(n,a,m,o){return this.routeSuggester.getProposals(n,a,o).filter(P=>this.validPath(P,m)).map(P=>this.toHops(P,m))}async validateTokenPair(n,a,m){let o=await this.getAssets();if(o.get(n)==null)throw new Error(n+" is not supported token");if(o.get(a)==null)throw new Error(a+" is not supported token");let _=this.getPoolMap(m);return{assets:o,poolsMap:_}}async validateToken(n,a){let m=await this.getAssets();if(m.get(n)==null)throw new Error(n+" is not supported token");let o=this.getPoolMap(a);return{assets:m,poolsMap:o}}getPoolMap(n){return new Map(n.map(a=>[a.address,fe.get(a)]))}validPath(n,a){return n.length>0&&n.map(m=>this.validEdge(m,a)).reduce((m,o)=>m&&o)}validEdge([n,a,m],o){return o.get(n)?.validPair(a,m)||!1}toHops(n,a){return n.map(([m,o,_])=>{let w=a.get(m);return{poolId:m,poolType:w?.type,tokenIn:o,tokenOut:_,tradeFeePct:w?.tradeFee}})}toPoolAssets(n,a){return n.map(m=>{let o=a.get(m);return{token:m,symbol:o?.symbol}})}};var Be=class extends pe{async getBestSell(n,a,m){let o=await super.getPools();if(o.length===0)throw new Error("No pools configured");let{poolsMap:_}=await super.validateTokenPair(n,a,o),O=super.getPaths(n,a,_,o).map(A=>this.toSellSwaps(m,A,_)).sort((A,$)=>{let j=A[A.length-1].amountOut,ue=$[$.length-1].amountOut;return j.isGreaterThan(ue)?-1:1})[0],N=O[0],I=O[O.length-1],x=O.map(A=>A.spotPrice.shiftedBy(-1*A.tokenOutDecimals)).reduce((A,$)=>A.multipliedBy($)),R=se(x,I.tokenOutDecimals).decimalPlaces(0,1),F=Oe(N.amountIn,N.tokenInDecimals,R,I.calculatedOut);return{type:"Sell",amountIn:N.amountIn,amountOut:I.amountOut,spotPrice:R,priceImpactPct:F,swaps:O,toHuman(){return{type:"Sell",amountIn:X(N.amountIn,N.tokenInDecimals),amountOut:X(I.amountOut,I.tokenOutDecimals),spotPrice:X(R,I.tokenOutDecimals),priceImpactPct:F.toString(),swaps:O.map(A=>A.toHuman())}}}}toSellSwaps(n,a,m){let o=[];for(let _=0;_<a.length;_++){let w=a[_],P=m.get(w.poolId);if(P==null)throw new Error("Pool does not exit");let O=P.parsePoolPair(w.tokenIn,w.tokenOut),N;_>0?N=o[_-1].amountOut:N=se(U(n),O.decimalsIn);let I=P.calculateOutGivenIn(O,N),x=ze(I,O.tradeFee),R=I.minus(x),F=P.getSpotPriceOut(O),A=Oe(N,O.decimalsIn,F,I);o.push({...w,tokenInDecimals:O.decimalsIn,tokenOutDecimals:O.decimalsOut,amountIn:N,calculatedOut:I,amountOut:R,tradeFee:x,spotPrice:F,priceImpactPct:A,toHuman(){return{...w,amountIn:X(N,O.decimalsIn),calculatedOut:X(I,O.decimalsOut),amountOut:X(R,O.decimalsOut),tradeFee:X(x,O.decimalsOut),spotPrice:X(F,O.decimalsOut),priceImpactPct:A.toString()}}})}return o}async getBestBuy(n,a,m){let o=await super.getPools();if(o.length===0)throw new Error("No pools configured");let{poolsMap:_}=await super.validateTokenPair(n,a,o),O=super.getPaths(n,a,_,o).map(A=>this.toBuySwaps(m,A,_)).sort((A,$)=>{let j=A[A.length-1].amountIn,ue=$[$.length-1].amountIn;return j.isGreaterThan(ue)?1:-1})[0],N=O[0],I=O[O.length-1],x=O.map(A=>A.spotPrice.shiftedBy(-1*A.tokenInDecimals)).reduce((A,$)=>A.multipliedBy($)),R=se(x,N.tokenInDecimals).decimalPlaces(0,1),F=Oe(N.amountOut,N.tokenOutDecimals,R,I.calculatedIn);return{type:"Buy",amountOut:N.amountOut,amountIn:I.amountIn,spotPrice:R,priceImpactPct:F,swaps:O,toHuman(){return{type:"Buy",amountOut:X(N.amountOut,I.tokenOutDecimals),amountIn:X(I.amountIn,N.tokenInDecimals),spotPrice:X(R,N.tokenInDecimals),priceImpactPct:F.toString(),swaps:O.map(A=>A.toHuman())}}}}toBuySwaps(n,a,m){let o=[];for(let _=a.length-1;_>=0;_--){let w=a[_],P=m.get(w.poolId);if(P==null)throw new Error("Pool does not exit");let O=P.parsePoolPair(w.tokenIn,w.tokenOut),N;_==a.length-1?N=se(U(n),O.decimalsOut):N=o[o.length-1].amountIn;let I=P.calculateInGivenOut(O,N),x=ze(I,O.tradeFee),R=I.plus(x),F=P.getSpotPriceIn(O),A=Oe(N,O.decimalsOut,F,I);o.push({...w,tokenInDecimals:O.decimalsIn,tokenOutDecimals:O.decimalsOut,amountOut:N,calculatedIn:I,amountIn:R,tradeFee:x,spotPrice:F,priceImpactPct:A,toHuman(){return{...w,amountOut:X(N,O.decimalsOut),calculatedIn:X(I,O.decimalsIn),amountIn:X(R,O.decimalsIn),tradeFee:X(x,O.decimalsIn),spotPrice:X(F,O.decimalsIn),priceImpactPct:A.toString()}}})}return o}};0&&(module.exports={BigNumber,DECIMAL_PLACES,INFINITY,ONE,PolkadotPoolService,PoolFactory,PoolType,Router,TradeRouter,TradeType,XykPool,ZERO,bnum,scale});
1
+ "use strict";var je=Object.create;var Ie=Object.defineProperty;var et=Object.getOwnPropertyDescriptor;var tt=Object.getOwnPropertyNames;var nt=Object.getPrototypeOf,ot=Object.prototype.hasOwnProperty;var rt=(d,n)=>()=>(n||d((n={exports:{}}).exports,n),n.exports),it=(d,n)=>{for(var a in n)Ie(d,a,{get:n[a],enumerable:!0})},Ve=(d,n,a,g)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of tt(n))!ot.call(d,r)&&r!==a&&Ie(d,r,{get:()=>n[r],enumerable:!(g=et(n,r))||g.enumerable});return d};var st=(d,n,a)=>(a=d!=null?je(nt(d)):{},Ve(n||!d||!d.__esModule?Ie(a,"default",{value:d,enumerable:!0}):a,d)),at=d=>Ve(Ie({},"__esModule",{value:!0}),d);var Je=rt((sn,re)=>{var gt={},b,{TextEncoder:mt,TextDecoder:dt}=require("util"),M=0,ve=null;function Me(){return(ve===null||ve.buffer!==b.memory.buffer)&&(ve=new Uint8Array(b.memory.buffer)),ve}var De=new mt("utf-8"),ht=typeof De.encodeInto=="function"?function(d,n){return De.encodeInto(d,n)}:function(d,n){let a=De.encode(d);return n.set(a),{read:d.length,written:a.length}};function R(d,n,a){if(a===void 0){let w=De.encode(d),y=n(w.length);return Me().subarray(y,y+w.length).set(w),M=w.length,y}let g=d.length,r=n(g),h=Me(),_=0;for(;_<g;_++){let w=d.charCodeAt(_);if(w>127)break;h[r+_]=w}if(_!==g){_!==0&&(d=d.slice(_)),r=a(r,g,g=_+d.length*3);let w=Me().subarray(r+_,r+g);_+=ht(d,w).written}return M=_,r}var Te=null;function K(){return(Te===null||Te.buffer!==b.memory.buffer)&&(Te=new Int32Array(b.memory.buffer)),Te}var Ze=new dt("utf-8",{ignoreBOM:!0,fatal:!0});Ze.decode();function ce(d,n){return Ze.decode(Me().subarray(d,d+n))}re.exports.calculate_pool_trade_fee=function(d,n,a){try{let h=b.__wbindgen_add_to_stack_pointer(-16),_=R(d,b.__wbindgen_malloc,b.__wbindgen_realloc),w=M;b.calculate_pool_trade_fee(h,_,w,n,a);var g=K()[h/4+0],r=K()[h/4+1];return ce(g,r)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(g,r)}};re.exports.get_spot_price=function(d,n,a){try{let h=b.__wbindgen_add_to_stack_pointer(-16),_=R(d,b.__wbindgen_malloc,b.__wbindgen_realloc),w=M,y=R(n,b.__wbindgen_malloc,b.__wbindgen_realloc),N=M,S=R(a,b.__wbindgen_malloc,b.__wbindgen_realloc),x=M;b.get_spot_price(h,_,w,y,N,S,x);var g=K()[h/4+0],r=K()[h/4+1];return ce(g,r)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(g,r)}};re.exports.calculate_out_given_in=function(d,n,a){try{let h=b.__wbindgen_add_to_stack_pointer(-16),_=R(d,b.__wbindgen_malloc,b.__wbindgen_realloc),w=M,y=R(n,b.__wbindgen_malloc,b.__wbindgen_realloc),N=M,S=R(a,b.__wbindgen_malloc,b.__wbindgen_realloc),x=M;b.calculate_out_given_in(h,_,w,y,N,S,x);var g=K()[h/4+0],r=K()[h/4+1];return ce(g,r)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(g,r)}};re.exports.calculate_in_given_out=function(d,n,a){try{let h=b.__wbindgen_add_to_stack_pointer(-16),_=R(d,b.__wbindgen_malloc,b.__wbindgen_realloc),w=M,y=R(n,b.__wbindgen_malloc,b.__wbindgen_realloc),N=M,S=R(a,b.__wbindgen_malloc,b.__wbindgen_realloc),x=M;b.calculate_in_given_out(h,_,w,y,N,S,x);var g=K()[h/4+0],r=K()[h/4+1];return ce(g,r)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(g,r)}};re.exports.calculate_liquidity_in=function(d,n,a){try{let h=b.__wbindgen_add_to_stack_pointer(-16),_=R(d,b.__wbindgen_malloc,b.__wbindgen_realloc),w=M,y=R(n,b.__wbindgen_malloc,b.__wbindgen_realloc),N=M,S=R(a,b.__wbindgen_malloc,b.__wbindgen_realloc),x=M;b.calculate_liquidity_in(h,_,w,y,N,S,x);var g=K()[h/4+0],r=K()[h/4+1];return ce(g,r)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(g,r)}};re.exports.calculate_shares=function(d,n,a){try{let h=b.__wbindgen_add_to_stack_pointer(-16),_=R(d,b.__wbindgen_malloc,b.__wbindgen_realloc),w=M,y=R(n,b.__wbindgen_malloc,b.__wbindgen_realloc),N=M,S=R(a,b.__wbindgen_malloc,b.__wbindgen_realloc),x=M;b.calculate_shares(h,_,w,y,N,S,x);var g=K()[h/4+0],r=K()[h/4+1];return ce(g,r)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(g,r)}};re.exports.calculate_liquidity_out_asset_a=function(d,n,a,g){try{let _=b.__wbindgen_add_to_stack_pointer(-16),w=R(d,b.__wbindgen_malloc,b.__wbindgen_realloc),y=M,N=R(n,b.__wbindgen_malloc,b.__wbindgen_realloc),S=M,x=R(a,b.__wbindgen_malloc,b.__wbindgen_realloc),D=M,F=R(g,b.__wbindgen_malloc,b.__wbindgen_realloc),A=M;b.calculate_liquidity_out_asset_a(_,w,y,N,S,x,D,F,A);var r=K()[_/4+0],h=K()[_/4+1];return ce(r,h)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(r,h)}};re.exports.calculate_liquidity_out_asset_b=function(d,n,a,g){try{let _=b.__wbindgen_add_to_stack_pointer(-16),w=R(d,b.__wbindgen_malloc,b.__wbindgen_realloc),y=M,N=R(n,b.__wbindgen_malloc,b.__wbindgen_realloc),S=M,x=R(a,b.__wbindgen_malloc,b.__wbindgen_realloc),D=M,F=R(g,b.__wbindgen_malloc,b.__wbindgen_realloc),A=M;b.calculate_liquidity_out_asset_b(_,w,y,N,S,x,D,F,A);var r=K()[_/4+0],h=K()[_/4+1];return ce(r,h)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(r,h)}};var _t=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),Pt=require("fs").readFileSync(_t),wt=new WebAssembly.Module(Pt),yt=new WebAssembly.Instance(wt,gt);b=yt.exports;re.exports.__wasm=b});var Bt={};it(Bt,{BigNumber:()=>me,DECIMAL_PLACES:()=>Ye,INFINITY:()=>ft,ONE:()=>pt,PolkadotPoolService:()=>be,PoolFactory:()=>pe,PoolType:()=>ye,Router:()=>fe,TradeRouter:()=>Be,TradeType:()=>Ge,XykPool:()=>ae,ZERO:()=>ut,bnum:()=>U,scale:()=>oe});module.exports=at(Bt);var Ee=class{constructor(n=1/0){this.capacity=n;this.storage=[]}enqueue(n){if(this.size()===this.capacity)throw Error("Queue has reached max capacity, you cannot add more items");this.storage.push(n)}dequeue(){return this.storage.shift()}size(){return this.storage.length}};var lt=4,_e=class{isNotVisited(n,a){let g=!0;return a.forEach(r=>{r[0]===n&&(g=!1)}),g}findPaths(n,a,g){let r=[],h=new Ee,_=[];for(_.push([a,""]),h.enqueue(_);h.size()>0;){let w=h.dequeue();if(w==null||w.length>lt)return r;let y=w[w.length-1];(g===null||y[0]===g)&&r.push(w),n[y[0]].forEach(S=>{if(this.isNotVisited(S[0],w)){let x=[...w];x.push(S),h.enqueue(x)}})}return r}buildAndPopulateGraph(n,a){let g=[];for(let r=0;r<n.length;r++)g.push([]);for(let[r,h,_]of a){let w=parseInt(h),y=parseInt(_);g[w].push([y,r])}return g}};function qe(d){let n={};for(let a of d){let g=a.tokens.length;for(let r=0;r<g;r++){n[a.tokens[r].id]||(n[a.tokens[r].id]=[]);for(let h=0;h<g;h++){if(r==h)continue;let _=[a.address,a.tokens[r].id,a.tokens[h].id];n[a.tokens[r].id].push(_)}}}return n}var Pe=class{getProposals(n,a,g){let r=qe(g),h=Object.keys(r),_=h.map(S=>r[S]).flat(),w=new _e,y=w.buildAndPopulateGraph(h,_),N=w.findPaths(y,parseInt(n),a?parseInt(a):null);return this.parsePaths(N)}parsePaths(n){let a=[];for(let g of n){let r=[];for(let h=0;h<g.length;h++){let _=g[h],w=g[h+1];if(w==null)break;r.push(this.toEdge(_,w))}a.push(r)}return a}toEdge(n,a){return[a[1],n[0].toString(),a[0].toString()]}};var we=class{constructor(n){this.api=n}getStorageKey(n,a){return n[0].toHuman()[a]}getStorageEntryArray(n){return n[1].toHuman()}async getAssetMetadata(n){return await this.api.query.assetRegistry.assetMetadataMap(n)}async getSystemAccountBalance(n){let{data:{free:a}}=await this.api.query.system.account(n);return a.toString()}async getTokenAccountBalance(n,a){let{free:g}=await this.api.query.tokens.accounts(n,a);return g.toString()}};var ye=(r=>(r.XYK="XYK",r.LBP="LBP",r.Stable="Stable",r.Omni="Omni",r))(ye||{}),Ge=(a=>(a.Buy="Buy",a.Sell="Sell",a))(Ge||{});var Ae=class extends we{async getPools(){let a=(await this.api.query.xyk.poolAssets.entries()).map(async g=>{let r=this.getStorageKey(g,0),h=this.getStorageEntryArray(g),_=await this.getPoolTokens(r,h);return{address:r,type:"XYK",tradeFee:this.getTradeFee(),tokens:_}});return Promise.all(a)}async getPoolTokens(n,a){let g=a.map(async r=>{let h=await this.getBalance(n,r),w=(await super.getAssetMetadata(r)).toHuman();return{id:r,balance:h,decimals:w.decimals,symbol:w.symbol}});return Promise.all(g)}getBalance(n,a){return a==="0"?this.getSystemAccountBalance(n):this.getTokenAccountBalance(n,a)}getTradeFee(){let n=this.api.consts.xyk.getExchangeFee;return(n[0].toNumber()/n[1].toNumber()*100).toString()}};var be=class{constructor(n){this.api=n}async getPools(){let n=[],a=await new Ae(this.api).getPools();return n.push(a),n.flat()}};var ct=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,He=Math.ceil,ne=Math.floor,W="[BigNumber Error] ",We=W+"Number primitive has more than 15 significant digits: ",ee=1e14,E=14,Ue=9007199254740991,Xe=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],le=1e7,H=1e9;function $e(d){var n,a,g,r=O.prototype={constructor:O,toString:null,valueOf:null},h=new O(1),_=20,w=4,y=-7,N=21,S=-1e7,x=1e7,D=!1,F=1,A=0,$={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},j="0123456789abcdefghijklmnopqrstuvwxyz",ue=!0;function O(e,t){var o,p,s,c,m,i,l,f,u=this;if(!(u instanceof O))return new O(e,t);if(t==null){if(e&&e._isBigNumber===!0){u.s=e.s,!e.c||e.e>x?u.c=u.e=null:e.e<S?u.c=[u.e=0]:(u.e=e.e,u.c=e.c.slice());return}if((i=typeof e=="number")&&e*0==0){if(u.s=1/e<0?(e=-e,-1):1,e===~~e){for(c=0,m=e;m>=10;m/=10,c++);c>x?u.c=u.e=null:(u.e=c,u.c=[e]);return}f=String(e)}else{if(!ct.test(f=String(e)))return g(u,f,i);u.s=f.charCodeAt(0)==45?(f=f.slice(1),-1):1}(c=f.indexOf("."))>-1&&(f=f.replace(".","")),(m=f.search(/e/i))>0?(c<0&&(c=m),c+=+f.slice(m+1),f=f.substring(0,m)):c<0&&(c=f.length)}else{if(C(t,2,j.length,"Base"),t==10&&ue)return u=new O(e),Y(u,_+u.e+1,w);if(f=String(e),i=typeof e=="number"){if(e*0!=0)return g(u,f,i,t);if(u.s=1/e<0?(f=f.slice(1),-1):1,O.DEBUG&&f.replace(/^0\.0*|\./,"").length>15)throw Error(We+e)}else u.s=f.charCodeAt(0)===45?(f=f.slice(1),-1):1;for(o=j.slice(0,t),c=m=0,l=f.length;m<l;m++)if(o.indexOf(p=f.charAt(m))<0){if(p=="."){if(m>c){c=l;continue}}else if(!s&&(f==f.toUpperCase()&&(f=f.toLowerCase())||f==f.toLowerCase()&&(f=f.toUpperCase()))){s=!0,m=-1,c=0;continue}return g(u,String(e),i,t)}i=!1,f=a(f,t,10,u.s),(c=f.indexOf("."))>-1?f=f.replace(".",""):c=f.length}for(m=0;f.charCodeAt(m)===48;m++);for(l=f.length;f.charCodeAt(--l)===48;);if(f=f.slice(m,++l)){if(l-=m,i&&O.DEBUG&&l>15&&(e>Ue||e!==ne(e)))throw Error(We+u.s*e);if((c=c-m-1)>x)u.c=u.e=null;else if(c<S)u.c=[u.e=0];else{if(u.e=c,u.c=[],m=(c+1)%E,c<0&&(m+=E),m<l){for(m&&u.c.push(+f.slice(0,m)),l-=E;m<l;)u.c.push(+f.slice(m,m+=E));m=E-(f=f.slice(m)).length}else m-=l;for(;m--;f+="0");u.c.push(+f)}}else u.c=[u.e=0]}O.clone=$e,O.ROUND_UP=0,O.ROUND_DOWN=1,O.ROUND_CEIL=2,O.ROUND_FLOOR=3,O.ROUND_HALF_UP=4,O.ROUND_HALF_DOWN=5,O.ROUND_HALF_EVEN=6,O.ROUND_HALF_CEIL=7,O.ROUND_HALF_FLOOR=8,O.EUCLID=9,O.config=O.set=function(e){var t,o;if(e!=null)if(typeof e=="object"){if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(o=e[t],C(o,0,H,t),_=o),e.hasOwnProperty(t="ROUNDING_MODE")&&(o=e[t],C(o,0,8,t),w=o),e.hasOwnProperty(t="EXPONENTIAL_AT")&&(o=e[t],o&&o.pop?(C(o[0],-H,0,t),C(o[1],0,H,t),y=o[0],N=o[1]):(C(o,-H,H,t),y=-(N=o<0?-o:o))),e.hasOwnProperty(t="RANGE"))if(o=e[t],o&&o.pop)C(o[0],-H,-1,t),C(o[1],1,H,t),S=o[0],x=o[1];else if(C(o,-H,H,t),o)S=-(x=o<0?-o:o);else throw Error(W+t+" cannot be zero: "+o);if(e.hasOwnProperty(t="CRYPTO"))if(o=e[t],o===!!o)if(o)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))D=o;else throw D=!o,Error(W+"crypto unavailable");else D=o;else throw Error(W+t+" not true or false: "+o);if(e.hasOwnProperty(t="MODULO_MODE")&&(o=e[t],C(o,0,9,t),F=o),e.hasOwnProperty(t="POW_PRECISION")&&(o=e[t],C(o,0,H,t),A=o),e.hasOwnProperty(t="FORMAT"))if(o=e[t],typeof o=="object")$=o;else throw Error(W+t+" not an object: "+o);if(e.hasOwnProperty(t="ALPHABET"))if(o=e[t],typeof o=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(o))ue=o.slice(0,10)=="0123456789",j=o;else throw Error(W+t+" invalid: "+o)}else throw Error(W+"Object expected: "+e);return{DECIMAL_PLACES:_,ROUNDING_MODE:w,EXPONENTIAL_AT:[y,N],RANGE:[S,x],CRYPTO:D,MODULO_MODE:F,POW_PRECISION:A,FORMAT:$,ALPHABET:j}},O.isBigNumber=function(e){if(!e||e._isBigNumber!==!0)return!1;if(!O.DEBUG)return!0;var t,o,p=e.c,s=e.e,c=e.s;e:if({}.toString.call(p)=="[object Array]"){if((c===1||c===-1)&&s>=-H&&s<=H&&s===ne(s)){if(p[0]===0){if(s===0&&p.length===1)return!0;break e}if(t=(s+1)%E,t<1&&(t+=E),String(p[0]).length==t){for(t=0;t<p.length;t++)if(o=p[t],o<0||o>=ee||o!==ne(o))break e;if(o!==0)return!0}}}else if(p===null&&s===null&&(c===null||c===1||c===-1))return!0;throw Error(W+"Invalid BigNumber: "+e)},O.maximum=O.max=function(){return Ke(arguments,r.lt)},O.minimum=O.min=function(){return Ke(arguments,r.gt)},O.random=function(){var e=9007199254740992,t=Math.random()*e&2097151?function(){return ne(Math.random()*e)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(o){var p,s,c,m,i,l=0,f=[],u=new O(h);if(o==null?o=_:C(o,0,H),m=He(o/E),D)if(crypto.getRandomValues){for(p=crypto.getRandomValues(new Uint32Array(m*=2));l<m;)i=p[l]*131072+(p[l+1]>>>11),i>=9e15?(s=crypto.getRandomValues(new Uint32Array(2)),p[l]=s[0],p[l+1]=s[1]):(f.push(i%1e14),l+=2);l=m/2}else if(crypto.randomBytes){for(p=crypto.randomBytes(m*=7);l<m;)i=(p[l]&31)*281474976710656+p[l+1]*1099511627776+p[l+2]*4294967296+p[l+3]*16777216+(p[l+4]<<16)+(p[l+5]<<8)+p[l+6],i>=9e15?crypto.randomBytes(7).copy(p,l):(f.push(i%1e14),l+=7);l=m/7}else throw D=!1,Error(W+"crypto unavailable");if(!D)for(;l<m;)i=t(),i<9e15&&(f[l++]=i%1e14);for(m=f[--l],o%=E,m&&o&&(i=Xe[E-o],f[l]=ne(m/i)*i);f[l]===0;f.pop(),l--);if(l<0)f=[c=0];else{for(c=-1;f[0]===0;f.splice(0,1),c-=E);for(l=1,i=f[0];i>=10;i/=10,l++);l<E&&(c-=E-l)}return u.e=c,u.c=f,u}}(),O.sum=function(){for(var e=1,t=arguments,o=new O(t[0]);e<t.length;)o=o.plus(t[e++]);return o},a=function(){var e="0123456789";function t(o,p,s,c){for(var m,i=[0],l,f=0,u=o.length;f<u;){for(l=i.length;l--;i[l]*=p);for(i[0]+=c.indexOf(o.charAt(f++)),m=0;m<i.length;m++)i[m]>s-1&&(i[m+1]==null&&(i[m+1]=0),i[m+1]+=i[m]/s|0,i[m]%=s)}return i.reverse()}return function(o,p,s,c,m){var i,l,f,u,P,B,I,v,L=o.indexOf("."),G=_,k=w;for(L>=0&&(u=A,A=0,o=o.replace(".",""),v=new O(p),B=v.pow(o.length-L),A=u,v.c=t(se(Z(B.c),B.e,"0"),10,s,e),v.e=v.c.length),I=t(o,p,s,m?(i=j,e):(i=e,j)),f=u=I.length;I[--u]==0;I.pop());if(!I[0])return i.charAt(0);if(L<0?--f:(B.c=I,B.e=f,B.s=c,B=n(B,v,G,k,s),I=B.c,P=B.r,f=B.e),l=f+G+1,L=I[l],u=s/2,P=P||l<0||I[l+1]!=null,P=k<4?(L!=null||P)&&(k==0||k==(B.s<0?3:2)):L>u||L==u&&(k==4||P||k==6&&I[l-1]&1||k==(B.s<0?8:7)),l<1||!I[0])o=P?se(i.charAt(1),-G,i.charAt(0)):i.charAt(0);else{if(I.length=l,P)for(--s;++I[--l]>s;)I[l]=0,l||(++f,I=[1].concat(I));for(u=I.length;!I[--u];);for(L=0,o="";L<=u;o+=i.charAt(I[L++]));o=se(o,f,i.charAt(0))}return o}}(),n=function(){function e(p,s,c){var m,i,l,f,u=0,P=p.length,B=s%le,I=s/le|0;for(p=p.slice();P--;)l=p[P]%le,f=p[P]/le|0,m=I*l+f*B,i=B*l+m%le*le+u,u=(i/c|0)+(m/le|0)+I*f,p[P]=i%c;return u&&(p=[u].concat(p)),p}function t(p,s,c,m){var i,l;if(c!=m)l=c>m?1:-1;else for(i=l=0;i<c;i++)if(p[i]!=s[i]){l=p[i]>s[i]?1:-1;break}return l}function o(p,s,c,m){for(var i=0;c--;)p[c]-=i,i=p[c]<s[c]?1:0,p[c]=i*m+p[c]-s[c];for(;!p[0]&&p.length>1;p.splice(0,1));}return function(p,s,c,m,i){var l,f,u,P,B,I,v,L,G,k,T,z,Se,Ce,Le,te,he,Q=p.s==s.s?1:-1,V=p.c,q=s.c;if(!V||!V[0]||!q||!q[0])return new O(!p.s||!s.s||(V?q&&V[0]==q[0]:!q)?NaN:V&&V[0]==0||!q?Q*0:Q/0);for(L=new O(Q),G=L.c=[],f=p.e-s.e,Q=c+f+1,i||(i=ee,f=J(p.e/E)-J(s.e/E),Q=Q/E|0),u=0;q[u]==(V[u]||0);u++);if(q[u]>(V[u]||0)&&f--,Q<0)G.push(1),P=!0;else{for(Ce=V.length,te=q.length,u=0,Q+=2,B=ne(i/(q[0]+1)),B>1&&(q=e(q,B,i),V=e(V,B,i),te=q.length,Ce=V.length),Se=te,k=V.slice(0,te),T=k.length;T<te;k[T++]=0);he=q.slice(),he=[0].concat(he),Le=q[0],q[1]>=i/2&&Le++;do{if(B=0,l=t(q,k,te,T),l<0){if(z=k[0],te!=T&&(z=z*i+(k[1]||0)),B=ne(z/Le),B>1)for(B>=i&&(B=i-1),I=e(q,B,i),v=I.length,T=k.length;t(I,k,v,T)==1;)B--,o(I,te<v?he:q,v,i),v=I.length,l=1;else B==0&&(l=B=1),I=q.slice(),v=I.length;if(v<T&&(I=[0].concat(I)),o(k,I,T,i),T=k.length,l==-1)for(;t(q,k,te,T)<1;)B++,o(k,te<T?he:q,T,i),T=k.length}else l===0&&(B++,k=[0]);G[u++]=B,k[0]?k[T++]=V[Se]||0:(k=[V[Se]],T=1)}while((Se++<Ce||k[0]!=null)&&Q--);P=k[0]!=null,G[0]||G.splice(0,1)}if(i==ee){for(u=1,Q=G[0];Q>=10;Q/=10,u++);Y(L,c+(L.e=u+f*E-1)+1,m,P)}else L.e=f,L.r=+P;return L}}();function Re(e,t,o,p){var s,c,m,i,l;if(o==null?o=w:C(o,0,8),!e.c)return e.toString();if(s=e.c[0],m=e.e,t==null)l=Z(e.c),l=p==1||p==2&&(m<=y||m>=N)?ke(l,m):se(l,m,"0");else if(e=Y(new O(e),t,o),c=e.e,l=Z(e.c),i=l.length,p==1||p==2&&(t<=c||c<=y)){for(;i<t;l+="0",i++);l=ke(l,c)}else if(t-=m,l=se(l,c,"0"),c+1>i){if(--t>0)for(l+=".";t--;l+="0");}else if(t+=c-i,t>0)for(c+1==i&&(l+=".");t--;l+="0");return e.s<0&&s?"-"+l:l}function Ke(e,t){for(var o,p=1,s=new O(e[0]);p<e.length;p++)if(o=new O(e[p]),o.s)t.call(s,o)&&(s=o);else{s=o;break}return s}function Fe(e,t,o){for(var p=1,s=t.length;!t[--s];t.pop());for(s=t[0];s>=10;s/=10,p++);return(o=p+o*E-1)>x?e.c=e.e=null:o<S?e.c=[e.e=0]:(e.e=o,e.c=t),e}g=function(){var e=/^(-?)0([xbo])(?=\w[\w.]*$)/i,t=/^([^.]+)\.$/,o=/^\.([^.]+)$/,p=/^-?(Infinity|NaN)$/,s=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(c,m,i,l){var f,u=i?m:m.replace(s,"");if(p.test(u))c.s=isNaN(u)?null:u<0?-1:1;else{if(!i&&(u=u.replace(e,function(P,B,I){return f=(I=I.toLowerCase())=="x"?16:I=="b"?2:8,!l||l==f?B:P}),l&&(f=l,u=u.replace(t,"$1").replace(o,"0.$1")),m!=u))return new O(u,f);if(O.DEBUG)throw Error(W+"Not a"+(l?" base "+l:"")+" number: "+m);c.s=null}c.c=c.e=null}}();function Y(e,t,o,p){var s,c,m,i,l,f,u,P=e.c,B=Xe;if(P){e:{for(s=1,i=P[0];i>=10;i/=10,s++);if(c=t-s,c<0)c+=E,m=t,l=P[f=0],u=l/B[s-m-1]%10|0;else if(f=He((c+1)/E),f>=P.length)if(p){for(;P.length<=f;P.push(0));l=u=0,s=1,c%=E,m=c-E+1}else break e;else{for(l=i=P[f],s=1;i>=10;i/=10,s++);c%=E,m=c-E+s,u=m<0?0:l/B[s-m-1]%10|0}if(p=p||t<0||P[f+1]!=null||(m<0?l:l%B[s-m-1]),p=o<4?(u||p)&&(o==0||o==(e.s<0?3:2)):u>5||u==5&&(o==4||p||o==6&&(c>0?m>0?l/B[s-m]:0:P[f-1])%10&1||o==(e.s<0?8:7)),t<1||!P[0])return P.length=0,p?(t-=e.e+1,P[0]=B[(E-t%E)%E],e.e=-t||0):P[0]=e.e=0,e;if(c==0?(P.length=f,i=1,f--):(P.length=f+1,i=B[E-c],P[f]=m>0?ne(l/B[s-m]%B[m])*i:0),p)for(;;)if(f==0){for(c=1,m=P[0];m>=10;m/=10,c++);for(m=P[0]+=i,i=1;m>=10;m/=10,i++);c!=i&&(e.e++,P[0]==ee&&(P[0]=1));break}else{if(P[f]+=i,P[f]!=ee)break;P[f--]=0,i=1}for(c=P.length;P[--c]===0;P.pop());}e.e>x?e.c=e.e=null:e.e<S&&(e.c=[e.e=0])}return e}function ie(e){var t,o=e.e;return o===null?e.toString():(t=Z(e.c),t=o<=y||o>=N?ke(t,o):se(t,o,"0"),e.s<0?"-"+t:t)}return r.absoluteValue=r.abs=function(){var e=new O(this);return e.s<0&&(e.s=1),e},r.comparedTo=function(e,t){return ge(this,new O(e,t))},r.decimalPlaces=r.dp=function(e,t){var o,p,s,c=this;if(e!=null)return C(e,0,H),t==null?t=w:C(t,0,8),Y(new O(c),e+c.e+1,t);if(!(o=c.c))return null;if(p=((s=o.length-1)-J(this.e/E))*E,s=o[s])for(;s%10==0;s/=10,p--);return p<0&&(p=0),p},r.dividedBy=r.div=function(e,t){return n(this,new O(e,t),_,w)},r.dividedToIntegerBy=r.idiv=function(e,t){return n(this,new O(e,t),0,1)},r.exponentiatedBy=r.pow=function(e,t){var o,p,s,c,m,i,l,f,u,P=this;if(e=new O(e),e.c&&!e.isInteger())throw Error(W+"Exponent not an integer: "+ie(e));if(t!=null&&(t=new O(t)),i=e.e>14,!P.c||!P.c[0]||P.c[0]==1&&!P.e&&P.c.length==1||!e.c||!e.c[0])return u=new O(Math.pow(+ie(P),i?2-xe(e):+ie(e))),t?u.mod(t):u;if(l=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new O(NaN);p=!l&&P.isInteger()&&t.isInteger(),p&&(P=P.mod(t))}else{if(e.e>9&&(P.e>0||P.e<-1||(P.e==0?P.c[0]>1||i&&P.c[1]>=24e7:P.c[0]<8e13||i&&P.c[0]<=9999975e7)))return c=P.s<0&&xe(e)?-0:0,P.e>-1&&(c=1/c),new O(l?1/c:c);A&&(c=He(A/E+2))}for(i?(o=new O(.5),l&&(e.s=1),f=xe(e)):(s=Math.abs(+ie(e)),f=s%2),u=new O(h);;){if(f){if(u=u.times(P),!u.c)break;c?u.c.length>c&&(u.c.length=c):p&&(u=u.mod(t))}if(s){if(s=ne(s/2),s===0)break;f=s%2}else if(e=e.times(o),Y(e,e.e+1,1),e.e>14)f=xe(e);else{if(s=+ie(e),s===0)break;f=s%2}P=P.times(P),c?P.c&&P.c.length>c&&(P.c.length=c):p&&(P=P.mod(t))}return p?u:(l&&(u=h.div(u)),t?u.mod(t):c?Y(u,A,w,m):u)},r.integerValue=function(e){var t=new O(this);return e==null?e=w:C(e,0,8),Y(t,t.e+1,e)},r.isEqualTo=r.eq=function(e,t){return ge(this,new O(e,t))===0},r.isFinite=function(){return!!this.c},r.isGreaterThan=r.gt=function(e,t){return ge(this,new O(e,t))>0},r.isGreaterThanOrEqualTo=r.gte=function(e,t){return(t=ge(this,new O(e,t)))===1||t===0},r.isInteger=function(){return!!this.c&&J(this.e/E)>this.c.length-2},r.isLessThan=r.lt=function(e,t){return ge(this,new O(e,t))<0},r.isLessThanOrEqualTo=r.lte=function(e,t){return(t=ge(this,new O(e,t)))===-1||t===0},r.isNaN=function(){return!this.s},r.isNegative=function(){return this.s<0},r.isPositive=function(){return this.s>0},r.isZero=function(){return!!this.c&&this.c[0]==0},r.minus=function(e,t){var o,p,s,c,m=this,i=m.s;if(e=new O(e,t),t=e.s,!i||!t)return new O(NaN);if(i!=t)return e.s=-t,m.plus(e);var l=m.e/E,f=e.e/E,u=m.c,P=e.c;if(!l||!f){if(!u||!P)return u?(e.s=-t,e):new O(P?m:NaN);if(!u[0]||!P[0])return P[0]?(e.s=-t,e):new O(u[0]?m:w==3?-0:0)}if(l=J(l),f=J(f),u=u.slice(),i=l-f){for((c=i<0)?(i=-i,s=u):(f=l,s=P),s.reverse(),t=i;t--;s.push(0));s.reverse()}else for(p=(c=(i=u.length)<(t=P.length))?i:t,i=t=0;t<p;t++)if(u[t]!=P[t]){c=u[t]<P[t];break}if(c&&(s=u,u=P,P=s,e.s=-e.s),t=(p=P.length)-(o=u.length),t>0)for(;t--;u[o++]=0);for(t=ee-1;p>i;){if(u[--p]<P[p]){for(o=p;o&&!u[--o];u[o]=t);--u[o],u[p]+=ee}u[p]-=P[p]}for(;u[0]==0;u.splice(0,1),--f);return u[0]?Fe(e,u,f):(e.s=w==3?-1:1,e.c=[e.e=0],e)},r.modulo=r.mod=function(e,t){var o,p,s=this;return e=new O(e,t),!s.c||!e.s||e.c&&!e.c[0]?new O(NaN):!e.c||s.c&&!s.c[0]?new O(s):(F==9?(p=e.s,e.s=1,o=n(s,e,0,3),e.s=p,o.s*=p):o=n(s,e,0,F),e=s.minus(o.times(e)),!e.c[0]&&F==1&&(e.s=s.s),e)},r.multipliedBy=r.times=function(e,t){var o,p,s,c,m,i,l,f,u,P,B,I,v,L,G,k=this,T=k.c,z=(e=new O(e,t)).c;if(!T||!z||!T[0]||!z[0])return!k.s||!e.s||T&&!T[0]&&!z||z&&!z[0]&&!T?e.c=e.e=e.s=null:(e.s*=k.s,!T||!z?e.c=e.e=null:(e.c=[0],e.e=0)),e;for(p=J(k.e/E)+J(e.e/E),e.s*=k.s,l=T.length,P=z.length,l<P&&(v=T,T=z,z=v,s=l,l=P,P=s),s=l+P,v=[];s--;v.push(0));for(L=ee,G=le,s=P;--s>=0;){for(o=0,B=z[s]%G,I=z[s]/G|0,m=l,c=s+m;c>s;)f=T[--m]%G,u=T[m]/G|0,i=I*f+u*B,f=B*f+i%G*G+v[c]+o,o=(f/L|0)+(i/G|0)+I*u,v[c--]=f%L;v[c]=o}return o?++p:v.splice(0,1),Fe(e,v,p)},r.negated=function(){var e=new O(this);return e.s=-e.s||null,e},r.plus=function(e,t){var o,p=this,s=p.s;if(e=new O(e,t),t=e.s,!s||!t)return new O(NaN);if(s!=t)return e.s=-t,p.minus(e);var c=p.e/E,m=e.e/E,i=p.c,l=e.c;if(!c||!m){if(!i||!l)return new O(s/0);if(!i[0]||!l[0])return l[0]?e:new O(i[0]?p:s*0)}if(c=J(c),m=J(m),i=i.slice(),s=c-m){for(s>0?(m=c,o=l):(s=-s,o=i),o.reverse();s--;o.push(0));o.reverse()}for(s=i.length,t=l.length,s-t<0&&(o=l,l=i,i=o,t=s),s=0;t;)s=(i[--t]=i[t]+l[t]+s)/ee|0,i[t]=ee===i[t]?0:i[t]%ee;return s&&(i=[s].concat(i),++m),Fe(e,i,m)},r.precision=r.sd=function(e,t){var o,p,s,c=this;if(e!=null&&e!==!!e)return C(e,1,H),t==null?t=w:C(t,0,8),Y(new O(c),e,t);if(!(o=c.c))return null;if(s=o.length-1,p=s*E+1,s=o[s]){for(;s%10==0;s/=10,p--);for(s=o[0];s>=10;s/=10,p++);}return e&&c.e+1>p&&(p=c.e+1),p},r.shiftedBy=function(e){return C(e,-Ue,Ue),this.times("1e"+e)},r.squareRoot=r.sqrt=function(){var e,t,o,p,s,c=this,m=c.c,i=c.s,l=c.e,f=_+4,u=new O("0.5");if(i!==1||!m||!m[0])return new O(!i||i<0&&(!m||m[0])?NaN:m?c:1/0);if(i=Math.sqrt(+ie(c)),i==0||i==1/0?(t=Z(m),(t.length+l)%2==0&&(t+="0"),i=Math.sqrt(+t),l=J((l+1)/2)-(l<0||l%2),i==1/0?t="5e"+l:(t=i.toExponential(),t=t.slice(0,t.indexOf("e")+1)+l),o=new O(t)):o=new O(i+""),o.c[0]){for(l=o.e,i=l+f,i<3&&(i=0);;)if(s=o,o=u.times(s.plus(n(c,s,f,1))),Z(s.c).slice(0,i)===(t=Z(o.c)).slice(0,i))if(o.e<l&&--i,t=t.slice(i-3,i+1),t=="9999"||!p&&t=="4999"){if(!p&&(Y(s,s.e+_+2,0),s.times(s).eq(c))){o=s;break}f+=4,i+=4,p=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(Y(o,o.e+_+2,1),e=!o.times(o).eq(c));break}}return Y(o,o.e+_+1,w,e)},r.toExponential=function(e,t){return e!=null&&(C(e,0,H),e++),Re(this,e,t,1)},r.toFixed=function(e,t){return e!=null&&(C(e,0,H),e=e+this.e+1),Re(this,e,t)},r.toFormat=function(e,t,o){var p,s=this;if(o==null)e!=null&&t&&typeof t=="object"?(o=t,t=null):e&&typeof e=="object"?(o=e,e=t=null):o=$;else if(typeof o!="object")throw Error(W+"Argument not an object: "+o);if(p=s.toFixed(e,t),s.c){var c,m=p.split("."),i=+o.groupSize,l=+o.secondaryGroupSize,f=o.groupSeparator||"",u=m[0],P=m[1],B=s.s<0,I=B?u.slice(1):u,v=I.length;if(l&&(c=i,i=l,l=c,v-=c),i>0&&v>0){for(c=v%i||i,u=I.substr(0,c);c<v;c+=i)u+=f+I.substr(c,i);l>0&&(u+=f+I.slice(c)),B&&(u="-"+u)}p=P?u+(o.decimalSeparator||"")+((l=+o.fractionGroupSize)?P.replace(new RegExp("\\d{"+l+"}\\B","g"),"$&"+(o.fractionGroupSeparator||"")):P):u}return(o.prefix||"")+p+(o.suffix||"")},r.toFraction=function(e){var t,o,p,s,c,m,i,l,f,u,P,B,I=this,v=I.c;if(e!=null&&(i=new O(e),!i.isInteger()&&(i.c||i.s!==1)||i.lt(h)))throw Error(W+"Argument "+(i.isInteger()?"out of range: ":"not an integer: ")+ie(i));if(!v)return new O(I);for(t=new O(h),f=o=new O(h),p=l=new O(h),B=Z(v),c=t.e=B.length-I.e-1,t.c[0]=Xe[(m=c%E)<0?E+m:m],e=!e||i.comparedTo(t)>0?c>0?t:f:i,m=x,x=1/0,i=new O(B),l.c[0]=0;u=n(i,t,0,1),s=o.plus(u.times(p)),s.comparedTo(e)!=1;)o=p,p=s,f=l.plus(u.times(s=f)),l=s,t=i.minus(u.times(s=t)),i=s;return s=n(e.minus(o),p,0,1),l=l.plus(s.times(f)),o=o.plus(s.times(p)),l.s=f.s=I.s,c=c*2,P=n(f,p,c,w).minus(I).abs().comparedTo(n(l,o,c,w).minus(I).abs())<1?[f,p]:[l,o],x=m,P},r.toNumber=function(){return+ie(this)},r.toPrecision=function(e,t){return e!=null&&C(e,1,H),Re(this,e,t,2)},r.toString=function(e){var t,o=this,p=o.s,s=o.e;return s===null?p?(t="Infinity",p<0&&(t="-"+t)):t="NaN":(e==null?t=s<=y||s>=N?ke(Z(o.c),s):se(Z(o.c),s,"0"):e===10&&ue?(o=Y(new O(o),_+s+1,w),t=se(Z(o.c),o.e,"0")):(C(e,2,j.length,"Base"),t=a(se(Z(o.c),s,"0"),10,e,p,!0)),p<0&&o.c[0]&&(t="-"+t)),t},r.valueOf=r.toJSON=function(){return ie(this)},r._isBigNumber=!0,r[Symbol.toStringTag]="BigNumber",r[Symbol.for("nodejs.util.inspect.custom")]=r.valueOf,d!=null&&O.set(d),O}function J(d){var n=d|0;return d>0||d===n?n:n-1}function Z(d){for(var n,a,g=1,r=d.length,h=d[0]+"";g<r;){for(n=d[g++]+"",a=E-n.length;a--;n="0"+n);h+=n}for(r=h.length;h.charCodeAt(--r)===48;);return h.slice(0,r+1||1)}function ge(d,n){var a,g,r=d.c,h=n.c,_=d.s,w=n.s,y=d.e,N=n.e;if(!_||!w)return null;if(a=r&&!r[0],g=h&&!h[0],a||g)return a?g?0:-w:_;if(_!=w)return _;if(a=_<0,g=y==N,!r||!h)return g?0:!r^a?1:-1;if(!g)return y>N^a?1:-1;for(w=(y=r.length)<(N=h.length)?y:N,_=0;_<w;_++)if(r[_]!=h[_])return r[_]>h[_]^a?1:-1;return y==N?0:y>N^a?1:-1}function C(d,n,a,g){if(d<n||d>a||d!==ne(d))throw Error(W+(g||"Argument")+(typeof d=="number"?d<n||d>a?" out of range: ":" not an integer: ":" not a primitive number: ")+String(d))}function xe(d){var n=d.c.length-1;return J(d.e/E)==n&&d.c[n]%2!=0}function ke(d,n){return(d.length>1?d.charAt(0)+"."+d.slice(1):d)+(n<0?"e":"e+")+n}function se(d,n,a){var g,r;if(n<0){for(r=a+".";++n;r+=a);d=r+d}else if(g=d.length,++n>g){for(r=a,n-=g;--n;r+=a);d+=r}else n<g&&(d=d.slice(0,n)+"."+d.slice(n));return d}var me=$e();var Ye=12;me.config({EXPONENTIAL_AT:[-100,100],ROUNDING_MODE:1,DECIMAL_PLACES:Ye});var ut=U(0),pt=U(1),ft=U("Infinity");function oe(d,n){let a=new me(n.toString()),g=new me(10).pow(a);return d.times(g)}function U(d){return new me(d.toString())}function Qe(d){return U(parseFloat(d)/100)}function ze(d,n){return d.multipliedBy(n).decimalPlaces(0,1)}function Oe(d,n,a,g){let r=d.shiftedBy(-1*n).multipliedBy(a),h=g;return r.minus(h).abs().div(r.plus(h).div(2)).multipliedBy(100).decimalPlaces(2)}function X(d,n){return d.shiftedBy(-1*n).toString()}var de=st(Je());function bt(d,n,a){return(0,de.get_spot_price)(d,n,a)}function Ot(d,n,a){return(0,de.calculate_in_given_out)(d,n,a)}function Nt(d,n,a){return(0,de.calculate_out_given_in)(d,n,a)}var Ne={getSpotPrice:bt,calculateInGivenOut:Ot,calculateOutGivenIn:Nt};var ae=class{static fromPool(n){return new ae(n.address,n.tradeFee,n.tokens)}constructor(n,a,g){this.type="XYK",this.address=n,this.tradeFee=a,this.tokens=g}validPair(n,a){return!0}parsePoolPair(n,a){let g=new Map(this.tokens.map(y=>[y.id,y])),r=g.get(n),h=g.get(a);if(r==null)throw new Error("Pool does not contain tokenIn");if(h==null)throw new Error("Pool does not contain tokenOut");let _=U(r.balance),w=U(h.balance);return{tradeFee:Qe(this.tradeFee),tokenIn:n,tokenOut:a,decimalsIn:r.decimals,decimalsOut:h.decimals,balanceIn:_,balanceOut:w}}calculateInGivenOut(n,a){let g=Ne.calculateInGivenOut(n.balanceIn.toString(),n.balanceOut.toString(),a.toString());return U(g)}getSpotPriceIn(n){let a=Ne.getSpotPrice(n.balanceOut.toString(),n.balanceIn.toString(),oe(U(1),n.decimalsOut).toString());return U(a)}calculateOutGivenIn(n,a){let g=Ne.calculateOutGivenIn(n.balanceIn.toString(),n.balanceOut.toString(),a.toString());return U(g)}getSpotPriceOut(n){let a=Ne.getSpotPrice(n.balanceIn.toString(),n.balanceOut.toString(),oe(U(1),n.decimalsIn).toString());return U(a)}};var pe=class{static get(n){switch(n.type){case"XYK":return ae.fromPool(n);default:throw new Error("Pool type "+n.type+" is not supported yet")}}};var fe=class{constructor(n,a){this.defaultRouterOptions={includeOnly:[]};this.poolService=n,this.routeSuggester=new Pe,this.routerOptions={...this.defaultRouterOptions,...a}}async getPools(){let n=await this.poolService.getPools(),a=new Set(this.routerOptions.includeOnly);return a.size===0?n:n.filter(g=>a.has(g.type))}async getAllAssets(){let n=await this.getAssets();return[...new Map(n).values()]}async getAssetPairs(n){let a=await this.getPools();if(a.length===0)throw new Error("No pools configured");let{assets:g,poolsMap:r}=await this.validateToken(n,a),_=this.getPaths(n,null,r,a).map(w=>w[w.length-1].tokenOut);return this.toPoolAssets([...new Set(_)],g)}async getAllPaths(n,a){let g=await this.getPools();if(g.length===0)throw new Error("No pools configured");let{poolsMap:r}=await this.validateTokenPair(n,a,g);return this.getPaths(n,a,r,g)}async getAssets(){let n=await this.getPools();if(n.length===0)throw new Error("No pools configured");let a=n.map(g=>g.tokens.map(({id:r,symbol:h})=>({token:r,symbol:h}))).flat();return new Map(a.map(g=>[g.token,g]))}getPaths(n,a,g,r){return this.routeSuggester.getProposals(n,a,r).filter(w=>this.validPath(w,g)).map(w=>this.toHops(w,g))}async validateTokenPair(n,a,g){let r=await this.getAssets();if(r.get(n)==null)throw new Error(n+" is not supported token");if(r.get(a)==null)throw new Error(a+" is not supported token");let h=this.getPoolMap(g);return{assets:r,poolsMap:h}}async validateToken(n,a){let g=await this.getAssets();if(g.get(n)==null)throw new Error(n+" is not supported token");let r=this.getPoolMap(a);return{assets:g,poolsMap:r}}getPoolMap(n){return new Map(n.map(a=>[a.address,pe.get(a)]))}validPath(n,a){return n.length>0&&n.map(g=>this.validEdge(g,a)).reduce((g,r)=>g&&r)}validEdge([n,a,g],r){return r.get(n)?.validPair(a,g)||!1}toHops(n,a){return n.map(([g,r,h])=>{let _=a.get(g);return{poolId:g,poolType:_?.type,tokenIn:r,tokenOut:h,tradeFeePct:_?.tradeFee}})}toPoolAssets(n,a){return n.map(g=>{let r=a.get(g);return{token:g,symbol:r?.symbol}})}};var Be=class extends fe{async getBestSpotPrice(n,a){let g=await super.getPools();if(g.length===0)throw new Error("No pools configured");let{poolsMap:r}=await super.validateTokenPair(n,a,g);return super.getPaths(n,a,r,g).map(w=>this.getSpotPrice(w,r)).sort((w,y)=>{let N=w.amount,S=y.amount;return N.isGreaterThan(S)?-1:1})[0]}getSpotPrice(n,a){let g=[];for(let _=0;_<n.length;_++){let w=n[_],y=a.get(w.poolId);if(y==null)throw new Error("Pool does not exit");let N=y.parsePoolPair(w.tokenIn,w.tokenOut),S=y.getSpotPriceOut(N);g.push({amount:S,decimals:N.decimalsOut})}let r=g.map(_=>_.amount.shiftedBy(-1*_.decimals)).reduce((_,w)=>_.multipliedBy(w)),h=g[g.length-1].decimals;return{amount:oe(r,h).decimalPlaces(0,1),decimals:h}}async getBestSell(n,a,g){let r=await super.getPools();if(r.length===0)throw new Error("No pools configured");let{poolsMap:h}=await super.validateTokenPair(n,a,r),y=super.getPaths(n,a,h,r).map(A=>this.toSellSwaps(g,A,h)).sort((A,$)=>{let j=A[A.length-1].amountOut,ue=$[$.length-1].amountOut;return j.isGreaterThan(ue)?-1:1})[0],N=y[0],S=y[y.length-1],x=y.map(A=>A.spotPrice.shiftedBy(-1*A.tokenOutDecimals)).reduce((A,$)=>A.multipliedBy($)),D=oe(x,S.tokenOutDecimals).decimalPlaces(0,1),F=Oe(N.amountIn,N.tokenInDecimals,D,S.calculatedOut);return{type:"Sell",amountIn:N.amountIn,amountOut:S.amountOut,spotPrice:D,priceImpactPct:F,swaps:y,toHuman(){return{type:"Sell",amountIn:X(N.amountIn,N.tokenInDecimals),amountOut:X(S.amountOut,S.tokenOutDecimals),spotPrice:X(D,S.tokenOutDecimals),priceImpactPct:F.toString(),swaps:y.map(A=>A.toHuman())}}}}toSellSwaps(n,a,g){let r=[];for(let h=0;h<a.length;h++){let _=a[h],w=g.get(_.poolId);if(w==null)throw new Error("Pool does not exit");let y=w.parsePoolPair(_.tokenIn,_.tokenOut),N;h>0?N=r[h-1].amountOut:N=oe(U(n),y.decimalsIn);let S=w.calculateOutGivenIn(y,N),x=ze(S,y.tradeFee),D=S.minus(x),F=w.getSpotPriceOut(y),A=Oe(N,y.decimalsIn,F,S);r.push({..._,tokenInDecimals:y.decimalsIn,tokenOutDecimals:y.decimalsOut,amountIn:N,calculatedOut:S,amountOut:D,tradeFee:x,spotPrice:F,priceImpactPct:A,toHuman(){return{..._,amountIn:X(N,y.decimalsIn),calculatedOut:X(S,y.decimalsOut),amountOut:X(D,y.decimalsOut),tradeFee:X(x,y.decimalsOut),spotPrice:X(F,y.decimalsOut),priceImpactPct:A.toString()}}})}return r}async getBestBuy(n,a,g){let r=await super.getPools();if(r.length===0)throw new Error("No pools configured");let{poolsMap:h}=await super.validateTokenPair(n,a,r),y=super.getPaths(n,a,h,r).map(A=>this.toBuySwaps(g,A,h)).sort((A,$)=>{let j=A[A.length-1].amountIn,ue=$[$.length-1].amountIn;return j.isGreaterThan(ue)?1:-1})[0],N=y[0],S=y[y.length-1],x=y.map(A=>A.spotPrice.shiftedBy(-1*A.tokenInDecimals)).reduce((A,$)=>A.multipliedBy($)),D=oe(x,N.tokenInDecimals).decimalPlaces(0,1),F=Oe(N.amountOut,N.tokenOutDecimals,D,S.calculatedIn);return{type:"Buy",amountOut:N.amountOut,amountIn:S.amountIn,spotPrice:D,priceImpactPct:F,swaps:y,toHuman(){return{type:"Buy",amountOut:X(N.amountOut,S.tokenOutDecimals),amountIn:X(S.amountIn,N.tokenInDecimals),spotPrice:X(D,N.tokenInDecimals),priceImpactPct:F.toString(),swaps:y.map(A=>A.toHuman())}}}}toBuySwaps(n,a,g){let r=[];for(let h=a.length-1;h>=0;h--){let _=a[h],w=g.get(_.poolId);if(w==null)throw new Error("Pool does not exit");let y=w.parsePoolPair(_.tokenIn,_.tokenOut),N;h==a.length-1?N=oe(U(n),y.decimalsOut):N=r[r.length-1].amountIn;let S=w.calculateInGivenOut(y,N),x=ze(S,y.tradeFee),D=S.plus(x),F=w.getSpotPriceIn(y),A=Oe(N,y.decimalsOut,F,S);r.push({..._,tokenInDecimals:y.decimalsIn,tokenOutDecimals:y.decimalsOut,amountOut:N,calculatedIn:S,amountIn:D,tradeFee:x,spotPrice:F,priceImpactPct:A,toHuman(){return{..._,amountOut:X(N,y.decimalsOut),calculatedIn:X(S,y.decimalsIn),amountIn:X(D,y.decimalsIn),tradeFee:X(x,y.decimalsIn),spotPrice:X(F,y.decimalsIn),priceImpactPct:A.toString()}}})}return r}};0&&(module.exports={BigNumber,DECIMAL_PLACES,INFINITY,ONE,PolkadotPoolService,PoolFactory,PoolType,Router,TradeRouter,TradeType,XykPool,ZERO,bnum,scale});
2
2
  //# sourceMappingURL=index.js.map