@galacticcouncil/sdk 0.0.1-beta.2 → 0.0.1-beta.3

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.
Files changed (33) hide show
  1. package/README.md +101 -0
  2. package/{cjs → dist}/hydra_dx_wasm_bg-ZX7K4FM7.wasm +0 -0
  3. package/{esm/index.js → dist/index.esm.js} +1 -1
  4. package/{esm/index.js.map → dist/index.esm.js.map} +1 -1
  5. package/{cjs → dist}/index.js +0 -0
  6. package/{cjs → dist}/index.js.map +1 -1
  7. package/{types → dist/types}/api/index.d.ts +0 -0
  8. package/{types → dist/types}/api/router.d.ts +0 -0
  9. package/{types → dist/types}/api/trader.d.ts +0 -0
  10. package/{types → dist/types}/client/capi.d.ts +0 -0
  11. package/{types → dist/types}/client/index.d.ts +0 -0
  12. package/{types → dist/types}/client/polkadot.d.ts +0 -0
  13. package/{types → dist/types}/client/types.d.ts +0 -0
  14. package/{types → dist/types}/index.d.ts +0 -0
  15. package/{types → dist/types}/pool/index.d.ts +0 -0
  16. package/{types → dist/types}/pool/polkadotPoolService.d.ts +0 -0
  17. package/{types → dist/types}/pool/poolFactory.d.ts +0 -0
  18. package/{types → dist/types}/pool/xyk/math/bundler.d.ts +0 -0
  19. package/{types → dist/types}/pool/xyk/math/nodejs.d.ts +0 -0
  20. package/{types → dist/types}/pool/xyk/xykPolkadotClient.d.ts +0 -0
  21. package/{types → dist/types}/pool/xyk/xykPool.d.ts +0 -0
  22. package/{types → dist/types}/suggester/bfs.d.ts +0 -0
  23. package/{types → dist/types}/suggester/graph.d.ts +0 -0
  24. package/{types → dist/types}/suggester/index.d.ts +0 -0
  25. package/{types → dist/types}/suggester/suggester.d.ts +0 -0
  26. package/{types → dist/types}/types.d.ts +0 -0
  27. package/{types → dist/types}/utils/bignumber.d.ts +0 -0
  28. package/{types → dist/types}/utils/math.d.ts +0 -0
  29. package/{types → dist/types}/utils/queue.d.ts +0 -0
  30. package/{types → dist/types}/utils/stack.d.ts +0 -0
  31. package/{types → dist/types}/utils/traversal/bfs.d.ts +0 -0
  32. package/package.json +4 -5
  33. package/esm/hydra_dx_wasm_bg-ZX7K4FM7.wasm +0 -0
package/README.md ADDED
@@ -0,0 +1,101 @@
1
+ <h1><code>Galactic SDK</code></h1>
2
+ Galactic SDK is collection of components crafted to ease Basilisk & HydraDX chains integration.
3
+ <br />
4
+ <br />
5
+ Table of content:
6
+
7
+ - [Components](#components)
8
+ - [Router](#router)
9
+ - [Trader](#trader)
10
+ - [Examples](#examples)
11
+ - [Packaging](#packaging)
12
+ - [Roadmap](#roadmap)
13
+ - [Issue reporting](#issue-reporting)
14
+
15
+ ## Components
16
+
17
+ ### Router
18
+
19
+ Off-chain optimization of orders across pools for best price execution. Router does not perform any on-chain transations.
20
+
21
+ #### API
22
+
23
+ ```typescript
24
+ getPools(): PoolBase[]
25
+ getAllAssets(): PoolAsset[]
26
+ getAssetPairs(token: string): PoolAsset[]
27
+ getAllPaths(tokenIn: string, tokenOut: string): Hop[][]
28
+ getBestSellPrice(tokenIn: string, tokenOut: string, amountIn: BigNumber): Swap[]
29
+ getBestBuyPrice(tokenIn: string, tokenOut: string, amountOut: BigNumber): Swap[]
30
+ ```
31
+
32
+ For type signature visit [types.ts](src/types.ts)<br />
33
+ **Note:** All amount args are formatted as bignumber 1^12!!!
34
+
35
+ #### Usage
36
+
37
+ ```typescript
38
+ // Import
39
+ import { ApiPromise, WsProvider } from '@polkadot/api';
40
+ import { PolkadotPoolService } from '@galactic/pool';
41
+ import { Router } from '@galactic/api';
42
+
43
+ // Initialize Polkadot API
44
+ const wsProvider = new WsProvider('wss://rpc.basilisk.cloud');
45
+ const api = await ApiPromise.create({ provider: wsProvider });
46
+
47
+ // Initialize Router
48
+ const poolService = new PolkadotPoolService(api);
49
+ const router = new Router(poolService);
50
+
51
+ // Do something
52
+ const result = await router.getAllAssets();
53
+ console.log(result);
54
+ ```
55
+
56
+ ### Trader
57
+
58
+ On-chain transaction executor using data from router to perform best possible trade.
59
+
60
+ Not supported yet. 🛠
61
+
62
+ ## Examples
63
+
64
+ SDK Examples and testing helpers.
65
+
66
+ ### Run
67
+
68
+ Run: `$ npx tsx ./test/script/examples/${{examplePackage}}/${{exampleName}}.ts` with valid example package & name.
69
+
70
+ To demonstrate full working examples on real chain see [script](test/script/examples) section.
71
+
72
+ ## Packaging
73
+
74
+ - api - Router & Trader impl
75
+ - client - Substrate chain based clients
76
+ - pool - Pool specific logic, math, clients
77
+ - suggester - Route proposing, graph utils, BFS, DFS
78
+ - utils - bignumber, math, collections
79
+
80
+ ## Roadmap
81
+
82
+ Component list and current status ⬇️
83
+
84
+ - 🧪 Done
85
+ - 🛠 Work in progress
86
+ - ⏳ Planning to build
87
+
88
+ | Name | Type | |
89
+ | -------- | :----: | --: |
90
+ | Router | API | 🧪 |
91
+ | Trader | API | 🛠 |
92
+ | Polkadot | Client | 🧪 |
93
+ | Capi | Client | ⏳ |
94
+ | XYK | Pool | 🧪 |
95
+ | LBP | Pool | ⏳ |
96
+ | Stable | Pool | ⏳ |
97
+ | Omni | Pool | ⏳ |
98
+
99
+ ## Issue reporting
100
+
101
+ In case of unexpected sdk behaviour, please create well-written issue [here](https://https://github.com/nohaapav/router-sdk/issues/new). It makes it easier to find & fix the problem accordingly.
File without changes
@@ -1,2 +1,2 @@
1
1
  var BA=class{constructor(r=1/0){this.capacity=r}storage=[];enqueue(r){if(this.size()===this.capacity)throw Error("Queue has reached max capacity, you cannot add more items");this.storage.push(r)}dequeue(){return this.storage.shift()}size(){return this.storage.length}};var uA=class{isNotVisited(r,u){let p=!0;return u.forEach(j=>{j[0]===r&&(p=!1)}),p}findPaths(r,u,p){let j=[],_=new BA,h=[];for(h.push([u,""]),_.enqueue(h);_.size()>0;){let B=_.dequeue();if(B==null)return j;let P=B[B.length-1];(p===null||P[0]===p)&&j.push(B),r[P[0]].forEach(q=>{if(this.isNotVisited(q[0],B)){let T=[...B];T.push(q),_.enqueue(T)}})}return j}buildAndPopulateGraph(r,u){let p=[];for(let j=0;j<r.length;j++)p.push([]);for(let[j,_,h]of u){let B=parseInt(_),P=parseInt(h);p[B].push([P,j])}return p}};function SA(m){let r={};for(let u of m){let p=u.tokens.length;for(let j=0;j<p;j++){r[u.tokens[j].id]||(r[u.tokens[j].id]=[]);for(let _=0;_<p;_++){if(j==_)continue;let h=[u.address,u.tokens[j].id,u.tokens[_].id];r[u.tokens[j].id].push(h)}}}return r}var fA=class{getProposals(r,u,p){let j=SA(p),_=Object.keys(j),h=_.map(q=>j[q]).flat(),B=new uA,P=B.buildAndPopulateGraph(_,h),v=B.findPaths(P,parseInt(r),u?parseInt(u):null);return this.parsePaths(v)}parsePaths(r){let u=[];for(let p of r){let j=[];for(let _=0;_<p.length;_++){let h=p[_],B=p[_+1];if(B==null)break;j.push(this.toEdge(h,B))}u.push(j)}return u}toEdge(r,u){return[u[1],r[0].toString(),u[0].toString()]}};var pA=class{api;constructor(r){this.api=r}getStorageKey(r,u){return r[0].toHuman()[u]}getStorageEntryArray(r){return r[1].toHuman()}async getAssetMetadata(r){return await this.api.query.assetRegistry.assetMetadataMap(r)}async getSystemAccountBalance(r){let{data:{free:u}}=await this.api.query.system.account(r);return u.toString()}async getTokenAccountBalance(r,u){let{free:p}=await this.api.query.tokens.accounts(r,u);return p.toString()}};var hA=class extends pA{async getPools(){let u=(await this.api.query.xyk.poolAssets.entries()).map(async p=>{let j=this.getStorageKey(p,0),_=this.getStorageEntryArray(p),h=await this.getPoolTokens(j,_);return{address:j,type:"XYK",swapFee:this.getSwapFee(),tokens:h}});return Promise.all(u)}async getPoolTokens(r,u){let p=u.map(async j=>{let _=await this.getBalance(r,j),B=(await super.getAssetMetadata(j)).toHuman();return{id:j,balance:_,decimals:B?B.decimals:"12",symbol:B?B.symbol:"BSX"}});return Promise.all(p)}getBalance(r,u){return u==="0"?this.getSystemAccountBalance(r):this.getTokenAccountBalance(r,u)}getSwapFee(){let r=this.api.consts.xyk.getExchangeFee;return(r[0].toNumber()/r[1].toNumber()*100).toString()}};var wA=class{api;constructor(r){this.api=r}async getPools(){let r=[],u=await new hA(this.api).getPools();return r.push(u),r.flat()}};var re=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,MA=Math.ceil,V=Math.floor,K="[BigNumber Error] ",UA=K+"Number primitive has more than 15 significant digits: ",U=1e14,E=14,GA=9007199254740991,KA=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],tA=1e7,I=1e9;function XA(m){var r,u,p,j=d.prototype={constructor:d,toString:null,valueOf:null},_=new d(1),h=20,B=4,P=-7,v=21,q=-1e7,T=1e7,M=!1,lA=1,eA=0,TA={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},nA="0123456789abcdefghijklmnopqrstuvwxyz",OA=!0;function d(A,e){var t,l,o,s,f,n,i,c,a=this;if(!(a instanceof d))return new d(A,e);if(e==null){if(A&&A._isBigNumber===!0){a.s=A.s,!A.c||A.e>T?a.c=a.e=null:A.e<q?a.c=[a.e=0]:(a.e=A.e,a.c=A.c.slice());return}if((n=typeof A=="number")&&A*0==0){if(a.s=1/A<0?(A=-A,-1):1,A===~~A){for(s=0,f=A;f>=10;f/=10,s++);s>T?a.c=a.e=null:(a.e=s,a.c=[A]);return}c=String(A)}else{if(!re.test(c=String(A)))return p(a,c,n);a.s=c.charCodeAt(0)==45?(c=c.slice(1),-1):1}(s=c.indexOf("."))>-1&&(c=c.replace(".","")),(f=c.search(/e/i))>0?(s<0&&(s=f),s+=+c.slice(f+1),c=c.substring(0,f)):s<0&&(s=c.length)}else{if(O(e,2,nA.length,"Base"),e==10&&OA)return a=new d(A),H(a,h+a.e+1,B);if(c=String(A),n=typeof A=="number"){if(A*0!=0)return p(a,c,n,e);if(a.s=1/A<0?(c=c.slice(1),-1):1,d.DEBUG&&c.replace(/^0\.0*|\./,"").length>15)throw Error(UA+A)}else a.s=c.charCodeAt(0)===45?(c=c.slice(1),-1):1;for(t=nA.slice(0,e),s=f=0,i=c.length;f<i;f++)if(t.indexOf(l=c.charAt(f))<0){if(l=="."){if(f>s){s=i;continue}}else if(!o&&(c==c.toUpperCase()&&(c=c.toLowerCase())||c==c.toLowerCase()&&(c=c.toUpperCase()))){o=!0,f=-1,s=0;continue}return p(a,String(A),n,e)}n=!1,c=u(c,e,10,a.s),(s=c.indexOf("."))>-1?c=c.replace(".",""):s=c.length}for(f=0;c.charCodeAt(f)===48;f++);for(i=c.length;c.charCodeAt(--i)===48;);if(c=c.slice(f,++i)){if(i-=f,n&&d.DEBUG&&i>15&&(A>GA||A!==V(A)))throw Error(UA+a.s*A);if((s=s-f-1)>T)a.c=a.e=null;else if(s<q)a.c=[a.e=0];else{if(a.e=s,a.c=[],f=(s+1)%E,s<0&&(f+=E),f<i){for(f&&a.c.push(+c.slice(0,f)),i-=E;f<i;)a.c.push(+c.slice(f,f+=E));f=E-(c=c.slice(f)).length}else f-=i;for(;f--;c+="0");a.c.push(+c)}}else a.c=[a.e=0]}d.clone=XA,d.ROUND_UP=0,d.ROUND_DOWN=1,d.ROUND_CEIL=2,d.ROUND_FLOOR=3,d.ROUND_HALF_UP=4,d.ROUND_HALF_DOWN=5,d.ROUND_HALF_EVEN=6,d.ROUND_HALF_CEIL=7,d.ROUND_HALF_FLOOR=8,d.EUCLID=9,d.config=d.set=function(A){var e,t;if(A!=null)if(typeof A=="object"){if(A.hasOwnProperty(e="DECIMAL_PLACES")&&(t=A[e],O(t,0,I,e),h=t),A.hasOwnProperty(e="ROUNDING_MODE")&&(t=A[e],O(t,0,8,e),B=t),A.hasOwnProperty(e="EXPONENTIAL_AT")&&(t=A[e],t&&t.pop?(O(t[0],-I,0,e),O(t[1],0,I,e),P=t[0],v=t[1]):(O(t,-I,I,e),P=-(v=t<0?-t:t))),A.hasOwnProperty(e="RANGE"))if(t=A[e],t&&t.pop)O(t[0],-I,-1,e),O(t[1],1,I,e),q=t[0],T=t[1];else if(O(t,-I,I,e),t)q=-(T=t<0?-t:t);else throw Error(K+e+" cannot be zero: "+t);if(A.hasOwnProperty(e="CRYPTO"))if(t=A[e],t===!!t)if(t)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))M=t;else throw M=!t,Error(K+"crypto unavailable");else M=t;else throw Error(K+e+" not true or false: "+t);if(A.hasOwnProperty(e="MODULO_MODE")&&(t=A[e],O(t,0,9,e),lA=t),A.hasOwnProperty(e="POW_PRECISION")&&(t=A[e],O(t,0,I,e),eA=t),A.hasOwnProperty(e="FORMAT"))if(t=A[e],typeof t=="object")TA=t;else throw Error(K+e+" not an object: "+t);if(A.hasOwnProperty(e="ALPHABET"))if(t=A[e],typeof t=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(t))OA=t.slice(0,10)=="0123456789",nA=t;else throw Error(K+e+" invalid: "+t)}else throw Error(K+"Object expected: "+A);return{DECIMAL_PLACES:h,ROUNDING_MODE:B,EXPONENTIAL_AT:[P,v],RANGE:[q,T],CRYPTO:M,MODULO_MODE:lA,POW_PRECISION:eA,FORMAT:TA,ALPHABET:nA}},d.isBigNumber=function(A){if(!A||A._isBigNumber!==!0)return!1;if(!d.DEBUG)return!0;var e,t,l=A.c,o=A.e,s=A.s;A:if({}.toString.call(l)=="[object Array]"){if((s===1||s===-1)&&o>=-I&&o<=I&&o===V(o)){if(l[0]===0){if(o===0&&l.length===1)return!0;break A}if(e=(o+1)%E,e<1&&(e+=E),String(l[0]).length==e){for(e=0;e<l.length;e++)if(t=l[e],t<0||t>=U||t!==V(t))break A;if(t!==0)return!0}}}else if(l===null&&o===null&&(s===null||s===1||s===-1))return!0;throw Error(K+"Invalid BigNumber: "+A)},d.maximum=d.max=function(){return CA(arguments,j.lt)},d.minimum=d.min=function(){return CA(arguments,j.gt)},d.random=function(){var A=9007199254740992,e=Math.random()*A&2097151?function(){return V(Math.random()*A)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(t){var l,o,s,f,n,i=0,c=[],a=new d(_);if(t==null?t=h:O(t,0,I),f=MA(t/E),M)if(crypto.getRandomValues){for(l=crypto.getRandomValues(new Uint32Array(f*=2));i<f;)n=l[i]*131072+(l[i+1]>>>11),n>=9e15?(o=crypto.getRandomValues(new Uint32Array(2)),l[i]=o[0],l[i+1]=o[1]):(c.push(n%1e14),i+=2);i=f/2}else if(crypto.randomBytes){for(l=crypto.randomBytes(f*=7);i<f;)n=(l[i]&31)*281474976710656+l[i+1]*1099511627776+l[i+2]*4294967296+l[i+3]*16777216+(l[i+4]<<16)+(l[i+5]<<8)+l[i+6],n>=9e15?crypto.randomBytes(7).copy(l,i):(c.push(n%1e14),i+=7);i=f/7}else throw M=!1,Error(K+"crypto unavailable");if(!M)for(;i<f;)n=e(),n<9e15&&(c[i++]=n%1e14);for(f=c[--i],t%=E,f&&t&&(n=KA[E-t],c[i]=V(f/n)*n);c[i]===0;c.pop(),i--);if(i<0)c=[s=0];else{for(s=-1;c[0]===0;c.splice(0,1),s-=E);for(i=1,n=c[0];n>=10;n/=10,i++);i<E&&(s-=E-i)}return a.e=s,a.c=c,a}}(),d.sum=function(){for(var A=1,e=arguments,t=new d(e[0]);A<e.length;)t=t.plus(e[A++]);return t},u=function(){var A="0123456789";function e(t,l,o,s){for(var f,n=[0],i,c=0,a=t.length;c<a;){for(i=n.length;i--;n[i]*=l);for(n[0]+=s.indexOf(t.charAt(c++)),f=0;f<n.length;f++)n[f]>o-1&&(n[f+1]==null&&(n[f+1]=0),n[f+1]+=n[f]/o|0,n[f]%=o)}return n.reverse()}return function(t,l,o,s,f){var n,i,c,a,g,w,k,y,N=t.indexOf("."),$=h,b=B;for(N>=0&&(a=eA,eA=0,t=t.replace(".",""),y=new d(l),w=y.pow(t.length-N),eA=a,y.c=e(Z(C(w.c),w.e,"0"),10,o,A),y.e=y.c.length),k=e(t,l,o,f?(n=nA,A):(n=A,nA)),c=a=k.length;k[--a]==0;k.pop());if(!k[0])return n.charAt(0);if(N<0?--c:(w.c=k,w.e=c,w.s=s,w=r(w,y,$,b,o),k=w.c,g=w.r,c=w.e),i=c+$+1,N=k[i],a=o/2,g=g||i<0||k[i+1]!=null,g=b<4?(N!=null||g)&&(b==0||b==(w.s<0?3:2)):N>a||N==a&&(b==4||g||b==6&&k[i-1]&1||b==(w.s<0?8:7)),i<1||!k[0])t=g?Z(n.charAt(1),-$,n.charAt(0)):n.charAt(0);else{if(k.length=i,g)for(--o;++k[--i]>o;)k[i]=0,i||(++c,k=[1].concat(k));for(a=k.length;!k[--a];);for(N=0,t="";N<=a;t+=n.charAt(k[N++]));t=Z(t,c,n.charAt(0))}return t}}(),r=function(){function A(l,o,s){var f,n,i,c,a=0,g=l.length,w=o%tA,k=o/tA|0;for(l=l.slice();g--;)i=l[g]%tA,c=l[g]/tA|0,f=k*i+c*w,n=w*i+f%tA*tA+a,a=(n/s|0)+(f/tA|0)+k*c,l[g]=n%s;return a&&(l=[a].concat(l)),l}function e(l,o,s,f){var n,i;if(s!=f)i=s>f?1:-1;else for(n=i=0;n<s;n++)if(l[n]!=o[n]){i=l[n]>o[n]?1:-1;break}return i}function t(l,o,s,f){for(var n=0;s--;)l[s]-=n,n=l[s]<o[s]?1:0,l[s]=n*f+l[s]-o[s];for(;!l[0]&&l.length>1;l.splice(0,1));}return function(l,o,s,f,n){var i,c,a,g,w,k,y,N,$,b,x,S,dA,$A,IA,z,cA,W=l.s==o.s?1:-1,G=l.c,F=o.c;if(!G||!G[0]||!F||!F[0])return new d(!l.s||!o.s||(G?F&&G[0]==F[0]:!F)?NaN:G&&G[0]==0||!F?W*0:W/0);for(N=new d(W),$=N.c=[],c=l.e-o.e,W=s+c+1,n||(n=U,c=L(l.e/E)-L(o.e/E),W=W/E|0),a=0;F[a]==(G[a]||0);a++);if(F[a]>(G[a]||0)&&c--,W<0)$.push(1),g=!0;else{for($A=G.length,z=F.length,a=0,W+=2,w=V(n/(F[0]+1)),w>1&&(F=A(F,w,n),G=A(G,w,n),z=F.length,$A=G.length),dA=z,b=G.slice(0,z),x=b.length;x<z;b[x++]=0);cA=F.slice(),cA=[0].concat(cA),IA=F[0],F[1]>=n/2&&IA++;do{if(w=0,i=e(F,b,z,x),i<0){if(S=b[0],z!=x&&(S=S*n+(b[1]||0)),w=V(S/IA),w>1)for(w>=n&&(w=n-1),k=A(F,w,n),y=k.length,x=b.length;e(k,b,y,x)==1;)w--,t(k,z<y?cA:F,y,n),y=k.length,i=1;else w==0&&(i=w=1),k=F.slice(),y=k.length;if(y<x&&(k=[0].concat(k)),t(b,k,x,n),x=b.length,i==-1)for(;e(F,b,z,x)<1;)w++,t(b,z<x?cA:F,x,n),x=b.length}else i===0&&(w++,b=[0]);$[a++]=w,b[0]?b[x++]=G[dA]||0:(b=[G[dA]],x=1)}while((dA++<$A||b[0]!=null)&&W--);g=b[0]!=null,$[0]||$.splice(0,1)}if(n==U){for(a=1,W=$[0];W>=10;W/=10,a++);H(N,s+(N.e=a+c*E-1)+1,f,g)}else N.e=c,N.r=+g;return N}}();function NA(A,e,t,l){var o,s,f,n,i;if(t==null?t=B:O(t,0,8),!A.c)return A.toString();if(o=A.c[0],f=A.e,e==null)i=C(A.c),i=l==1||l==2&&(f<=P||f>=v)?PA(i,f):Z(i,f,"0");else if(A=H(new d(A),e,t),s=A.e,i=C(A.c),n=i.length,l==1||l==2&&(e<=s||s<=P)){for(;n<e;i+="0",n++);i=PA(i,s)}else if(e-=f,i=Z(i,s,"0"),s+1>n){if(--e>0)for(i+=".";e--;i+="0");}else if(e+=s-n,e>0)for(s+1==n&&(i+=".");e--;i+="0");return A.s<0&&o?"-"+i:i}function CA(A,e){for(var t,l=1,o=new d(A[0]);l<A.length;l++)if(t=new d(A[l]),t.s)e.call(o,t)&&(o=t);else{o=t;break}return o}function FA(A,e,t){for(var l=1,o=e.length;!e[--o];e.pop());for(o=e[0];o>=10;o/=10,l++);return(t=l+t*E-1)>T?A.c=A.e=null:t<q?A.c=[A.e=0]:(A.e=t,A.c=e),A}p=function(){var A=/^(-?)0([xbo])(?=\w[\w.]*$)/i,e=/^([^.]+)\.$/,t=/^\.([^.]+)$/,l=/^-?(Infinity|NaN)$/,o=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(s,f,n,i){var c,a=n?f:f.replace(o,"");if(l.test(a))s.s=isNaN(a)?null:a<0?-1:1;else{if(!n&&(a=a.replace(A,function(g,w,k){return c=(k=k.toLowerCase())=="x"?16:k=="b"?2:8,!i||i==c?w:g}),i&&(c=i,a=a.replace(e,"$1").replace(t,"0.$1")),f!=a))return new d(a,c);if(d.DEBUG)throw Error(K+"Not a"+(i?" base "+i:"")+" number: "+f);s.s=null}s.c=s.e=null}}();function H(A,e,t,l){var o,s,f,n,i,c,a,g=A.c,w=KA;if(g){A:{for(o=1,n=g[0];n>=10;n/=10,o++);if(s=e-o,s<0)s+=E,f=e,i=g[c=0],a=i/w[o-f-1]%10|0;else if(c=MA((s+1)/E),c>=g.length)if(l){for(;g.length<=c;g.push(0));i=a=0,o=1,s%=E,f=s-E+1}else break A;else{for(i=n=g[c],o=1;n>=10;n/=10,o++);s%=E,f=s-E+o,a=f<0?0:i/w[o-f-1]%10|0}if(l=l||e<0||g[c+1]!=null||(f<0?i:i%w[o-f-1]),l=t<4?(a||l)&&(t==0||t==(A.s<0?3:2)):a>5||a==5&&(t==4||l||t==6&&(s>0?f>0?i/w[o-f]:0:g[c-1])%10&1||t==(A.s<0?8:7)),e<1||!g[0])return g.length=0,l?(e-=A.e+1,g[0]=w[(E-e%E)%E],A.e=-e||0):g[0]=A.e=0,A;if(s==0?(g.length=c,n=1,c--):(g.length=c+1,n=w[E-s],g[c]=f>0?V(i/w[o-f]%w[f])*n:0),l)for(;;)if(c==0){for(s=1,f=g[0];f>=10;f/=10,s++);for(f=g[0]+=n,n=1;f>=10;f/=10,n++);s!=n&&(A.e++,g[0]==U&&(g[0]=1));break}else{if(g[c]+=n,g[c]!=U)break;g[c--]=0,n=1}for(s=g.length;g[--s]===0;g.pop());}A.e>T?A.c=A.e=null:A.e<q&&(A.c=[A.e=0])}return A}function Q(A){var e,t=A.e;return t===null?A.toString():(e=C(A.c),e=t<=P||t>=v?PA(e,t):Z(e,t,"0"),A.s<0?"-"+e:e)}return j.absoluteValue=j.abs=function(){var A=new d(this);return A.s<0&&(A.s=1),A},j.comparedTo=function(A,e){return jA(this,new d(A,e))},j.decimalPlaces=j.dp=function(A,e){var t,l,o,s=this;if(A!=null)return O(A,0,I),e==null?e=B:O(e,0,8),H(new d(s),A+s.e+1,e);if(!(t=s.c))return null;if(l=((o=t.length-1)-L(this.e/E))*E,o=t[o])for(;o%10==0;o/=10,l--);return l<0&&(l=0),l},j.dividedBy=j.div=function(A,e){return r(this,new d(A,e),h,B)},j.dividedToIntegerBy=j.idiv=function(A,e){return r(this,new d(A,e),0,1)},j.exponentiatedBy=j.pow=function(A,e){var t,l,o,s,f,n,i,c,a,g=this;if(A=new d(A),A.c&&!A.isInteger())throw Error(K+"Exponent not an integer: "+Q(A));if(e!=null&&(e=new d(e)),n=A.e>14,!g.c||!g.c[0]||g.c[0]==1&&!g.e&&g.c.length==1||!A.c||!A.c[0])return a=new d(Math.pow(+Q(g),n?2-kA(A):+Q(A))),e?a.mod(e):a;if(i=A.s<0,e){if(e.c?!e.c[0]:!e.s)return new d(NaN);l=!i&&g.isInteger()&&e.isInteger(),l&&(g=g.mod(e))}else{if(A.e>9&&(g.e>0||g.e<-1||(g.e==0?g.c[0]>1||n&&g.c[1]>=24e7:g.c[0]<8e13||n&&g.c[0]<=9999975e7)))return s=g.s<0&&kA(A)?-0:0,g.e>-1&&(s=1/s),new d(i?1/s:s);eA&&(s=MA(eA/E+2))}for(n?(t=new d(.5),i&&(A.s=1),c=kA(A)):(o=Math.abs(+Q(A)),c=o%2),a=new d(_);;){if(c){if(a=a.times(g),!a.c)break;s?a.c.length>s&&(a.c.length=s):l&&(a=a.mod(e))}if(o){if(o=V(o/2),o===0)break;c=o%2}else if(A=A.times(t),H(A,A.e+1,1),A.e>14)c=kA(A);else{if(o=+Q(A),o===0)break;c=o%2}g=g.times(g),s?g.c&&g.c.length>s&&(g.c.length=s):l&&(g=g.mod(e))}return l?a:(i&&(a=_.div(a)),e?a.mod(e):s?H(a,eA,B,f):a)},j.integerValue=function(A){var e=new d(this);return A==null?A=B:O(A,0,8),H(e,e.e+1,A)},j.isEqualTo=j.eq=function(A,e){return jA(this,new d(A,e))===0},j.isFinite=function(){return!!this.c},j.isGreaterThan=j.gt=function(A,e){return jA(this,new d(A,e))>0},j.isGreaterThanOrEqualTo=j.gte=function(A,e){return(e=jA(this,new d(A,e)))===1||e===0},j.isInteger=function(){return!!this.c&&L(this.e/E)>this.c.length-2},j.isLessThan=j.lt=function(A,e){return jA(this,new d(A,e))<0},j.isLessThanOrEqualTo=j.lte=function(A,e){return(e=jA(this,new d(A,e)))===-1||e===0},j.isNaN=function(){return!this.s},j.isNegative=function(){return this.s<0},j.isPositive=function(){return this.s>0},j.isZero=function(){return!!this.c&&this.c[0]==0},j.minus=function(A,e){var t,l,o,s,f=this,n=f.s;if(A=new d(A,e),e=A.s,!n||!e)return new d(NaN);if(n!=e)return A.s=-e,f.plus(A);var i=f.e/E,c=A.e/E,a=f.c,g=A.c;if(!i||!c){if(!a||!g)return a?(A.s=-e,A):new d(g?f:NaN);if(!a[0]||!g[0])return g[0]?(A.s=-e,A):new d(a[0]?f:B==3?-0:0)}if(i=L(i),c=L(c),a=a.slice(),n=i-c){for((s=n<0)?(n=-n,o=a):(c=i,o=g),o.reverse(),e=n;e--;o.push(0));o.reverse()}else for(l=(s=(n=a.length)<(e=g.length))?n:e,n=e=0;e<l;e++)if(a[e]!=g[e]){s=a[e]<g[e];break}if(s&&(o=a,a=g,g=o,A.s=-A.s),e=(l=g.length)-(t=a.length),e>0)for(;e--;a[t++]=0);for(e=U-1;l>n;){if(a[--l]<g[l]){for(t=l;t&&!a[--t];a[t]=e);--a[t],a[l]+=U}a[l]-=g[l]}for(;a[0]==0;a.splice(0,1),--c);return a[0]?FA(A,a,c):(A.s=B==3?-1:1,A.c=[A.e=0],A)},j.modulo=j.mod=function(A,e){var t,l,o=this;return A=new d(A,e),!o.c||!A.s||A.c&&!A.c[0]?new d(NaN):!A.c||o.c&&!o.c[0]?new d(o):(lA==9?(l=A.s,A.s=1,t=r(o,A,0,3),A.s=l,t.s*=l):t=r(o,A,0,lA),A=o.minus(t.times(A)),!A.c[0]&&lA==1&&(A.s=o.s),A)},j.multipliedBy=j.times=function(A,e){var t,l,o,s,f,n,i,c,a,g,w,k,y,N,$,b=this,x=b.c,S=(A=new d(A,e)).c;if(!x||!S||!x[0]||!S[0])return!b.s||!A.s||x&&!x[0]&&!S||S&&!S[0]&&!x?A.c=A.e=A.s=null:(A.s*=b.s,!x||!S?A.c=A.e=null:(A.c=[0],A.e=0)),A;for(l=L(b.e/E)+L(A.e/E),A.s*=b.s,i=x.length,g=S.length,i<g&&(y=x,x=S,S=y,o=i,i=g,g=o),o=i+g,y=[];o--;y.push(0));for(N=U,$=tA,o=g;--o>=0;){for(t=0,w=S[o]%$,k=S[o]/$|0,f=i,s=o+f;s>o;)c=x[--f]%$,a=x[f]/$|0,n=k*c+a*w,c=w*c+n%$*$+y[s]+t,t=(c/N|0)+(n/$|0)+k*a,y[s--]=c%N;y[s]=t}return t?++l:y.splice(0,1),FA(A,y,l)},j.negated=function(){var A=new d(this);return A.s=-A.s||null,A},j.plus=function(A,e){var t,l=this,o=l.s;if(A=new d(A,e),e=A.s,!o||!e)return new d(NaN);if(o!=e)return A.s=-e,l.minus(A);var s=l.e/E,f=A.e/E,n=l.c,i=A.c;if(!s||!f){if(!n||!i)return new d(o/0);if(!n[0]||!i[0])return i[0]?A:new d(n[0]?l:o*0)}if(s=L(s),f=L(f),n=n.slice(),o=s-f){for(o>0?(f=s,t=i):(o=-o,t=n),t.reverse();o--;t.push(0));t.reverse()}for(o=n.length,e=i.length,o-e<0&&(t=i,i=n,n=t,e=o),o=0;e;)o=(n[--e]=n[e]+i[e]+o)/U|0,n[e]=U===n[e]?0:n[e]%U;return o&&(n=[o].concat(n),++f),FA(A,n,f)},j.precision=j.sd=function(A,e){var t,l,o,s=this;if(A!=null&&A!==!!A)return O(A,1,I),e==null?e=B:O(e,0,8),H(new d(s),A,e);if(!(t=s.c))return null;if(o=t.length-1,l=o*E+1,o=t[o]){for(;o%10==0;o/=10,l--);for(o=t[0];o>=10;o/=10,l++);}return A&&s.e+1>l&&(l=s.e+1),l},j.shiftedBy=function(A){return O(A,-GA,GA),this.times("1e"+A)},j.squareRoot=j.sqrt=function(){var A,e,t,l,o,s=this,f=s.c,n=s.s,i=s.e,c=h+4,a=new d("0.5");if(n!==1||!f||!f[0])return new d(!n||n<0&&(!f||f[0])?NaN:f?s:1/0);if(n=Math.sqrt(+Q(s)),n==0||n==1/0?(e=C(f),(e.length+i)%2==0&&(e+="0"),n=Math.sqrt(+e),i=L((i+1)/2)-(i<0||i%2),n==1/0?e="5e"+i:(e=n.toExponential(),e=e.slice(0,e.indexOf("e")+1)+i),t=new d(e)):t=new d(n+""),t.c[0]){for(i=t.e,n=i+c,n<3&&(n=0);;)if(o=t,t=a.times(o.plus(r(s,o,c,1))),C(o.c).slice(0,n)===(e=C(t.c)).slice(0,n))if(t.e<i&&--n,e=e.slice(n-3,n+1),e=="9999"||!l&&e=="4999"){if(!l&&(H(o,o.e+h+2,0),o.times(o).eq(s))){t=o;break}c+=4,n+=4,l=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(H(t,t.e+h+2,1),A=!t.times(t).eq(s));break}}return H(t,t.e+h+1,B,A)},j.toExponential=function(A,e){return A!=null&&(O(A,0,I),A++),NA(this,A,e,1)},j.toFixed=function(A,e){return A!=null&&(O(A,0,I),A=A+this.e+1),NA(this,A,e)},j.toFormat=function(A,e,t){var l,o=this;if(t==null)A!=null&&e&&typeof e=="object"?(t=e,e=null):A&&typeof A=="object"?(t=A,A=e=null):t=TA;else if(typeof t!="object")throw Error(K+"Argument not an object: "+t);if(l=o.toFixed(A,e),o.c){var s,f=l.split("."),n=+t.groupSize,i=+t.secondaryGroupSize,c=t.groupSeparator||"",a=f[0],g=f[1],w=o.s<0,k=w?a.slice(1):a,y=k.length;if(i&&(s=n,n=i,i=s,y-=s),n>0&&y>0){for(s=y%n||n,a=k.substr(0,s);s<y;s+=n)a+=c+k.substr(s,n);i>0&&(a+=c+k.slice(s)),w&&(a="-"+a)}l=g?a+(t.decimalSeparator||"")+((i=+t.fractionGroupSize)?g.replace(new RegExp("\\d{"+i+"}\\B","g"),"$&"+(t.fractionGroupSeparator||"")):g):a}return(t.prefix||"")+l+(t.suffix||"")},j.toFraction=function(A){var e,t,l,o,s,f,n,i,c,a,g,w,k=this,y=k.c;if(A!=null&&(n=new d(A),!n.isInteger()&&(n.c||n.s!==1)||n.lt(_)))throw Error(K+"Argument "+(n.isInteger()?"out of range: ":"not an integer: ")+Q(n));if(!y)return new d(k);for(e=new d(_),c=t=new d(_),l=i=new d(_),w=C(y),s=e.e=w.length-k.e-1,e.c[0]=KA[(f=s%E)<0?E+f:f],A=!A||n.comparedTo(e)>0?s>0?e:c:n,f=T,T=1/0,n=new d(w),i.c[0]=0;a=r(n,e,0,1),o=t.plus(a.times(l)),o.comparedTo(A)!=1;)t=l,l=o,c=i.plus(a.times(o=c)),i=o,e=n.minus(a.times(o=e)),n=o;return o=r(A.minus(t),l,0,1),i=i.plus(o.times(c)),t=t.plus(o.times(l)),i.s=c.s=k.s,s=s*2,g=r(c,l,s,B).minus(k).abs().comparedTo(r(i,t,s,B).minus(k).abs())<1?[c,l]:[i,t],T=f,g},j.toNumber=function(){return+Q(this)},j.toPrecision=function(A,e){return A!=null&&O(A,1,I),NA(this,A,e,2)},j.toString=function(A){var e,t=this,l=t.s,o=t.e;return o===null?l?(e="Infinity",l<0&&(e="-"+e)):e="NaN":(A==null?e=o<=P||o>=v?PA(C(t.c),o):Z(C(t.c),o,"0"):A===10&&OA?(t=H(new d(t),h+o+1,B),e=Z(C(t.c),t.e,"0")):(O(A,2,nA.length,"Base"),e=u(Z(C(t.c),o,"0"),10,A,l,!0)),l<0&&t.c[0]&&(e="-"+e)),e},j.valueOf=j.toJSON=function(){return Q(this)},j._isBigNumber=!0,j[Symbol.toStringTag]="BigNumber",j[Symbol.for("nodejs.util.inspect.custom")]=j.valueOf,m!=null&&d.set(m),d}function L(m){var r=m|0;return m>0||m===r?r:r-1}function C(m){for(var r,u,p=1,j=m.length,_=m[0]+"";p<j;){for(r=m[p++]+"",u=E-r.length;u--;r="0"+r);_+=r}for(j=_.length;_.charCodeAt(--j)===48;);return _.slice(0,j+1||1)}function jA(m,r){var u,p,j=m.c,_=r.c,h=m.s,B=r.s,P=m.e,v=r.e;if(!h||!B)return null;if(u=j&&!j[0],p=_&&!_[0],u||p)return u?p?0:-B:h;if(h!=B)return h;if(u=h<0,p=P==v,!j||!_)return p?0:!j^u?1:-1;if(!p)return P>v^u?1:-1;for(B=(P=j.length)<(v=_.length)?P:v,h=0;h<B;h++)if(j[h]!=_[h])return j[h]>_[h]^u?1:-1;return P==v?0:P>v^u?1:-1}function O(m,r,u,p){if(m<r||m>u||m!==V(m))throw Error(K+(p||"Argument")+(typeof m=="number"?m<r||m>u?" out of range: ":" not an integer: ":" not a primitive number: ")+String(m))}function kA(m){var r=m.c.length-1;return L(m.e/E)==r&&m.c[r]%2!=0}function PA(m,r){return(m.length>1?m.charAt(0)+"."+m.slice(1):m)+(r<0?"e":"e+")+r}function Z(m,r,u){var p,j;if(r<0){for(j=u+".";++r;j+=u);m=j+m}else if(p=m.length,++r>p){for(j=u,r-=p;--r;j+=u);m+=j}else r<p&&(m=m.slice(0,r)+"."+m.slice(r));return m}var gA=XA();var RA=12;gA.config({EXPONENTIAL_AT:[-100,100],ROUNDING_MODE:1,DECIMAL_PLACES:RA});var ze=R(0),Ve=R(1),Je=R("Infinity");function mA(m,r){let u=new gA(r.toString()),p=new gA(10).pow(u);return m.times(p)}function R(m){return new gA(m.toString())}var zA="./hydra_dx_wasm_bg-ZX7K4FM7.wasm";var oe={};async function je(m,r){if(typeof m=="string"){let u=await fetch(m);if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(u,r)}catch(p){if(u.headers.get("Content-Type")!="application/wasm")console.warn(p);else throw p}m=await u.arrayBuffer()}return await WebAssembly.instantiate(m,r)}var{instance:D,module:At}=await je(zA,oe),_A=D.exports.memory,ie=D.exports.calculate_pool_trade_fee,VA=D.exports.get_spot_price,JA=D.exports.calculate_out_given_in,YA=D.exports.calculate_in_given_out,se=D.exports.calculate_liquidity_in,ae=D.exports.calculate_shares,le=D.exports.calculate_liquidity_out_asset_a,ce=D.exports.calculate_liquidity_out_asset_b,oA=D.exports.__wbindgen_add_to_stack_pointer,J=D.exports.__wbindgen_malloc,Y=D.exports.__wbindgen_realloc,EA=D.exports.__wbindgen_free;var X=0,vA=null;function yA(){return(vA===null||vA.buffer!==_A.buffer)&&(vA=new Uint8Array(_A.buffer)),vA}var fe=typeof TextEncoder>"u"?(0,module.require)("util").TextEncoder:TextEncoder,qA=new fe("utf-8"),pe=typeof qA.encodeInto=="function"?function(m,r){return qA.encodeInto(m,r)}:function(m,r){let u=qA.encode(m);return r.set(u),{read:m.length,written:u.length}};function AA(m,r,u){if(u===void 0){let B=qA.encode(m),P=r(B.length);return yA().subarray(P,P+B.length).set(B),X=B.length,P}let p=m.length,j=r(p),_=yA(),h=0;for(;h<p;h++){let B=m.charCodeAt(h);if(B>127)break;_[j+h]=B}if(h!==p){h!==0&&(m=m.slice(h)),j=u(j,p,p=h+m.length*3);let B=yA().subarray(j+h,j+p);h+=pe(m,B).written}return X=h,j}var bA=null;function iA(){return(bA===null||bA.buffer!==_A.buffer)&&(bA=new Int32Array(_A.buffer)),bA}var ge=typeof TextDecoder>"u"?(0,module.require)("util").TextDecoder:TextDecoder,QA=new ge("utf-8",{ignoreBOM:!0,fatal:!0});QA.decode();function DA(m,r){return QA.decode(yA().subarray(m,m+r))}function ZA(m,r,u){try{let _=oA(-16),h=AA(m,J,Y),B=X,P=AA(r,J,Y),v=X,q=AA(u,J,Y);VA(_,h,B,P,v,q,X);var p=iA()[_/4+0],j=iA()[_/4+1];return DA(p,j)}finally{oA(16),EA(p,j)}}function Ae(m,r,u){try{let _=oA(-16),h=AA(m,J,Y),B=X,P=AA(r,J,Y),v=X,q=AA(u,J,Y);JA(_,h,B,P,v,q,X);var p=iA()[_/4+0],j=iA()[_/4+1];return DA(p,j)}finally{oA(16),EA(p,j)}}function ee(m,r,u){try{let _=oA(-16),h=AA(m,J,Y),B=X,P=AA(r,J,Y),v=X,q=AA(u,J,Y);YA(_,h,B,P,v,q,X);var p=iA()[_/4+0],j=iA()[_/4+1];return DA(p,j)}finally{oA(16),EA(p,j)}}function me(m,r,u){return ZA(m,r,u)}function _e(m,r,u){return ee(m,r,u)}function de(m,r,u){return Ae(m,r,u)}var sA={getSpotPrice:me,calculateInGivenOut:_e,calculateOutGivenIn:de};function te(m){return R(parseFloat(m)/100)}function HA(m,r){return m.multipliedBy(r).decimalPlaces(0,1)}function WA(m,r){if(r==RA)return m;let u=m.shiftedBy(-1*r);return mA(u,12)}var rA=class{type;address;swapFee;tokens;static fromPool(r){return new rA(r.address,r.swapFee,r.tokens)}constructor(r,u,p){this.type="XYK",this.address=r,this.swapFee=u,this.tokens=p}validPair(r,u){return!0}parsePoolPair(r,u){let p=new Map(this.tokens.map(P=>[P.id,P])),j=p.get(r),_=p.get(u);if(j==null)throw new Error("Pool does not contain tokenIn");if(_==null)throw new Error("Pool does not contain tokenOut");let h=R(j.balance),B=R(_.balance);return{swapFee:te(this.swapFee),tokenIn:r,tokenOut:u,balanceIn:WA(h,j.decimals),balanceOut:WA(B,_.decimals)}}calculateInGivenOut(r,u){let p=sA.calculateInGivenOut(r.balanceIn.toString(),r.balanceOut.toString(),u.toString());return R(p)}getSpotPriceIn(r){let u=sA.getSpotPrice(r.balanceOut.toString(),r.balanceIn.toString(),mA(R(1),12).toString());return R(u)}calculateOutGivenIn(r,u){let p=sA.calculateOutGivenIn(r.balanceIn.toString(),r.balanceOut.toString(),u.toString());return R(p)}getSpotPriceOut(r){let u=sA.getSpotPrice(r.balanceIn.toString(),r.balanceOut.toString(),mA(R(1),12).toString());return R(u)}};var aA=class{static get(r){switch(r.type){case"XYK":return rA.fromPool(r);default:throw new Error("Pool type "+r.type+" is not supported yet")}}};var xA=class{routeSuggester;poolService;constructor(r){this.poolService=r,this.routeSuggester=new fA}getPools(){return this.poolService.getPools()}async getAllAssets(){let r=await this.getAssets();return[...new Map(r).values()]}async getAssetPairs(r){let u=await this.poolService.getPools();if(u.length===0)return[];let{assets:p,poolsMap:j}=await this.validateToken(r,u),h=this.getPaths(r,null,j,u).map(B=>B[B.length-1].tokenOut);return this.toPoolAssets([...new Set(h)],p)}async getAllPaths(r,u){let p=await this.poolService.getPools();if(p.length===0)return[];let{poolsMap:j}=await this.validateTokenPair(r,u,p);return this.getPaths(r,u,j,p)}async getBestSellPrice(r,u,p){let j=await this.poolService.getPools();if(j.length===0)return[];let{poolsMap:_}=await this.validateTokenPair(r,u,j);return this.getPaths(r,u,_,j).map(v=>this.toSellSwaps(p,v,_)).sort((v,q)=>{let T=v[v.length-1].returnFinalAmount,M=q[q.length-1].returnFinalAmount;return T.isGreaterThan(M)?-1:1})[0]}toSellSwaps(r,u,p){let j=[];for(let _=0;_<u.length;_++){let h=u[_],B=p.get(h.poolId);if(B==null)throw new Error("Pool does not exit");let P;_>0?P=j[_-1].returnFinalAmount:P=r;let v=B.parsePoolPair(h.tokenIn,h.tokenOut),q=B.calculateOutGivenIn(v,P),T=HA(q,v.swapFee),M=B.getSpotPriceOut(v);j.push({...h,swapAmount:P,returnAmount:q,returnFinalAmount:q.minus(T),swapFee:T,spotPrice:M})}return j}async getBestBuyPrice(r,u,p){let j=await this.poolService.getPools();if(j.length===0)return[];let{poolsMap:_}=await this.validateTokenPair(r,u,j);return this.getPaths(r,u,_,j).map(v=>this.toBuySwaps(p,v,_)).sort((v,q)=>{let T=v[0].returnFinalAmount,M=q[0].returnFinalAmount;return T.isGreaterThan(M)?1:-1})[0]}toBuySwaps(r,u,p){let j=[];for(let _=u.length-1;_>=0;_--){let h=u[_],B=p.get(h.poolId);if(B==null)throw new Error("Pool does not exit");let P;_==u.length-1?P=r:P=j[0].returnFinalAmount;let v=B.parsePoolPair(h.tokenIn,h.tokenOut),q=B.calculateInGivenOut(v,P),T=HA(q,v.swapFee),M=B.getSpotPriceIn(v);j.unshift({...h,swapAmount:P,returnAmount:q,returnFinalAmount:q.plus(T),swapFee:T,spotPrice:M})}return j}async getAssets(){let r=await this.poolService.getPools();if(r.length===0)return new Map;let u=r.map(p=>p.tokens.map(({id:j,symbol:_})=>({token:j,symbol:_}))).flat();return new Map(u.map(p=>[p.token,p]))}getPaths(r,u,p,j){return this.routeSuggester.getProposals(r,u,j).filter(B=>this.validPath(B,p)).map(B=>this.toHops(B,p))}async validateTokenPair(r,u,p){let j=await this.getAssets();if(j.get(r)==null)throw new Error(r+" is not supported token");if(j.get(u)==null)throw new Error(u+" is not supported token");let _=this.getPoolMap(p);return{assets:j,poolsMap:_}}async validateToken(r,u){let p=await this.getAssets();if(p.get(r)==null)throw new Error(r+" is not supported token");let j=this.getPoolMap(u);return{assets:p,poolsMap:j}}getPoolMap(r){return new Map(r.map(u=>[u.address,aA.get(u)]))}validPath(r,u){return r.length>0&&r.map(p=>this.validEdge(p,u)).reduce((p,j)=>p&&j)}validEdge([r,u,p],j){return j.get(r)?.validPair(u,p)||!1}toHops(r,u){return r.map(([p,j,_])=>{let h=u.get(p);return{poolId:p,poolType:h?.type,tokenIn:j,tokenOut:_,fee:h?.swapFee}})}toPoolAssets(r,u){return r.map(p=>{let j=u.get(p);return{token:p,symbol:j?.symbol}})}};export{gA as BigNumber,RA as DECIMAL_PLACES,Je as INFINITY,Ve as ONE,wA as PolkadotPoolService,aA as PoolFactory,xA as Router,rA as XykPool,ze as ZERO,R as bnum,HA as calculateTradeFee,WA as normalizeAmount,mA as scale,te as tradeFee};
2
- //# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.esm.js.map