@galacticcouncil/sdk 0.0.1-beta.1 → 0.0.1-beta.10
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/README.md +34 -31
- package/dist/index.esm.js +2 -0
- package/dist/index.esm.js.map +7 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +7 -0
- package/dist/types/api/index.d.ts +1 -0
- package/dist/types/api/router.d.ts +18 -46
- package/dist/types/api/tradeRouter.d.ts +44 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/pool/xyk/{math/bundler.d.ts → xykMath.d.ts} +0 -0
- package/dist/types/pool/xyk/xykPolkadotClient.d.ts +1 -1
- package/dist/types/pool/xyk/xykPool.d.ts +1 -1
- package/dist/types/{suggester → route}/bfs.d.ts +0 -0
- package/dist/types/{suggester → route}/graph.d.ts +0 -0
- package/dist/types/{suggester → route}/index.d.ts +0 -0
- package/dist/types/{suggester → route}/suggester.d.ts +0 -0
- package/dist/types/types.d.ts +34 -8
- package/dist/types/utils/math.d.ts +14 -2
- package/package.json +5 -5
- package/.eslintignore +0 -1
- package/.eslintrc.json +0 -20
- package/.nvmrc +0 -1
- package/.prettierrc.json +0 -12
- package/.vscode/settings.json +0 -15
- package/dist/cjs/hydra_dx_wasm_bg-ZX7K4FM7.wasm +0 -0
- package/dist/cjs/index.js +0 -2
- package/dist/cjs/index.js.map +0 -7
- package/dist/esm/hydra_dx_wasm_bg-ZX7K4FM7.wasm +0 -0
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +0 -7
- package/dist/types/api/trader.d.ts +0 -0
- package/dist/types/pool/xyk/math/nodejs.d.ts +0 -9
- package/esbuild.mjs +0 -36
- package/jest.config.mjs +0 -16
- package/src/api/index.ts +0 -1
- package/src/api/router.ts +0 -359
- package/src/api/trader.ts +0 -0
- package/src/client/capi.ts +0 -0
- package/src/client/index.ts +0 -1
- package/src/client/polkadot.ts +0 -47
- package/src/client/types.ts +0 -8
- package/src/index.ts +0 -4
- package/src/pool/index.ts +0 -3
- package/src/pool/polkadotPoolService.ts +0 -19
- package/src/pool/poolFactory.ts +0 -14
- package/src/pool/xyk/math/bundler.ts +0 -19
- package/src/pool/xyk/math/nodejs.ts +0 -19
- package/src/pool/xyk/xykPolkadotClient.ts +0 -58
- package/src/pool/xyk/xykPool.ts +0 -82
- package/src/suggester/bfs.ts +0 -106
- package/src/suggester/graph.ts +0 -31
- package/src/suggester/index.ts +0 -3
- package/src/suggester/suggester.ts +0 -66
- package/src/types.ts +0 -61
- package/src/utils/bignumber.ts +0 -25
- package/src/utils/math.ts +0 -24
- package/src/utils/queue.ts +0 -26
- package/src/utils/stack.ts +0 -31
- package/src/utils/traversal/bfs.ts +0 -74
- package/test/api/router.spec.ts +0 -87
- package/test/data/xykPool.ts +0 -21
- package/test/data/xykPools.ts +0 -61
- package/test/lib/mockXykPoolService.ts +0 -8
- package/test/pool/xyk/xykPool.spec.ts +0 -26
- package/test/script/examples/router/getAllAssets.ts +0 -14
- package/test/script/examples/router/getAllPaths.ts +0 -14
- package/test/script/examples/router/getAssetPairs.ts +0 -14
- package/test/script/examples/router/getBestBuyPrice.ts +0 -19
- package/test/script/examples/router/getBestSellPrice.ts +0 -19
- package/test/script/executor.ts +0 -45
- package/test/suggester/bfs.spec.ts +0 -34
- package/test/suggester/graph.spec.ts +0 -30
- package/test/suggester/suggester.spec.ts +0 -25
- package/test/utils/traversal/bfs.spec.ts +0 -28
- package/tsconfig.json +0 -14
package/README.md
CHANGED
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
<h1><code>Galactic SDK</code></h1>
|
|
2
|
+
<p>
|
|
3
|
+
|
|
4
|
+
[](https://www.npmjs.com/package/@galacticcouncil/sdk)
|
|
5
|
+

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