@galacticcouncil/sdk 0.6.5 → 0.7.0
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/build/index.cjs +2 -2
- package/build/index.mjs +2 -2
- package/build/types/client/AssetClient.d.ts +5 -2
- package/build/types/pool/PoolService.d.ts +3 -0
- package/build/types/pool/stable/StableMath.d.ts +11 -0
- package/build/types/pool/stable/StableSwap.d.ts +39 -1
- package/build/types/pool/stable/StableSwapClient.d.ts +6 -1
- package/build/types/types.d.ts +5 -3
- package/package.json +2 -1
package/build/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var En=Object.create;var _t=Object.defineProperty;var Rn=Object.getOwnPropertyDescriptor;var Mn=Object.getOwnPropertyNames;var Ln=Object.getPrototypeOf,Dn=Object.prototype.hasOwnProperty;var Ht=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),Gn=(i,e)=>{for(var t in e)_t(i,t,{get:e[t],enumerable:!0})},an=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Mn(e))!Dn.call(i,n)&&n!==t&&_t(i,n,{get:()=>e[n],enumerable:!(r=Rn(e,n))||r.enumerable});return i};var Wt=(i,e,t)=>(t=i!=null?En(Ln(i)):{},an(e||!i||!i.__esModule?_t(t,"default",{value:i,enumerable:!0}):t,i)),Cn=i=>an(_t({},"__esModule",{value:!0}),i);var pn=Ht((Wr,qe)=>{var Un={},A,{TextEncoder:zn,TextDecoder:Xn}=require("util"),Z=0,gt=null;function ht(){return(gt===null||gt.byteLength===0)&&(gt=new Uint8Array(A.memory.buffer)),gt}var bt=new zn("utf-8"),$n=typeof bt.encodeInto=="function"?function(i,e){return bt.encodeInto(i,e)}:function(i,e){let t=bt.encode(i);return e.set(t),{read:i.length,written:t.length}};function oe(i,e,t){if(t===void 0){let u=bt.encode(i),p=e(u.length,1)>>>0;return ht().subarray(p,p+u.length).set(u),Z=u.length,p}let r=i.length,n=e(r,1)>>>0,o=ht(),a=0;for(;a<r;a++){let u=i.charCodeAt(a);if(u>127)break;o[n+a]=u}if(a!==r){a!==0&&(i=i.slice(a)),n=t(n,r,r=a+i.length*3,1)>>>0;let u=ht().subarray(n+a,n+r),p=$n(i,u);a+=p.written}return Z=a,n}var ft=null;function Ie(){return(ft===null||ft.byteLength===0)&&(ft=new Int32Array(A.memory.buffer)),ft}var _n=new Xn("utf-8",{ignoreBOM:!0,fatal:!0});_n.decode();function ot(i,e){return i=i>>>0,_n.decode(ht().subarray(i,i+e))}qe.exports.calculate_pool_trade_fee=function(i,e,t){let r,n;try{let u=A.__wbindgen_add_to_stack_pointer(-16),p=oe(i,A.__wbindgen_malloc,A.__wbindgen_realloc),f=Z;A.calculate_pool_trade_fee(u,p,f,e,t);var o=Ie()[u/4+0],a=Ie()[u/4+1];return r=o,n=a,ot(o,a)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(r,n,1)}};qe.exports.get_spot_price=function(i,e,t,r,n){let o,a;try{let f=A.__wbindgen_add_to_stack_pointer(-16),v=oe(i,A.__wbindgen_malloc,A.__wbindgen_realloc),O=Z,N=oe(e,A.__wbindgen_malloc,A.__wbindgen_realloc),F=Z,k=oe(t,A.__wbindgen_malloc,A.__wbindgen_realloc),L=Z,E=oe(r,A.__wbindgen_malloc,A.__wbindgen_realloc),q=Z,x=oe(n,A.__wbindgen_malloc,A.__wbindgen_realloc),H=Z;A.get_spot_price(f,v,O,N,F,k,L,E,q,x,H);var u=Ie()[f/4+0],p=Ie()[f/4+1];return o=u,a=p,ot(u,p)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(o,a,1)}};qe.exports.calculate_out_given_in=function(i,e,t,r,n){let o,a;try{let f=A.__wbindgen_add_to_stack_pointer(-16),v=oe(i,A.__wbindgen_malloc,A.__wbindgen_realloc),O=Z,N=oe(e,A.__wbindgen_malloc,A.__wbindgen_realloc),F=Z,k=oe(t,A.__wbindgen_malloc,A.__wbindgen_realloc),L=Z,E=oe(r,A.__wbindgen_malloc,A.__wbindgen_realloc),q=Z,x=oe(n,A.__wbindgen_malloc,A.__wbindgen_realloc),H=Z;A.calculate_out_given_in(f,v,O,N,F,k,L,E,q,x,H);var u=Ie()[f/4+0],p=Ie()[f/4+1];return o=u,a=p,ot(u,p)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(o,a,1)}};qe.exports.calculate_in_given_out=function(i,e,t,r,n){let o,a;try{let f=A.__wbindgen_add_to_stack_pointer(-16),v=oe(i,A.__wbindgen_malloc,A.__wbindgen_realloc),O=Z,N=oe(e,A.__wbindgen_malloc,A.__wbindgen_realloc),F=Z,k=oe(t,A.__wbindgen_malloc,A.__wbindgen_realloc),L=Z,E=oe(r,A.__wbindgen_malloc,A.__wbindgen_realloc),q=Z,x=oe(n,A.__wbindgen_malloc,A.__wbindgen_realloc),H=Z;A.calculate_in_given_out(f,v,O,N,F,k,L,E,q,x,H);var u=Ie()[f/4+0],p=Ie()[f/4+1];return o=u,a=p,ot(u,p)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(o,a,1)}};qe.exports.calculate_linear_weights=function(i,e,t,r,n){let o,a;try{let f=A.__wbindgen_add_to_stack_pointer(-16),v=oe(i,A.__wbindgen_malloc,A.__wbindgen_realloc),O=Z,N=oe(e,A.__wbindgen_malloc,A.__wbindgen_realloc),F=Z,k=oe(t,A.__wbindgen_malloc,A.__wbindgen_realloc),L=Z,E=oe(r,A.__wbindgen_malloc,A.__wbindgen_realloc),q=Z,x=oe(n,A.__wbindgen_malloc,A.__wbindgen_realloc),H=Z;A.calculate_linear_weights(f,v,O,N,F,k,L,E,q,x,H);var u=Ie()[f/4+0],p=Ie()[f/4+1];return o=u,a=p,ot(u,p)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(o,a,1)}};var Yn=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),Kn=require("fs").readFileSync(Yn),Vn=new WebAssembly.Module(Kn),Jn=new WebAssembly.Instance(Vn,Un);A=Jn.exports;qe.exports.__wasm=A});var Fn=Ht((Hs,Q)=>{var rr={},l,{TextEncoder:or,TextDecoder:ir}=require("util"),I=0,At=null;function Et(){return(At===null||At.byteLength===0)&&(At=new Uint8Array(l.memory.buffer)),At}var Rt=new or("utf-8"),sr=typeof Rt.encodeInto=="function"?function(i,e){return Rt.encodeInto(i,e)}:function(i,e){let t=Rt.encode(i);return e.set(t),{read:i.length,written:t.length}};function B(i,e,t){if(t===void 0){let u=Rt.encode(i),p=e(u.length)>>>0;return Et().subarray(p,p+u.length).set(u),I=u.length,p}let r=i.length,n=e(r)>>>0,o=Et(),a=0;for(;a<r;a++){let u=i.charCodeAt(a);if(u>127)break;o[n+a]=u}if(a!==r){a!==0&&(i=i.slice(a)),n=t(n,r,r=a+i.length*3)>>>0;let u=Et().subarray(n+a,n+r),p=sr(i,u);a+=p.written}return I=a,n}var kt=null;function X(){return(kt===null||kt.byteLength===0)&&(kt=new Int32Array(l.memory.buffer)),kt}var Nn=new ir("utf-8",{ignoreBOM:!0,fatal:!0});Nn.decode();function ce(i,e){return i=i>>>0,Nn.decode(Et().subarray(i,i+e))}Q.exports.calculate_shares=function(i,e,t,r){let n,o;try{let p=l.__wbindgen_add_to_stack_pointer(-16),f=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),v=I,O=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),N=I,F=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),k=I,L=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),E=I;l.calculate_shares(p,f,v,O,N,F,k,L,E);var a=X()[p/4+0],u=X()[p/4+1];return n=a,o=u,ce(a,u)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(n,o)}};Q.exports.calculate_withdrawal_fee=function(i,e,t){let r,n;try{let u=l.__wbindgen_add_to_stack_pointer(-16),p=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),f=I,v=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),O=I,N=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),F=I;l.calculate_withdrawal_fee(u,p,f,v,O,N,F);var o=X()[u/4+0],a=X()[u/4+1];return r=o,n=a,ce(o,a)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(r,n)}};Q.exports.calculate_liquidity_out=function(i,e,t,r,n,o,a,u){let p,f;try{let N=l.__wbindgen_add_to_stack_pointer(-16),F=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),k=I,L=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),E=I,q=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),x=I,H=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),ee=I,J=B(n,l.__wbindgen_malloc,l.__wbindgen_realloc),$=I,G=B(o,l.__wbindgen_malloc,l.__wbindgen_realloc),s=I,c=B(a,l.__wbindgen_malloc,l.__wbindgen_realloc),_=I,h=B(u,l.__wbindgen_malloc,l.__wbindgen_realloc),m=I;l.calculate_liquidity_out(N,F,k,L,E,q,x,H,ee,J,$,G,s,c,_,h,m);var v=X()[N/4+0],O=X()[N/4+1];return p=v,f=O,ce(v,O)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(p,f)}};Q.exports.calculate_liquidity_lrna_out=function(i,e,t,r,n,o,a,u){let p,f;try{let N=l.__wbindgen_add_to_stack_pointer(-16),F=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),k=I,L=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),E=I,q=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),x=I,H=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),ee=I,J=B(n,l.__wbindgen_malloc,l.__wbindgen_realloc),$=I,G=B(o,l.__wbindgen_malloc,l.__wbindgen_realloc),s=I,c=B(a,l.__wbindgen_malloc,l.__wbindgen_realloc),_=I,h=B(u,l.__wbindgen_malloc,l.__wbindgen_realloc),m=I;l.calculate_liquidity_lrna_out(N,F,k,L,E,q,x,H,ee,J,$,G,s,c,_,h,m);var v=X()[N/4+0],O=X()[N/4+1];return p=v,f=O,ce(v,O)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(p,f)}};Q.exports.recalculate_asset_fee=function(i,e,t,r,n,o,a,u,p){let f,v;try{let F=l.__wbindgen_add_to_stack_pointer(-16),k=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),L=I,E=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),q=I,x=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),H=I,ee=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),J=I,$=B(n,l.__wbindgen_malloc,l.__wbindgen_realloc),G=I,s=B(o,l.__wbindgen_malloc,l.__wbindgen_realloc),c=I,_=B(a,l.__wbindgen_malloc,l.__wbindgen_realloc),h=I,m=B(u,l.__wbindgen_malloc,l.__wbindgen_realloc),b=I,P=B(p,l.__wbindgen_malloc,l.__wbindgen_realloc),d=I;l.recalculate_asset_fee(F,k,L,E,q,x,H,ee,J,$,G,s,c,_,h,m,b,P,d);var O=X()[F/4+0],N=X()[F/4+1];return f=O,v=N,ce(O,N)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(f,v)}};Q.exports.recalculate_protocol_fee=function(i,e,t,r,n,o,a,u,p){let f,v;try{let F=l.__wbindgen_add_to_stack_pointer(-16),k=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),L=I,E=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),q=I,x=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),H=I,ee=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),J=I,$=B(n,l.__wbindgen_malloc,l.__wbindgen_realloc),G=I,s=B(o,l.__wbindgen_malloc,l.__wbindgen_realloc),c=I,_=B(a,l.__wbindgen_malloc,l.__wbindgen_realloc),h=I,m=B(u,l.__wbindgen_malloc,l.__wbindgen_realloc),b=I,P=B(p,l.__wbindgen_malloc,l.__wbindgen_realloc),d=I;l.recalculate_protocol_fee(F,k,L,E,q,x,H,ee,J,$,G,s,c,_,h,m,b,P,d);var O=X()[F/4+0],N=X()[F/4+1];return f=O,v=N,ce(O,N)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(f,v)}};Q.exports.calculate_out_given_in=function(i,e,t,r,n,o,a,u,p){let f,v;try{let F=l.__wbindgen_add_to_stack_pointer(-16),k=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),L=I,E=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),q=I,x=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),H=I,ee=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),J=I,$=B(n,l.__wbindgen_malloc,l.__wbindgen_realloc),G=I,s=B(o,l.__wbindgen_malloc,l.__wbindgen_realloc),c=I,_=B(a,l.__wbindgen_malloc,l.__wbindgen_realloc),h=I,m=B(u,l.__wbindgen_malloc,l.__wbindgen_realloc),b=I,P=B(p,l.__wbindgen_malloc,l.__wbindgen_realloc),d=I;l.calculate_out_given_in(F,k,L,E,q,x,H,ee,J,$,G,s,c,_,h,m,b,P,d);var O=X()[F/4+0],N=X()[F/4+1];return f=O,v=N,ce(O,N)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(f,v)}};Q.exports.calculate_out_given_lrna_in=function(i,e,t,r,n){let o,a;try{let f=l.__wbindgen_add_to_stack_pointer(-16),v=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),O=I,N=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),F=I,k=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),L=I,E=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),q=I,x=B(n,l.__wbindgen_malloc,l.__wbindgen_realloc),H=I;l.calculate_out_given_lrna_in(f,v,O,N,F,k,L,E,q,x,H);var u=X()[f/4+0],p=X()[f/4+1];return o=u,a=p,ce(u,p)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(o,a)}};Q.exports.calculate_in_given_out=function(i,e,t,r,n,o,a,u,p){let f,v;try{let F=l.__wbindgen_add_to_stack_pointer(-16),k=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),L=I,E=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),q=I,x=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),H=I,ee=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),J=I,$=B(n,l.__wbindgen_malloc,l.__wbindgen_realloc),G=I,s=B(o,l.__wbindgen_malloc,l.__wbindgen_realloc),c=I,_=B(a,l.__wbindgen_malloc,l.__wbindgen_realloc),h=I,m=B(u,l.__wbindgen_malloc,l.__wbindgen_realloc),b=I,P=B(p,l.__wbindgen_malloc,l.__wbindgen_realloc),d=I;l.calculate_in_given_out(F,k,L,E,q,x,H,ee,J,$,G,s,c,_,h,m,b,P,d);var O=X()[F/4+0],N=X()[F/4+1];return f=O,v=N,ce(O,N)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(f,v)}};Q.exports.calculate_lrna_in_given_out=function(i,e,t,r,n){let o,a;try{let f=l.__wbindgen_add_to_stack_pointer(-16),v=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),O=I,N=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),F=I,k=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),L=I,E=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),q=I,x=B(n,l.__wbindgen_malloc,l.__wbindgen_realloc),H=I;l.calculate_lrna_in_given_out(f,v,O,N,F,k,L,E,q,x,H);var u=X()[f/4+0],p=X()[f/4+1];return o=u,a=p,ce(u,p)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(o,a)}};Q.exports.calculate_spot_price=function(i,e,t,r){let n,o;try{let p=l.__wbindgen_add_to_stack_pointer(-16),f=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),v=I,O=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),N=I,F=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),k=I,L=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),E=I;l.calculate_spot_price(p,f,v,O,N,F,k,L,E);var a=X()[p/4+0],u=X()[p/4+1];return n=a,o=u,ce(a,u)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(n,o)}};Q.exports.calculate_lrna_spot_price=function(i,e){let t,r;try{let a=l.__wbindgen_add_to_stack_pointer(-16),u=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),p=I,f=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),v=I;l.calculate_lrna_spot_price(a,u,p,f,v);var n=X()[a/4+0],o=X()[a/4+1];return t=n,r=o,ce(n,o)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(t,r)}};Q.exports.calculate_cap_difference=function(i,e,t,r){let n,o;try{let p=l.__wbindgen_add_to_stack_pointer(-16),f=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),v=I,O=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),N=I,F=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),k=I,L=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),E=I;l.calculate_cap_difference(p,f,v,O,N,F,k,L,E);var a=X()[p/4+0],u=X()[p/4+1];return n=a,o=u,ce(a,u)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(n,o)}};Q.exports.verify_asset_cap=function(i,e,t,r){let n=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),o=I,a=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),u=I,p=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),f=I,v=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),O=I;return l.verify_asset_cap(n,o,a,u,p,f,v,O)!==0};Q.exports.calculate_tvl_cap_difference=function(i,e,t,r,n,o){let a,u;try{let v=l.__wbindgen_add_to_stack_pointer(-16),O=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),N=I,F=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),k=I,L=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),E=I,q=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),x=I,H=B(n,l.__wbindgen_malloc,l.__wbindgen_realloc),ee=I,J=B(o,l.__wbindgen_malloc,l.__wbindgen_realloc),$=I;l.calculate_tvl_cap_difference(v,O,N,F,k,L,E,q,x,H,ee,J,$);var p=X()[v/4+0],f=X()[v/4+1];return a=p,u=f,ce(p,f)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(a,u)}};Q.exports.calculate_liquidity_hub_in=function(i,e,t,r){let n,o;try{let p=l.__wbindgen_add_to_stack_pointer(-16),f=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),v=I,O=B(e,l.__wbindgen_malloc,l.__wbindgen_realloc),N=I,F=B(t,l.__wbindgen_malloc,l.__wbindgen_realloc),k=I,L=B(r,l.__wbindgen_malloc,l.__wbindgen_realloc),E=I;l.calculate_liquidity_hub_in(p,f,v,O,N,F,k,L,E);var a=X()[p/4+0],u=X()[p/4+1];return n=a,o=u,ce(a,u)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(n,o)}};Q.exports.is_sell_allowed=function(i){return l.is_sell_allowed(i)!==0};Q.exports.is_buy_allowed=function(i){return l.is_buy_allowed(i)!==0};Q.exports.is_add_liquidity_allowed=function(i){return l.is_add_liquidity_allowed(i)!==0};Q.exports.is_remove_liquidity_allowed=function(i){return l.is_remove_liquidity_allowed(i)!==0};Q.exports.calculate_pool_trade_fee=function(i,e,t){let r,n;try{let u=l.__wbindgen_add_to_stack_pointer(-16),p=B(i,l.__wbindgen_malloc,l.__wbindgen_realloc),f=I;l.calculate_pool_trade_fee(u,p,f,e,t);var o=X()[u/4+0],a=X()[u/4+1];return r=o,n=a,ce(o,a)}finally{l.__wbindgen_add_to_stack_pointer(16),l.__wbindgen_free(r,n)}};var ar=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),lr=require("fs").readFileSync(ar),cr=new WebAssembly.Module(lr),ur=new WebAssembly.Instance(cr,rr);l=ur.exports;Q.exports.__wasm=l});var kn=Ht((oa,Ne)=>{var _r={},T,{TextEncoder:pr,TextDecoder:dr}=require("util"),K=0,Mt=null;function Dt(){return(Mt===null||Mt.buffer!==T.memory.buffer)&&(Mt=new Uint8Array(T.memory.buffer)),Mt}var Gt=new pr("utf-8"),mr=typeof Gt.encodeInto=="function"?function(i,e){return Gt.encodeInto(i,e)}:function(i,e){let t=Gt.encode(i);return e.set(t),{read:i.length,written:t.length}};function V(i,e,t){if(t===void 0){let u=Gt.encode(i),p=e(u.length);return Dt().subarray(p,p+u.length).set(u),K=u.length,p}let r=i.length,n=e(r),o=Dt(),a=0;for(;a<r;a++){let u=i.charCodeAt(a);if(u>127)break;o[n+a]=u}if(a!==r){a!==0&&(i=i.slice(a)),n=t(n,r,r=a+i.length*3);let u=Dt().subarray(n+a,n+r),p=mr(i,u);a+=p.written}return K=a,n}var Lt=null;function ue(){return(Lt===null||Lt.buffer!==T.memory.buffer)&&(Lt=new Int32Array(T.memory.buffer)),Lt}var An=new dr("utf-8",{ignoreBOM:!0,fatal:!0});An.decode();function Ge(i,e){return An.decode(Dt().subarray(i,i+e))}Ne.exports.calculate_pool_trade_fee=function(i,e,t){try{let o=T.__wbindgen_add_to_stack_pointer(-16),a=V(i,T.__wbindgen_malloc,T.__wbindgen_realloc),u=K;T.calculate_pool_trade_fee(o,a,u,e,t);var r=ue()[o/4+0],n=ue()[o/4+1];return Ge(r,n)}finally{T.__wbindgen_add_to_stack_pointer(16),T.__wbindgen_free(r,n)}};Ne.exports.get_spot_price=function(i,e,t){try{let o=T.__wbindgen_add_to_stack_pointer(-16),a=V(i,T.__wbindgen_malloc,T.__wbindgen_realloc),u=K,p=V(e,T.__wbindgen_malloc,T.__wbindgen_realloc),f=K,v=V(t,T.__wbindgen_malloc,T.__wbindgen_realloc),O=K;T.get_spot_price(o,a,u,p,f,v,O);var r=ue()[o/4+0],n=ue()[o/4+1];return Ge(r,n)}finally{T.__wbindgen_add_to_stack_pointer(16),T.__wbindgen_free(r,n)}};Ne.exports.calculate_out_given_in=function(i,e,t){try{let o=T.__wbindgen_add_to_stack_pointer(-16),a=V(i,T.__wbindgen_malloc,T.__wbindgen_realloc),u=K,p=V(e,T.__wbindgen_malloc,T.__wbindgen_realloc),f=K,v=V(t,T.__wbindgen_malloc,T.__wbindgen_realloc),O=K;T.calculate_out_given_in(o,a,u,p,f,v,O);var r=ue()[o/4+0],n=ue()[o/4+1];return Ge(r,n)}finally{T.__wbindgen_add_to_stack_pointer(16),T.__wbindgen_free(r,n)}};Ne.exports.calculate_in_given_out=function(i,e,t){try{let o=T.__wbindgen_add_to_stack_pointer(-16),a=V(i,T.__wbindgen_malloc,T.__wbindgen_realloc),u=K,p=V(e,T.__wbindgen_malloc,T.__wbindgen_realloc),f=K,v=V(t,T.__wbindgen_malloc,T.__wbindgen_realloc),O=K;T.calculate_in_given_out(o,a,u,p,f,v,O);var r=ue()[o/4+0],n=ue()[o/4+1];return Ge(r,n)}finally{T.__wbindgen_add_to_stack_pointer(16),T.__wbindgen_free(r,n)}};Ne.exports.calculate_liquidity_in=function(i,e,t){try{let o=T.__wbindgen_add_to_stack_pointer(-16),a=V(i,T.__wbindgen_malloc,T.__wbindgen_realloc),u=K,p=V(e,T.__wbindgen_malloc,T.__wbindgen_realloc),f=K,v=V(t,T.__wbindgen_malloc,T.__wbindgen_realloc),O=K;T.calculate_liquidity_in(o,a,u,p,f,v,O);var r=ue()[o/4+0],n=ue()[o/4+1];return Ge(r,n)}finally{T.__wbindgen_add_to_stack_pointer(16),T.__wbindgen_free(r,n)}};Ne.exports.calculate_shares=function(i,e,t){try{let o=T.__wbindgen_add_to_stack_pointer(-16),a=V(i,T.__wbindgen_malloc,T.__wbindgen_realloc),u=K,p=V(e,T.__wbindgen_malloc,T.__wbindgen_realloc),f=K,v=V(t,T.__wbindgen_malloc,T.__wbindgen_realloc),O=K;T.calculate_shares(o,a,u,p,f,v,O);var r=ue()[o/4+0],n=ue()[o/4+1];return Ge(r,n)}finally{T.__wbindgen_add_to_stack_pointer(16),T.__wbindgen_free(r,n)}};Ne.exports.calculate_liquidity_out_asset_a=function(i,e,t,r){try{let a=T.__wbindgen_add_to_stack_pointer(-16),u=V(i,T.__wbindgen_malloc,T.__wbindgen_realloc),p=K,f=V(e,T.__wbindgen_malloc,T.__wbindgen_realloc),v=K,O=V(t,T.__wbindgen_malloc,T.__wbindgen_realloc),N=K,F=V(r,T.__wbindgen_malloc,T.__wbindgen_realloc),k=K;T.calculate_liquidity_out_asset_a(a,u,p,f,v,O,N,F,k);var n=ue()[a/4+0],o=ue()[a/4+1];return Ge(n,o)}finally{T.__wbindgen_add_to_stack_pointer(16),T.__wbindgen_free(n,o)}};Ne.exports.calculate_liquidity_out_asset_b=function(i,e,t,r){try{let a=T.__wbindgen_add_to_stack_pointer(-16),u=V(i,T.__wbindgen_malloc,T.__wbindgen_realloc),p=K,f=V(e,T.__wbindgen_malloc,T.__wbindgen_realloc),v=K,O=V(t,T.__wbindgen_malloc,T.__wbindgen_realloc),N=K,F=V(r,T.__wbindgen_malloc,T.__wbindgen_realloc),k=K;T.calculate_liquidity_out_asset_b(a,u,p,f,v,O,N,F,k);var n=ue()[a/4+0],o=ue()[a/4+1];return Ge(n,o)}finally{T.__wbindgen_add_to_stack_pointer(16),T.__wbindgen_free(n,o)}};var gr=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),fr=require("fs").readFileSync(gr),hr=new WebAssembly.Module(fr),br=new WebAssembly.Instance(hr,_r);T=br.exports;Ne.exports.__wasm=T});var Pr={};Gn(Pr,{AssetClient:()=>Xe,AssetNotFound:()=>Jt,BASILISK_PARACHAIN_ID:()=>$r,BalanceClient:()=>$e,BigNumber:()=>ve,CachingPoolService:()=>Ft,DECIMAL_PLACES:()=>un,DENOMINATOR:()=>Kt,HYDRADX_PARACHAIN_ID:()=>Xr,HYDRADX_SS58_PREFIX:()=>dn,INFINITY:()=>Wn,LbpMath:()=>we,LbpPool:()=>Le,ONE:()=>Oe,OmniMath:()=>ge,OmniPool:()=>De,PoolConfigNotFound:()=>Vt,PoolError:()=>rt,PoolFactory:()=>Ze,PoolNotFound:()=>st,PoolService:()=>Ke,PoolType:()=>Se,ProviderConfigNotFound:()=>Qt,RUNTIME_DECIMALS:()=>it,RouteNotFound:()=>Ye,Router:()=>We,SYSTEM_ASSET_DECIMALS:()=>zr,SYSTEM_ASSET_ID:()=>ze,StorageConfigNotFound:()=>jt,SubscriptionNotSupported:()=>Zt,TradeRouter:()=>ct,TradeType:()=>Yt,XykMath:()=>Fe,XykPool:()=>Ce,ZERO:()=>re,bnum:()=>D,calculateBuyFee:()=>sn,calculateDiffToAvg:()=>wr,calculateDiffToRef:()=>Qe,calculateSellFee:()=>on,scale:()=>de});module.exports=Cn(Pr);var pt=class{constructor(e=1/0){this.capacity=e}storage=[];enqueue(e){if(this.size()===this.capacity)throw Error("Queue has reached max capacity, you cannot add more items");this.storage.push(e)}dequeue(){return this.storage.shift()}size(){return this.storage.length}};var qn=4,tt=class{isNotVisited(e,t){let r=!0;return t.forEach(n=>{(n[0]===e[0]||n[1]===e[1])&&(r=!1)}),r}findPaths(e,t,r){let n=[],o=new pt,a=[];for(a.push([t,""]),o.enqueue(a);o.size()>0;){let u=o.dequeue();if(u==null||u.length>qn)return n;let p=u[u.length-1];(r===null||p[0]===r)&&n.push(u),e[p[0]].forEach(v=>{if(this.isNotVisited(v,u)){let O=[...u];O.push(v),o.enqueue(O)}})}return n}buildAndPopulateGraph(e,t){let r=e[e.length-1],n=[];for(let o=0;o<=parseInt(r);o++)n.push([]);for(let[o,a,u]of t){let p=parseInt(a),f=parseInt(u);n[p].push([f,o])}return n}};function Ut(i){let e={};for(let t of i){let r=t.tokens.length;for(let n=0;n<r;n++){e[t.tokens[n].id]||(e[t.tokens[n].id]=[]);for(let o=0;o<r;o++){if(n==o)continue;let a=[t.address,t.tokens[n].id,t.tokens[o].id];e[t.tokens[n].id].push(a)}}}return e}var nt=class{getProposals(e,t,r){let n=Ut(r),o=Object.keys(n),a=o.map(v=>n[v]).flat(),u=new tt,p=u.buildAndPopulateGraph(o,a),f=u.findPaths(p,parseInt(e),t?parseInt(t):null);return this.parsePaths(f)}parsePaths(e){let t=[];for(let r of e){let n=[];for(let o=0;o<r.length;o++){let a=r[o],u=r[o+1];if(u==null)break;n.push(this.toEdge(a,u))}t.push(n)}return t}toEdge(e,t){return[t[1],e[0].toString(),t[0].toString()]}};var Hn=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,zt=Math.ceil,xe=Math.floor,me="[BigNumber Error] ",ln=me+"Number primitive has more than 15 significant digits: ",Pe=1e14,C=14,Xt=9007199254740991,$t=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Re=1e7,se=1e9;function cn(i){var e,t,r,n=x.prototype={constructor:x,toString:null,valueOf:null},o=new x(1),a=20,u=4,p=-7,f=21,v=-1e7,O=1e7,N=!1,F=1,k=0,L={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},E="0123456789abcdefghijklmnopqrstuvwxyz",q=!0;function x(s,c){var _,h,m,b,P,d,g,y,w=this;if(!(w instanceof x))return new x(s,c);if(c==null){if(s&&s._isBigNumber===!0){w.s=s.s,!s.c||s.e>O?w.c=w.e=null:s.e<v?w.c=[w.e=0]:(w.e=s.e,w.c=s.c.slice());return}if((d=typeof s=="number")&&s*0==0){if(w.s=1/s<0?(s=-s,-1):1,s===~~s){for(b=0,P=s;P>=10;P/=10,b++);b>O?w.c=w.e=null:(w.e=b,w.c=[s]);return}y=String(s)}else{if(!Hn.test(y=String(s)))return r(w,y,d);w.s=y.charCodeAt(0)==45?(y=y.slice(1),-1):1}(b=y.indexOf("."))>-1&&(y=y.replace(".","")),(P=y.search(/e/i))>0?(b<0&&(b=P),b+=+y.slice(P+1),y=y.substring(0,P)):b<0&&(b=y.length)}else{if(j(c,2,E.length,"Base"),c==10&&q)return w=new x(s),$(w,a+w.e+1,u);if(y=String(s),d=typeof s=="number"){if(s*0!=0)return r(w,y,d,c);if(w.s=1/s<0?(y=y.slice(1),-1):1,x.DEBUG&&y.replace(/^0\.0*|\./,"").length>15)throw Error(ln+s)}else w.s=y.charCodeAt(0)===45?(y=y.slice(1),-1):1;for(_=E.slice(0,c),b=P=0,g=y.length;P<g;P++)if(_.indexOf(h=y.charAt(P))<0){if(h=="."){if(P>b){b=g;continue}}else if(!m&&(y==y.toUpperCase()&&(y=y.toLowerCase())||y==y.toLowerCase()&&(y=y.toUpperCase()))){m=!0,P=-1,b=0;continue}return r(w,String(s),d,c)}d=!1,y=t(y,c,10,w.s),(b=y.indexOf("."))>-1?y=y.replace(".",""):b=y.length}for(P=0;y.charCodeAt(P)===48;P++);for(g=y.length;y.charCodeAt(--g)===48;);if(y=y.slice(P,++g)){if(g-=P,d&&x.DEBUG&&g>15&&(s>Xt||s!==xe(s)))throw Error(ln+w.s*s);if((b=b-P-1)>O)w.c=w.e=null;else if(b<v)w.c=[w.e=0];else{if(w.e=b,w.c=[],P=(b+1)%C,b<0&&(P+=C),P<g){for(P&&w.c.push(+y.slice(0,P)),g-=C;P<g;)w.c.push(+y.slice(P,P+=C));P=C-(y=y.slice(P)).length}else P-=g;for(;P--;y+="0");w.c.push(+y)}}else w.c=[w.e=0]}x.clone=cn,x.ROUND_UP=0,x.ROUND_DOWN=1,x.ROUND_CEIL=2,x.ROUND_FLOOR=3,x.ROUND_HALF_UP=4,x.ROUND_HALF_DOWN=5,x.ROUND_HALF_EVEN=6,x.ROUND_HALF_CEIL=7,x.ROUND_HALF_FLOOR=8,x.EUCLID=9,x.config=x.set=function(s){var c,_;if(s!=null)if(typeof s=="object"){if(s.hasOwnProperty(c="DECIMAL_PLACES")&&(_=s[c],j(_,0,se,c),a=_),s.hasOwnProperty(c="ROUNDING_MODE")&&(_=s[c],j(_,0,8,c),u=_),s.hasOwnProperty(c="EXPONENTIAL_AT")&&(_=s[c],_&&_.pop?(j(_[0],-se,0,c),j(_[1],0,se,c),p=_[0],f=_[1]):(j(_,-se,se,c),p=-(f=_<0?-_:_))),s.hasOwnProperty(c="RANGE"))if(_=s[c],_&&_.pop)j(_[0],-se,-1,c),j(_[1],1,se,c),v=_[0],O=_[1];else if(j(_,-se,se,c),_)v=-(O=_<0?-_:_);else throw Error(me+c+" cannot be zero: "+_);if(s.hasOwnProperty(c="CRYPTO"))if(_=s[c],_===!!_)if(_)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))N=_;else throw N=!_,Error(me+"crypto unavailable");else N=_;else throw Error(me+c+" not true or false: "+_);if(s.hasOwnProperty(c="MODULO_MODE")&&(_=s[c],j(_,0,9,c),F=_),s.hasOwnProperty(c="POW_PRECISION")&&(_=s[c],j(_,0,se,c),k=_),s.hasOwnProperty(c="FORMAT"))if(_=s[c],typeof _=="object")L=_;else throw Error(me+c+" not an object: "+_);if(s.hasOwnProperty(c="ALPHABET"))if(_=s[c],typeof _=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(_))q=_.slice(0,10)=="0123456789",E=_;else throw Error(me+c+" invalid: "+_)}else throw Error(me+"Object expected: "+s);return{DECIMAL_PLACES:a,ROUNDING_MODE:u,EXPONENTIAL_AT:[p,f],RANGE:[v,O],CRYPTO:N,MODULO_MODE:F,POW_PRECISION:k,FORMAT:L,ALPHABET:E}},x.isBigNumber=function(s){if(!s||s._isBigNumber!==!0)return!1;if(!x.DEBUG)return!0;var c,_,h=s.c,m=s.e,b=s.s;e:if({}.toString.call(h)=="[object Array]"){if((b===1||b===-1)&&m>=-se&&m<=se&&m===xe(m)){if(h[0]===0){if(m===0&&h.length===1)return!0;break e}if(c=(m+1)%C,c<1&&(c+=C),String(h[0]).length==c){for(c=0;c<h.length;c++)if(_=h[c],_<0||_>=Pe||_!==xe(_))break e;if(_!==0)return!0}}}else if(h===null&&m===null&&(b===null||b===1||b===-1))return!0;throw Error(me+"Invalid BigNumber: "+s)},x.maximum=x.max=function(){return ee(arguments,n.lt)},x.minimum=x.min=function(){return ee(arguments,n.gt)},x.random=function(){var s=9007199254740992,c=Math.random()*s&2097151?function(){return xe(Math.random()*s)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(_){var h,m,b,P,d,g=0,y=[],w=new x(o);if(_==null?_=a:j(_,0,se),P=zt(_/C),N)if(crypto.getRandomValues){for(h=crypto.getRandomValues(new Uint32Array(P*=2));g<P;)d=h[g]*131072+(h[g+1]>>>11),d>=9e15?(m=crypto.getRandomValues(new Uint32Array(2)),h[g]=m[0],h[g+1]=m[1]):(y.push(d%1e14),g+=2);g=P/2}else if(crypto.randomBytes){for(h=crypto.randomBytes(P*=7);g<P;)d=(h[g]&31)*281474976710656+h[g+1]*1099511627776+h[g+2]*4294967296+h[g+3]*16777216+(h[g+4]<<16)+(h[g+5]<<8)+h[g+6],d>=9e15?crypto.randomBytes(7).copy(h,g):(y.push(d%1e14),g+=7);g=P/7}else throw N=!1,Error(me+"crypto unavailable");if(!N)for(;g<P;)d=c(),d<9e15&&(y[g++]=d%1e14);for(P=y[--g],_%=C,P&&_&&(d=$t[C-_],y[g]=xe(P/d)*d);y[g]===0;y.pop(),g--);if(g<0)y=[b=0];else{for(b=-1;y[0]===0;y.splice(0,1),b-=C);for(g=1,d=y[0];d>=10;d/=10,g++);g<C&&(b-=C-g)}return w.e=b,w.c=y,w}}(),x.sum=function(){for(var s=1,c=arguments,_=new x(c[0]);s<c.length;)_=_.plus(c[s++]);return _},t=function(){var s="0123456789";function c(_,h,m,b){for(var P,d=[0],g,y=0,w=_.length;y<w;){for(g=d.length;g--;d[g]*=h);for(d[0]+=b.indexOf(_.charAt(y++)),P=0;P<d.length;P++)d[P]>m-1&&(d[P+1]==null&&(d[P+1]=0),d[P+1]+=d[P]/m|0,d[P]%=m)}return d.reverse()}return function(_,h,m,b,P){var d,g,y,w,S,R,M,z,te=_.indexOf("."),ie=a,U=u;for(te>=0&&(w=k,k=0,_=_.replace(".",""),z=new x(h),R=z.pow(_.length-te),k=w,z.c=c(Ae(he(R.c),R.e,"0"),10,m,s),z.e=z.c.length),M=c(_,h,m,P?(d=E,s):(d=s,E)),y=w=M.length;M[--w]==0;M.pop());if(!M[0])return d.charAt(0);if(te<0?--y:(R.c=M,R.e=y,R.s=b,R=e(R,z,ie,U,m),M=R.c,S=R.r,y=R.e),g=y+ie+1,te=M[g],w=m/2,S=S||g<0||M[g+1]!=null,S=U<4?(te!=null||S)&&(U==0||U==(R.s<0?3:2)):te>w||te==w&&(U==4||S||U==6&&M[g-1]&1||U==(R.s<0?8:7)),g<1||!M[0])_=S?Ae(d.charAt(1),-ie,d.charAt(0)):d.charAt(0);else{if(M.length=g,S)for(--m;++M[--g]>m;)M[g]=0,g||(++y,M=[1].concat(M));for(w=M.length;!M[--w];);for(te=0,_="";te<=w;_+=d.charAt(M[te++]));_=Ae(_,y,d.charAt(0))}return _}}(),e=function(){function s(h,m,b){var P,d,g,y,w=0,S=h.length,R=m%Re,M=m/Re|0;for(h=h.slice();S--;)g=h[S]%Re,y=h[S]/Re|0,P=M*g+y*R,d=R*g+P%Re*Re+w,w=(d/b|0)+(P/Re|0)+M*y,h[S]=d%b;return w&&(h=[w].concat(h)),h}function c(h,m,b,P){var d,g;if(b!=P)g=b>P?1:-1;else for(d=g=0;d<b;d++)if(h[d]!=m[d]){g=h[d]>m[d]?1:-1;break}return g}function _(h,m,b,P){for(var d=0;b--;)h[b]-=d,d=h[b]<m[b]?1:0,h[b]=d*P+h[b]-m[b];for(;!h[0]&&h.length>1;h.splice(0,1));}return function(h,m,b,P,d){var g,y,w,S,R,M,z,te,ie,U,Y,le,ut,Ct,qt,ye,et,fe=h.s==m.s?1:-1,pe=h.c,ne=m.c;if(!pe||!pe[0]||!ne||!ne[0])return new x(!h.s||!m.s||(pe?ne&&pe[0]==ne[0]:!ne)?NaN:pe&&pe[0]==0||!ne?fe*0:fe/0);for(te=new x(fe),ie=te.c=[],y=h.e-m.e,fe=b+y+1,d||(d=Pe,y=be(h.e/C)-be(m.e/C),fe=fe/C|0),w=0;ne[w]==(pe[w]||0);w++);if(ne[w]>(pe[w]||0)&&y--,fe<0)ie.push(1),S=!0;else{for(Ct=pe.length,ye=ne.length,w=0,fe+=2,R=xe(d/(ne[0]+1)),R>1&&(ne=s(ne,R,d),pe=s(pe,R,d),ye=ne.length,Ct=pe.length),ut=ye,U=pe.slice(0,ye),Y=U.length;Y<ye;U[Y++]=0);et=ne.slice(),et=[0].concat(et),qt=ne[0],ne[1]>=d/2&&qt++;do{if(R=0,g=c(ne,U,ye,Y),g<0){if(le=U[0],ye!=Y&&(le=le*d+(U[1]||0)),R=xe(le/qt),R>1)for(R>=d&&(R=d-1),M=s(ne,R,d),z=M.length,Y=U.length;c(M,U,z,Y)==1;)R--,_(M,ye<z?et:ne,z,d),z=M.length,g=1;else R==0&&(g=R=1),M=ne.slice(),z=M.length;if(z<Y&&(M=[0].concat(M)),_(U,M,Y,d),Y=U.length,g==-1)for(;c(ne,U,ye,Y)<1;)R++,_(U,ye<Y?et:ne,Y,d),Y=U.length}else g===0&&(R++,U=[0]);ie[w++]=R,U[0]?U[Y++]=pe[ut]||0:(U=[pe[ut]],Y=1)}while((ut++<Ct||U[0]!=null)&&fe--);S=U[0]!=null,ie[0]||ie.splice(0,1)}if(d==Pe){for(w=1,fe=ie[0];fe>=10;fe/=10,w++);$(te,b+(te.e=w+y*C-1)+1,P,S)}else te.e=y,te.r=+S;return te}}();function H(s,c,_,h){var m,b,P,d,g;if(_==null?_=u:j(_,0,8),!s.c)return s.toString();if(m=s.c[0],P=s.e,c==null)g=he(s.c),g=h==1||h==2&&(P<=p||P>=f)?mt(g,P):Ae(g,P,"0");else if(s=$(new x(s),c,_),b=s.e,g=he(s.c),d=g.length,h==1||h==2&&(c<=b||b<=p)){for(;d<c;g+="0",d++);g=mt(g,b)}else if(c-=P,g=Ae(g,b,"0"),b+1>d){if(--c>0)for(g+=".";c--;g+="0");}else if(c+=b-d,c>0)for(b+1==d&&(g+=".");c--;g+="0");return s.s<0&&m?"-"+g:g}function ee(s,c){for(var _,h=1,m=new x(s[0]);h<s.length;h++)if(_=new x(s[h]),_.s)c.call(m,_)&&(m=_);else{m=_;break}return m}function J(s,c,_){for(var h=1,m=c.length;!c[--m];c.pop());for(m=c[0];m>=10;m/=10,h++);return(_=h+_*C-1)>O?s.c=s.e=null:_<v?s.c=[s.e=0]:(s.e=_,s.c=c),s}r=function(){var s=/^(-?)0([xbo])(?=\w[\w.]*$)/i,c=/^([^.]+)\.$/,_=/^\.([^.]+)$/,h=/^-?(Infinity|NaN)$/,m=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(b,P,d,g){var y,w=d?P:P.replace(m,"");if(h.test(w))b.s=isNaN(w)?null:w<0?-1:1;else{if(!d&&(w=w.replace(s,function(S,R,M){return y=(M=M.toLowerCase())=="x"?16:M=="b"?2:8,!g||g==y?R:S}),g&&(y=g,w=w.replace(c,"$1").replace(_,"0.$1")),P!=w))return new x(w,y);if(x.DEBUG)throw Error(me+"Not a"+(g?" base "+g:"")+" number: "+P);b.s=null}b.c=b.e=null}}();function $(s,c,_,h){var m,b,P,d,g,y,w,S=s.c,R=$t;if(S){e:{for(m=1,d=S[0];d>=10;d/=10,m++);if(b=c-m,b<0)b+=C,P=c,g=S[y=0],w=g/R[m-P-1]%10|0;else if(y=zt((b+1)/C),y>=S.length)if(h){for(;S.length<=y;S.push(0));g=w=0,m=1,b%=C,P=b-C+1}else break e;else{for(g=d=S[y],m=1;d>=10;d/=10,m++);b%=C,P=b-C+m,w=P<0?0:g/R[m-P-1]%10|0}if(h=h||c<0||S[y+1]!=null||(P<0?g:g%R[m-P-1]),h=_<4?(w||h)&&(_==0||_==(s.s<0?3:2)):w>5||w==5&&(_==4||h||_==6&&(b>0?P>0?g/R[m-P]:0:S[y-1])%10&1||_==(s.s<0?8:7)),c<1||!S[0])return S.length=0,h?(c-=s.e+1,S[0]=R[(C-c%C)%C],s.e=-c||0):S[0]=s.e=0,s;if(b==0?(S.length=y,d=1,y--):(S.length=y+1,d=R[C-b],S[y]=P>0?xe(g/R[m-P]%R[P])*d:0),h)for(;;)if(y==0){for(b=1,P=S[0];P>=10;P/=10,b++);for(P=S[0]+=d,d=1;P>=10;P/=10,d++);b!=d&&(s.e++,S[0]==Pe&&(S[0]=1));break}else{if(S[y]+=d,S[y]!=Pe)break;S[y--]=0,d=1}for(b=S.length;S[--b]===0;S.pop());}s.e>O?s.c=s.e=null:s.e<v&&(s.c=[s.e=0])}return s}function G(s){var c,_=s.e;return _===null?s.toString():(c=he(s.c),c=_<=p||_>=f?mt(c,_):Ae(c,_,"0"),s.s<0?"-"+c:c)}return n.absoluteValue=n.abs=function(){var s=new x(this);return s.s<0&&(s.s=1),s},n.comparedTo=function(s,c){return Ue(this,new x(s,c))},n.decimalPlaces=n.dp=function(s,c){var _,h,m,b=this;if(s!=null)return j(s,0,se),c==null?c=u:j(c,0,8),$(new x(b),s+b.e+1,c);if(!(_=b.c))return null;if(h=((m=_.length-1)-be(this.e/C))*C,m=_[m])for(;m%10==0;m/=10,h--);return h<0&&(h=0),h},n.dividedBy=n.div=function(s,c){return e(this,new x(s,c),a,u)},n.dividedToIntegerBy=n.idiv=function(s,c){return e(this,new x(s,c),0,1)},n.exponentiatedBy=n.pow=function(s,c){var _,h,m,b,P,d,g,y,w,S=this;if(s=new x(s),s.c&&!s.isInteger())throw Error(me+"Exponent not an integer: "+G(s));if(c!=null&&(c=new x(c)),d=s.e>14,!S.c||!S.c[0]||S.c[0]==1&&!S.e&&S.c.length==1||!s.c||!s.c[0])return w=new x(Math.pow(+G(S),d?s.s*(2-dt(s)):+G(s))),c?w.mod(c):w;if(g=s.s<0,c){if(c.c?!c.c[0]:!c.s)return new x(NaN);h=!g&&S.isInteger()&&c.isInteger(),h&&(S=S.mod(c))}else{if(s.e>9&&(S.e>0||S.e<-1||(S.e==0?S.c[0]>1||d&&S.c[1]>=24e7:S.c[0]<8e13||d&&S.c[0]<=9999975e7)))return b=S.s<0&&dt(s)?-0:0,S.e>-1&&(b=1/b),new x(g?1/b:b);k&&(b=zt(k/C+2))}for(d?(_=new x(.5),g&&(s.s=1),y=dt(s)):(m=Math.abs(+G(s)),y=m%2),w=new x(o);;){if(y){if(w=w.times(S),!w.c)break;b?w.c.length>b&&(w.c.length=b):h&&(w=w.mod(c))}if(m){if(m=xe(m/2),m===0)break;y=m%2}else if(s=s.times(_),$(s,s.e+1,1),s.e>14)y=dt(s);else{if(m=+G(s),m===0)break;y=m%2}S=S.times(S),b?S.c&&S.c.length>b&&(S.c.length=b):h&&(S=S.mod(c))}return h?w:(g&&(w=o.div(w)),c?w.mod(c):b?$(w,k,u,P):w)},n.integerValue=function(s){var c=new x(this);return s==null?s=u:j(s,0,8),$(c,c.e+1,s)},n.isEqualTo=n.eq=function(s,c){return Ue(this,new x(s,c))===0},n.isFinite=function(){return!!this.c},n.isGreaterThan=n.gt=function(s,c){return Ue(this,new x(s,c))>0},n.isGreaterThanOrEqualTo=n.gte=function(s,c){return(c=Ue(this,new x(s,c)))===1||c===0},n.isInteger=function(){return!!this.c&&be(this.e/C)>this.c.length-2},n.isLessThan=n.lt=function(s,c){return Ue(this,new x(s,c))<0},n.isLessThanOrEqualTo=n.lte=function(s,c){return(c=Ue(this,new x(s,c)))===-1||c===0},n.isNaN=function(){return!this.s},n.isNegative=function(){return this.s<0},n.isPositive=function(){return this.s>0},n.isZero=function(){return!!this.c&&this.c[0]==0},n.minus=function(s,c){var _,h,m,b,P=this,d=P.s;if(s=new x(s,c),c=s.s,!d||!c)return new x(NaN);if(d!=c)return s.s=-c,P.plus(s);var g=P.e/C,y=s.e/C,w=P.c,S=s.c;if(!g||!y){if(!w||!S)return w?(s.s=-c,s):new x(S?P:NaN);if(!w[0]||!S[0])return S[0]?(s.s=-c,s):new x(w[0]?P:u==3?-0:0)}if(g=be(g),y=be(y),w=w.slice(),d=g-y){for((b=d<0)?(d=-d,m=w):(y=g,m=S),m.reverse(),c=d;c--;m.push(0));m.reverse()}else for(h=(b=(d=w.length)<(c=S.length))?d:c,d=c=0;c<h;c++)if(w[c]!=S[c]){b=w[c]<S[c];break}if(b&&(m=w,w=S,S=m,s.s=-s.s),c=(h=S.length)-(_=w.length),c>0)for(;c--;w[_++]=0);for(c=Pe-1;h>d;){if(w[--h]<S[h]){for(_=h;_&&!w[--_];w[_]=c);--w[_],w[h]+=Pe}w[h]-=S[h]}for(;w[0]==0;w.splice(0,1),--y);return w[0]?J(s,w,y):(s.s=u==3?-1:1,s.c=[s.e=0],s)},n.modulo=n.mod=function(s,c){var _,h,m=this;return s=new x(s,c),!m.c||!s.s||s.c&&!s.c[0]?new x(NaN):!s.c||m.c&&!m.c[0]?new x(m):(F==9?(h=s.s,s.s=1,_=e(m,s,0,3),s.s=h,_.s*=h):_=e(m,s,0,F),s=m.minus(_.times(s)),!s.c[0]&&F==1&&(s.s=m.s),s)},n.multipliedBy=n.times=function(s,c){var _,h,m,b,P,d,g,y,w,S,R,M,z,te,ie,U=this,Y=U.c,le=(s=new x(s,c)).c;if(!Y||!le||!Y[0]||!le[0])return!U.s||!s.s||Y&&!Y[0]&&!le||le&&!le[0]&&!Y?s.c=s.e=s.s=null:(s.s*=U.s,!Y||!le?s.c=s.e=null:(s.c=[0],s.e=0)),s;for(h=be(U.e/C)+be(s.e/C),s.s*=U.s,g=Y.length,S=le.length,g<S&&(z=Y,Y=le,le=z,m=g,g=S,S=m),m=g+S,z=[];m--;z.push(0));for(te=Pe,ie=Re,m=S;--m>=0;){for(_=0,R=le[m]%ie,M=le[m]/ie|0,P=g,b=m+P;b>m;)y=Y[--P]%ie,w=Y[P]/ie|0,d=M*y+w*R,y=R*y+d%ie*ie+z[b]+_,_=(y/te|0)+(d/ie|0)+M*w,z[b--]=y%te;z[b]=_}return _?++h:z.splice(0,1),J(s,z,h)},n.negated=function(){var s=new x(this);return s.s=-s.s||null,s},n.plus=function(s,c){var _,h=this,m=h.s;if(s=new x(s,c),c=s.s,!m||!c)return new x(NaN);if(m!=c)return s.s=-c,h.minus(s);var b=h.e/C,P=s.e/C,d=h.c,g=s.c;if(!b||!P){if(!d||!g)return new x(m/0);if(!d[0]||!g[0])return g[0]?s:new x(d[0]?h:m*0)}if(b=be(b),P=be(P),d=d.slice(),m=b-P){for(m>0?(P=b,_=g):(m=-m,_=d),_.reverse();m--;_.push(0));_.reverse()}for(m=d.length,c=g.length,m-c<0&&(_=g,g=d,d=_,c=m),m=0;c;)m=(d[--c]=d[c]+g[c]+m)/Pe|0,d[c]=Pe===d[c]?0:d[c]%Pe;return m&&(d=[m].concat(d),++P),J(s,d,P)},n.precision=n.sd=function(s,c){var _,h,m,b=this;if(s!=null&&s!==!!s)return j(s,1,se),c==null?c=u:j(c,0,8),$(new x(b),s,c);if(!(_=b.c))return null;if(m=_.length-1,h=m*C+1,m=_[m]){for(;m%10==0;m/=10,h--);for(m=_[0];m>=10;m/=10,h++);}return s&&b.e+1>h&&(h=b.e+1),h},n.shiftedBy=function(s){return j(s,-Xt,Xt),this.times("1e"+s)},n.squareRoot=n.sqrt=function(){var s,c,_,h,m,b=this,P=b.c,d=b.s,g=b.e,y=a+4,w=new x("0.5");if(d!==1||!P||!P[0])return new x(!d||d<0&&(!P||P[0])?NaN:P?b:1/0);if(d=Math.sqrt(+G(b)),d==0||d==1/0?(c=he(P),(c.length+g)%2==0&&(c+="0"),d=Math.sqrt(+c),g=be((g+1)/2)-(g<0||g%2),d==1/0?c="5e"+g:(c=d.toExponential(),c=c.slice(0,c.indexOf("e")+1)+g),_=new x(c)):_=new x(d+""),_.c[0]){for(g=_.e,d=g+y,d<3&&(d=0);;)if(m=_,_=w.times(m.plus(e(b,m,y,1))),he(m.c).slice(0,d)===(c=he(_.c)).slice(0,d))if(_.e<g&&--d,c=c.slice(d-3,d+1),c=="9999"||!h&&c=="4999"){if(!h&&($(m,m.e+a+2,0),m.times(m).eq(b))){_=m;break}y+=4,d+=4,h=1}else{(!+c||!+c.slice(1)&&c.charAt(0)=="5")&&($(_,_.e+a+2,1),s=!_.times(_).eq(b));break}}return $(_,_.e+a+1,u,s)},n.toExponential=function(s,c){return s!=null&&(j(s,0,se),s++),H(this,s,c,1)},n.toFixed=function(s,c){return s!=null&&(j(s,0,se),s=s+this.e+1),H(this,s,c)},n.toFormat=function(s,c,_){var h,m=this;if(_==null)s!=null&&c&&typeof c=="object"?(_=c,c=null):s&&typeof s=="object"?(_=s,s=c=null):_=L;else if(typeof _!="object")throw Error(me+"Argument not an object: "+_);if(h=m.toFixed(s,c),m.c){var b,P=h.split("."),d=+_.groupSize,g=+_.secondaryGroupSize,y=_.groupSeparator||"",w=P[0],S=P[1],R=m.s<0,M=R?w.slice(1):w,z=M.length;if(g&&(b=d,d=g,g=b,z-=b),d>0&&z>0){for(b=z%d||d,w=M.substr(0,b);b<z;b+=d)w+=y+M.substr(b,d);g>0&&(w+=y+M.slice(b)),R&&(w="-"+w)}h=S?w+(_.decimalSeparator||"")+((g=+_.fractionGroupSize)?S.replace(new RegExp("\\d{"+g+"}\\B","g"),"$&"+(_.fractionGroupSeparator||"")):S):w}return(_.prefix||"")+h+(_.suffix||"")},n.toFraction=function(s){var c,_,h,m,b,P,d,g,y,w,S,R,M=this,z=M.c;if(s!=null&&(d=new x(s),!d.isInteger()&&(d.c||d.s!==1)||d.lt(o)))throw Error(me+"Argument "+(d.isInteger()?"out of range: ":"not an integer: ")+G(d));if(!z)return new x(M);for(c=new x(o),y=_=new x(o),h=g=new x(o),R=he(z),b=c.e=R.length-M.e-1,c.c[0]=$t[(P=b%C)<0?C+P:P],s=!s||d.comparedTo(c)>0?b>0?c:y:d,P=O,O=1/0,d=new x(R),g.c[0]=0;w=e(d,c,0,1),m=_.plus(w.times(h)),m.comparedTo(s)!=1;)_=h,h=m,y=g.plus(w.times(m=y)),g=m,c=d.minus(w.times(m=c)),d=m;return m=e(s.minus(_),h,0,1),g=g.plus(m.times(y)),_=_.plus(m.times(h)),g.s=y.s=M.s,b=b*2,S=e(y,h,b,u).minus(M).abs().comparedTo(e(g,_,b,u).minus(M).abs())<1?[y,h]:[g,_],O=P,S},n.toNumber=function(){return+G(this)},n.toPrecision=function(s,c){return s!=null&&j(s,1,se),H(this,s,c,2)},n.toString=function(s){var c,_=this,h=_.s,m=_.e;return m===null?h?(c="Infinity",h<0&&(c="-"+c)):c="NaN":(s==null?c=m<=p||m>=f?mt(he(_.c),m):Ae(he(_.c),m,"0"):s===10&&q?(_=$(new x(_),a+m+1,u),c=Ae(he(_.c),_.e,"0")):(j(s,2,E.length,"Base"),c=t(Ae(he(_.c),m,"0"),10,s,h,!0)),h<0&&_.c[0]&&(c="-"+c)),c},n.valueOf=n.toJSON=function(){return G(this)},n._isBigNumber=!0,n[Symbol.toStringTag]="BigNumber",n[Symbol.for("nodejs.util.inspect.custom")]=n.valueOf,i!=null&&x.set(i),x}function be(i){var e=i|0;return i>0||i===e?e:e-1}function he(i){for(var e,t,r=1,n=i.length,o=i[0]+"";r<n;){for(e=i[r++]+"",t=C-e.length;t--;e="0"+e);o+=e}for(n=o.length;o.charCodeAt(--n)===48;);return o.slice(0,n+1||1)}function Ue(i,e){var t,r,n=i.c,o=e.c,a=i.s,u=e.s,p=i.e,f=e.e;if(!a||!u)return null;if(t=n&&!n[0],r=o&&!o[0],t||r)return t?r?0:-u:a;if(a!=u)return a;if(t=a<0,r=p==f,!n||!o)return r?0:!n^t?1:-1;if(!r)return p>f^t?1:-1;for(u=(p=n.length)<(f=o.length)?p:f,a=0;a<u;a++)if(n[a]!=o[a])return n[a]>o[a]^t?1:-1;return p==f?0:p>f^t?1:-1}function j(i,e,t,r){if(i<e||i>t||i!==xe(i))throw Error(me+(r||"Argument")+(typeof i=="number"?i<e||i>t?" out of range: ":" not an integer: ":" not a primitive number: ")+String(i))}function dt(i){var e=i.c.length-1;return be(i.e/C)==e&&i.c[e]%2!=0}function mt(i,e){return(i.length>1?i.charAt(0)+"."+i.slice(1):i)+(e<0?"e":"e+")+e}function Ae(i,e,t){var r,n;if(e<0){for(n=t+".";++e;n+=t);i=n+i}else if(r=i.length,++e>r){for(n=t,e-=r;--e;n+=t);i+=n}else e<r&&(i=i.slice(0,e)+"."+i.slice(e));return i}var ve=cn();var un=12;ve.config({EXPONENTIAL_AT:[-100,100],ROUNDING_MODE:4,DECIMAL_PLACES:un});var re=D(0),Oe=D(1),Wn=D("Infinity");function de(i,e){let t=new ve(e.toString()),r=new ve(10).pow(t);return i.times(r)}function D(i){return new ve(i.toString())}var Se=(n=>(n.XYK="Xyk",n.LBP="Lbp",n.Stable="Stableswap",n.Omni="Omnipool",n))(Se||{}),rt=(n=>(n.UnknownError="UnknownError",n.InsufficientTradingAmount="InsufficientTradingAmount",n.MaxInRatioExceeded="MaxInRatioExceeded",n.MaxOutRatioExceeded="MaxOutRatioExceeded",n))(rt||{}),Yt=(t=>(t.Buy="Buy",t.Sell="Sell",t))(Yt||{});var Be=Wt(pn()),we=class{static getSpotPrice(e,t,r,n,o){return(0,Be.get_spot_price)(e,t,r,n,o)}static calculateInGivenOut(e,t,r,n,o){return(0,Be.calculate_in_given_out)(e,t,r,n,o)}static calculateOutGivenIn(e,t,r,n,o){return(0,Be.calculate_out_given_in)(e,t,r,n,o)}static calculateLinearWeights(e,t,r,n,o){return(0,Be.calculate_linear_weights)(e,t,r,n,o)}static calculatePoolTradeFee(e,t,r){return(0,Be.calculate_pool_trade_fee)(e,t,r)}};var it=18,ze="0",zr=12,Xr=2034,dn=63,$r=2090,Kt=1e3;var Kr=require("@polkadot/types/lookup");var Vr=require("@polkadot/api-base/types/consts");var Jr=require("@polkadot/api-base/types/errors");var jr=require("@polkadot/api-base/types/events");var Zr=require("@polkadot/api-base/types/storage");var Qr=require("@polkadot/api-base/types/submittable");var eo=require("@polkadot/rpc-core/types/jsonrpc");var to=require("@polkadot/api-base/types/calls");var co=require("@polkadot/types/types/registry");var mo=require("@polkadot/types/lookup");var go=require("@polkadot/api-base/types/consts");var fo=require("@polkadot/api-base/types/errors");var ho=require("@polkadot/api-base/types/events");var bo=require("@polkadot/api-base/types/storage");var wo=require("@polkadot/api-base/types/submittable");var Po=require("@polkadot/rpc-core/types/jsonrpc");var yo=require("@polkadot/api-base/types/calls");var No=require("@polkadot/types/types/registry");var wt=class{api;constructor(e){this.api=e}get chainDecimals(){return this.api.registry.chainDecimals[0]}get chainToken(){return this.api.registry.chainTokens[0]}};var Xe=class extends wt{constructor(e){super(e)}async getAssetMetadata(e){try{let t=await this.api.query.bonds.bonds(e);if(t.isSome){let[r]=t.unwrap(),n=r.toString();return this.getBondMetadata(n)}}catch{}try{let t=await this.api.query.stableswap.pools(e);if(t.isSome){let{assets:r}=t.unwrap(),n=r.map(o=>o.toString());return this.getShareMetadata(n)}}catch{}return this.getTokenMetadata(e)}async getTokenMetadata(e){if(e==ze)return{symbol:this.chainToken,origin:this.chainToken,decimals:this.chainDecimals};let t=await this.api.query.assetRegistry.assetMetadataMap(e),{symbol:r,decimals:n}=t.unwrap();return{symbol:r.toHuman(),origin:r.toHuman(),decimals:n.toNumber()}}async getBondMetadata(e){let{symbol:t,decimals:r}=await this.getTokenMetadata(e);return{symbol:t+"b",origin:t,decimals:r}}async getShareMetadata(e){let n=(await Promise.all(e.map(async o=>this.getTokenMetadata(o)))).map(o=>o.symbol).join("/");return{symbol:n,origin:n,decimals:18}}async getAssetDetail(e){try{let t=await this.api.query.bonds.bonds(e);if(t.isSome){let[r,n]=t.unwrap(),o=r.toString(),a=n.toNumber();return this.getBondDetail(e,o,a)}}catch{}return this.getTokenDetail(e)}async getTokenDetail(e){if(e==ze){let a=this.api.consts.balances.existentialDeposit;return{name:this.chainToken,assetType:"Token",existentialDeposit:a.toString()}}let t=await this.api.query.assetRegistry.assets(e),{name:r,assetType:n,existentialDeposit:o}=t.unwrap();return{name:n.toHuman()==="StableSwap"?"PoolShare":r.toHuman(),assetType:n.toHuman(),existentialDeposit:o.toString()}}async getBondDetail(e,t,r){let{assetType:n,existentialDeposit:o}=await this.getTokenDetail(e),{origin:a}=await this.getBondMetadata(t),u=new Intl.DateTimeFormat("en-GB");return{name:[a,"Bond",u.format(r)].join(" "),assetType:n,existentialDeposit:o}}};var $e=class extends Xe{constructor(e){super(e)}async getAccountBalance(e,t){let r=t===ze?await this.getSystemAccountBalance(e):await this.getTokenAccountBalance(e,t),n=await this.getAssetMetadata(t);return{amount:r,decimals:n.decimals}}async getSystemAccountBalance(e){let{data:{free:t,miscFrozen:r,feeFrozen:n}}=await this.api.query.system.account(e);return this.calculateFreeBalance(t.toString(),r.toString(),n.toString())}async getTokenAccountBalance(e,t){let{free:r,reserved:n,frozen:o}=await this.api.query.tokens.accounts(e,t);return this.calculateFreeBalance(r.toString(),re.toFixed(),o.toString())}calculateFreeBalance(e,t,r){let n=new ve(e),o=new ve(t),a=new ve(r),u=o.gt(a)?o:a;return n.minus(u)}};var Me=class extends $e{constructor(e){super(e)}getStorageKey(e,t){return e[0].toHuman()[t]}getStorageEntryArray(e){return e[1].toHuman()}async getPoolTokens(e,t){let r=t.map(async n=>{let o=await this.getAccountBalance(e,n),a=await this.getAssetMetadata(n);return{id:n,balance:o.amount.toString(),decimals:a.decimals,symbol:a.symbol,origin:a.origin}});return Promise.all(r)}async syncPoolTokens(e,t){let r=t.map(async n=>{let o=await this.getAccountBalance(e,n.id);return{...n,balance:o.amount.toString()}});return Promise.all(r)}};var Pt=class extends Me{MAX_FINAL_WEIGHT=de(D(100),6);poolsData=new Map([]);pools=[];_poolsLoaded=!1;async getPools(){let e=await this.getRelayChainBlock();return this._poolsLoaded?this.pools=await this.syncPools(e):(this.pools=await this.loadPools(e),this._poolsLoaded=!0),this.pools.filter(t=>{let r=this.poolsData.get(t.address);return r?this.isActivePool(r,e):!1})}async loadPools(e){let r=(await this.api.query.lbp.poolData.entries()).map(async n=>{let o=this.getStorageKey(n,0),a=n[1].unwrap(),u=a.assets.map(F=>F.toString()),p=await this.getPoolTokens(o,u),f=await this.getLinearWeight(a,e),v=D(f),O=this.MAX_FINAL_WEIGHT.minus(D(v)),N=p[0].id;return this.poolsData.set(o,a),{address:o,type:"Lbp",fee:a.fee.toJSON(),repayFeeApply:await this.isRepayFeeApplied(N,a),tokens:[{...p[0],weight:v},{...p[1],weight:O}],...this.getPoolLimits()}});return Promise.all(r)}async syncPools(e){let t=this.pools.map(async r=>{let n=this.poolsData.get(r.address),o=await this.syncPoolTokens(r.address,r.tokens),a=await this.getLinearWeight(n,e),u=D(a),p=this.MAX_FINAL_WEIGHT.minus(D(u)),f=o[0].id;return{...r,repayFeeApply:await this.isRepayFeeApplied(f,n),tokens:[{...o[0],weight:u},{...o[1],weight:p}]}});return Promise.all(t)}async getRelayChainBlock(){return(await this.api.query.parachainSystem.validationData()).unwrap().relayParentNumber.toNumber()}isActivePool(e,t){let r=e.start.toString(),n=e.end.toString();return t>=Number(r)&&t<Number(n)}async getLinearWeight(e,t){return we.calculateLinearWeights(e.start.toString(),e.end.toString(),e.initialWeight.toString(),e.finalWeight.toString(),t.toString())}async isRepayFeeApplied(e,t){let r=D(t.repayTarget.toString());if(r.isZero())return!1;try{return(await this.getAccountBalance(e,t.feeCollector.toString())).amount.isLessThan(r)}catch{return!0}}async getPoolFees(e,t){let r=this.pools.find(n=>n.address===t);return{repayFee:this.getRepayFee(),exchangeFee:r.fee}}getRepayFee(){return this.api.consts.lbp.repayFee.toJSON()}getPoolLimits(){let e=this.api.consts.lbp.maxInRatio.toJSON(),t=this.api.consts.lbp.maxOutRatio.toJSON(),r=this.api.consts.lbp.minTradingLimit.toJSON();return{maxInRatio:e,maxOutRatio:t,minTradingLimit:r}}};var mn=require("@polkadot/util-crypto"),gn=require("@polkadot/util");function ae(i,e){return i.shiftedBy(-1*e).toString()}function ke(i){return i[0]/i[1]*100}function He(i){return i[0]/i[1]}function Ee(i){return[i/1e3,1e3]}var yt=class extends Me{pools=[];_poolLoaded=!1;async getPools(){if(this._poolLoaded){let e=await this.syncPool();this.pools=[e]}else{let e=await this.loadPool();this.pools=[e],this._poolLoaded=!0}return this.pools}async loadPool(){let e=this.api.consts.omnipool.hubAssetId.toString(),t=await this.api.query.omnipool.assets.entries(),r=t.map(u=>this.getStorageKey(u,0)).concat(e),n=this.getPoolId(),o=await this.getPoolTokens(n,r),a=this.getPoolTokenState(t,o,e);return{address:n,type:"Omnipool",hubAssetId:e,tokens:a,...this.getPoolLimits()}}async syncPool(){let e=this.api.consts.omnipool.hubAssetId.toString(),t=await this.api.query.omnipool.assets.entries(),r=await this.syncPoolTokens(this.pools[0].address,this.pools[0].tokens),n=this.getPoolTokenState(t,r,e);return{...this.pools[0],tokens:n}}getPoolTokenState(e,t,r){return t.map((n,o)=>{if(r===n.id)return n;let u=e[o][1].unwrap();return{...n,hubReserves:D(u.hubReserve.toString()),shares:D(u.shares.toString())}})}async getPoolFees(e,t){let r=await this.api.query.dynamicFees.assetFee(e),n=this.api.consts.dynamicFees.assetFeeParameters,o=this.api.consts.dynamicFees.protocolFeeParameters,a=n.minFee.toNumber()+o.minFee.toNumber(),u=n.maxFee.toNumber()+o.maxFee.toNumber();if(r.isSome){let{assetFee:p,protocolFee:f}=r.unwrap();return{assetFee:Ee(p.toNumber()),protocolFee:Ee(f.toNumber()),min:Ee(a),max:Ee(u)}}else return{assetFee:this.getAssetFee(),protocolFee:this.getProtocolFee(),min:Ee(a),max:Ee(u)}}getAssetFee(){let t=this.api.consts.dynamicFees.assetFeeParameters.minFee.toNumber();return Ee(t)}getProtocolFee(){let t=this.api.consts.dynamicFees.protocolFeeParameters.minFee.toNumber();return Ee(t)}getPoolId(){return(0,mn.encodeAddress)((0,gn.stringToU8a)("modlomnipool".padEnd(32,"\0")),63)}getPoolLimits(){let e=this.api.consts.omnipool.maxInRatio.toJSON(),t=this.api.consts.omnipool.maxOutRatio.toJSON(),r=this.api.consts.omnipool.minimumTradingLimit.toJSON();return{maxInRatio:e,maxOutRatio:t,minTradingLimit:r}}};var xt=class extends Me{pools=[];_poolsLoaded=!1;async getPools(){return this._poolsLoaded?this.pools=await this.syncPools():(this.pools=await this.loadPools(),this._poolsLoaded=!0),this.pools}async loadPools(){let t=(await this.api.query.xyk.poolAssets.entries()).map(async r=>{let n=this.getStorageKey(r,0),o=this.getStorageEntryArray(r),a=await this.getPoolTokens(n,o);return{address:n,type:"Xyk",tokens:a,...this.getPoolLimits()}});return Promise.all(t)}async syncPools(){let e=this.pools.map(async t=>({...t,tokens:await this.syncPoolTokens(t.address,t.tokens)}));return Promise.all(e)}async getPoolFees(e,t){return{exchangeFee:this.getExchangeFee()}}getExchangeFee(){return this.api.consts.xyk.getExchangeFee.toJSON()}getPoolLimits(){let e=this.api.consts.xyk.maxInRatio.toJSON(),t=this.api.consts.xyk.maxOutRatio.toJSON(),r=this.api.consts.xyk.minTradingLimit.toJSON();return{maxInRatio:e,maxOutRatio:t,minTradingLimit:r}}};var st=class extends Error{constructor(e){super(),this.message=`${e} pool invalid`,this.name="PoolNotFound"}},Vt=class extends Error{constructor(e,t){super(),this.message=`${e} pool missing ${t}`,this.name="PoolConfigNotFound"}},Ye=class extends Error{constructor(e,t){super(),this.message=`Route from ${e} to ${t} not found in pool configuration`,this.name="RouteNotFound"}},Jt=class extends Error{constructor(e){super(),this.message=`Asset ${e} not available in current network`,this.name="AssetNotFound"}},jt=class extends Error{constructor(e){super(),this.message=`Storage missing ${e}`,this.name="StorageConfigNotFound"}},Zt=class extends Error{constructor(e){super(),this.message=`Subscription type "${e}" not supported`,this.name="SubscriptionNotSupported"}},Qt=class extends Error{constructor(e){super(),this.message=`${e}`,this.name="ProviderConfigNotFound"}};var Ke=class{api;xykClient;omniClient;lbpClient;constructor(e){this.api=e,this.xykClient=new xt(this.api),this.omniClient=new yt(this.api),this.lbpClient=new Pt(this.api)}async getPools(e){if(e.length==0)return(await Promise.all([this.xykClient.getPools(),this.omniClient.getPools(),this.lbpClient.getPools()])).flat();let t=[];return e.forEach(n=>{switch(n){case"Xyk":t.push(this.xykClient.getPools());break;case"Omnipool":t.push(this.omniClient.getPools());break;case"Lbp":t.push(this.lbpClient.getPools());break}}),(await Promise.all(t)).flat()}async getPoolFees(e,t){switch(t.type){case"Xyk":return this.xykClient.getPoolFees(e,t.address);case"Omnipool":return this.omniClient.getPoolFees(e,t.address);case"Lbp":return this.lbpClient.getPoolFees(e,t.address);default:throw new st(t.type)}}isDirectOmnipoolTrade(e){return e.length==1&&e[0].pool=="Omnipool"}buildBuyTx(e,t,r,n,o){let a;this.isDirectOmnipoolTrade(o)?a=this.api.tx.omnipool.buy(t,e,r.toFixed(),n.toFixed()):a=this.api.tx.router.buy(e,t,r.toFixed(),n.toFixed(),o);let u=()=>a;return{hex:a.toHex(),name:"RouterBuy",get:u}}buildSellTx(e,t,r,n,o){let a;this.isDirectOmnipoolTrade(o)?a=this.api.tx.omnipool.sell(e,t,r.toFixed(),n.toFixed()):a=this.api.tx.router.sell(e,t,r.toFixed(),n.toFixed(),o);let u=()=>a;return{hex:a.toHex(),name:"RouterSell",get:u}}};var at=(i,e)=>i===e?0:i==null?e==null?0:-1:e==null?i==null?0:1:typeof i.compare=="function"?i.compare(e):typeof e.compare=="function"?-e.compare(i):i<e?-1:i>e?1:0;var vt=(i,e=t=>t!==void 0?": "+t:"")=>class extends Error{constructor(t){super(i(t)+e(t))}};var jn=vt(()=>"illegal argument(s)"),fn=i=>{throw new jn(i)};var Zn=vt(()=>"index out of bounds"),en=i=>{throw new Zn(i)},Ot=(i,e,t)=>(i<e||i>=t)&&en(i);var hn=23283064365386963e-26,St=class{float(e=1){return this.int()*hn*e}norm(e=1){return(this.int()*hn-.5)*2*e}normMinMax(e,t){let r=this.minmax(e,t);return this.float()<.5?r:-r}minmax(e,t){return this.float()*(t-e)+e}minmaxInt(e,t){return e|=0,t|=0,e+(this.float()*(t-e)|0)}};var tn=Math.random,nn=class extends St{int(){return tn()*4294967296>>>0}float(e=1){return tn()*e}norm(e=1){return(tn()-.5)*2*e}},bn=new nn;var wn=i=>i!=null&&typeof i!="function"&&i.length!==void 0;var Pn=Object.getPrototypeOf({}),It="function",yn="string",Ve=(i,e)=>{let t;if(i===e)return!0;if(i!=null){if(typeof i.equiv===It)return i.equiv(e)}else return i==e;if(e!=null){if(typeof e.equiv===It)return e.equiv(i)}else return i==e;return typeof i===yn||typeof e===yn?!1:(t=Object.getPrototypeOf(i),(t==null||t===Pn)&&(t=Object.getPrototypeOf(e),t==null||t===Pn)?nr(i,e):typeof i!==It&&i.length!==void 0&&typeof e!==It&&e.length!==void 0?Qn(i,e):i instanceof Set&&e instanceof Set?er(i,e):i instanceof Map&&e instanceof Map?tr(i,e):i instanceof Date&&e instanceof Date?i.getTime()===e.getTime():i instanceof RegExp&&e instanceof RegExp?i.toString()===e.toString():i!==i&&e!==e)},Qn=(i,e,t=Ve)=>{let r=i.length;if(r===e.length)for(;r-- >0&&t(i[r],e[r]););return r<0},er=(i,e,t=Ve)=>i.size===e.size&&t([...i.keys()].sort(),[...e.keys()].sort()),tr=(i,e,t=Ve)=>i.size===e.size&&t([...i].sort(),[...e].sort()),nr=(i,e,t=Ve)=>{if(Object.keys(i).length!==Object.keys(e).length)return!1;for(let r in i)if(!e.hasOwnProperty(r)||!t(i[r],e[r]))return!1;return!0};var xn=(i,e)=>i!=null&&typeof i[e]=="function";var vn=i=>xn(i,"xform")?i.xform():i;var Bt=Symbol(),rn=()=>{};var On=i=>i!=null&&typeof i[Symbol.iterator]=="function";var Tt=class{constructor(e){this.value=e}deref(){return this.value}};var Nt=i=>i instanceof Tt;var Sn=i=>i instanceof Tt?i.deref():i;function*In(i,e){let t=vn(i)([rn,rn,(r,n)=>n])[2];for(let r of e){let n=t(Bt,r);if(Nt(n)){n=Sn(n.deref()),n!==Bt&&(yield n);return}n!==Bt&&(yield n)}}var Bn=(i,e)=>[i[0],i[1],e];function lt(i,e){return On(e)?In(lt(i),e):t=>{let r=t[2];return Bn(t,(n,o)=>r(n,i(o)))}}var Je=class{constructor(e){this._length=0,e&&this.into(e)}get length(){return this._length}get head(){return this._head}[Symbol.iterator](){return Tn("next",this._head)}reverseIterator(){return Tn("prev",this.tail)}clear(){this.release()}compare(e,t=at){let r=this._length;if(r<e._length)return-1;if(r>e._length)return 1;if(r===0)return 0;{let n=this._head,o=e._head,a=0;for(;r-- >0&&a===0;)a=t(n.value,o.value),n=n.next,o=o.next;return a}}concat(...e){let t=this.copy();for(let r of e)t.into(r);return t}equiv(e){if(!(e instanceof Je||wn(e))||this._length!==e.length)return!1;if(!this._length||this===e)return!0;let t=e[Symbol.iterator](),r=this._head;for(let n=this._length;n-- >0;){if(!Ve(r.value,t.next().value))return!1;r=r.next}return!0}filter(e){let t=this.empty();return this.traverse(r=>(e(r.value)&&t.append(r.value),!0)),t}find(e){return this.traverse(t=>t.value!==e)}findWith(e){return this.traverse(t=>!e(t.value))}first(){return this._head&&this._head.value}insertSorted(e,t){t=t||at;for(let r=this._head,n=this._length;n-- >0;){if(t(e,r.value)<=0)return this.insertBefore(r,e);r=r.next}return this.append(e)}into(e){for(let t of e)this.append(t);return this}nth(e,t){let r=this.nthCell(e);return r?r.value:t}nthCellUnsafe(e){let t,r;for(e<=this._length>>>1?(t=this._head,r="next"):(t=this.tail,r="prev",e=this._length-e-1);e-- >0&&t;)t=t[r];return t}peek(){return this.tail&&this.tail.value}$reduce(e,t){let r=this._head;for(let n=this._length;n-- >0&&!Nt(t);)t=e(t,r.value),r=r.next;return t}reduce(e,t){return this.$reduce(e,t)}release(){let e=this._head;if(!e)return!0;let t;for(let r=this._length;r-- >0;)t=e.next,delete e.value,delete e.prev,delete e.next,e=t;return this._head=void 0,this._length=0,!0}reverse(){let e=this._head,t=this.tail,r=(this._length>>>1)+(this._length&1);for(;e&&t&&r>0;){let n=e.value;e.value=t.value,t.value=n,e=e.next,t=t.prev,r--}return this}setHead(e){let t=this._head;return t?(t.value=e,t):this.prepend(e)}setNth(e,t){let r=this.nthCell(e);return!r&&en(e),r.value=t,r}setTail(e){let t=this.tail;return t?(t.value=e,t):this.append(e)}swap(e,t){if(e!==t){let r=e.value;e.value=t.value,t.value=r}return this}toArray(e=[]){return this.traverse(t=>(e.push(t.value),!0)),e}toJSON(){return this.toArray()}toString(){let e=[];return this.traverse(t=>(e.push(String(t.value)),!0)),e.join(", ")}traverse(e,t=this._head,r){if(!this._head)return;let n=t;do{if(!e(n))break;n=n.next}while(n!==r);return n}_map(e,t){return this.traverse(r=>(e.append(t(r.value)),!0)),e}};function*Tn(i,e){for(;e;)yield e.value,e=e[i]}var Te=class extends Je{get tail(){return this._tail}append(e){if(this._tail){let t={value:e,prev:this._tail};return this._tail.next=t,this._tail=t,this._length++,t}else return this.prepend(e)}asHead(e){return e===this._head?this:(this.remove(e),this._head.prev=e,e.next=this._head,e.prev=void 0,this._head=e,this._length++,this)}asTail(e){return e===this._tail?this:(this.remove(e),this._tail.next=e,e.prev=this._tail,e.next=void 0,this._tail=e,this._length++,this)}cons(e){return this.prepend(e),this}copy(){return new Te(this)}*cycle(){for(;;)yield*this}drop(){let e=this._head;if(e)return this._head=e.next,this._head?this._head.prev=void 0:this._tail=void 0,this._length--,e.value}empty(){return new Te}insertAfter(e,t){let r={value:t,next:e.next,prev:e};return e.next?e.next.prev=r:this._tail=r,e.next=r,this._length++,r}insertAfterNth(e,t){return e<0&&(e+=this._length),e>=this._length-1?this.append(t):(Ot(e,0,this._length),this.insertAfter(this.nthCellUnsafe(e),t))}insertBefore(e,t){let r={value:t,next:e,prev:e.prev};return e.prev?e.prev.next=r:this._head=r,e.prev=r,this._length++,r}insertBeforeNth(e,t){return e<0&&(e+=this._length),e<=0?this.prepend(t):(Ot(e,0,this._length),this.insertBefore(this.nthCellUnsafe(e),t))}map(e){return this._map(new Te,e)}nth(e,t){let r=this.nthCell(e);return r?r.value:t}nthCell(e){if(e<0&&(e+=this._length),!(e<0||e>=this._length))return this.nthCellUnsafe(e)}pop(){let e=this._tail;if(e)return this._tail=e.prev,this._tail?this._tail.next=void 0:this._head=void 0,this._length--,e.value}prepend(e){let t={value:e,next:this._head};return this._head?this._head.prev=t:this._tail=t,this._head=t,this._length++,t}push(e){return this.append(e),this}release(){return this._tail=void 0,super.release()}remove(e){return e.prev?e.prev.next=e.next:this._head=e.next,e.next?e.next.prev=e.prev:this._tail=e.prev,this._length--,this}rotateLeft(){switch(this._length){case 0:case 1:return this;case 2:return this.swap(this._head,this._tail);default:return this.push(this.drop())}}rotateRight(){switch(this._length){case 0:case 1:return this;case 2:return this.swap(this._head,this._tail);default:let e=this.peek();return this.pop(),this.prepend(e),this}}seq(e=0,t=this.length){if(e>=t||e<0)return;let r=this.nthCell(e),n=this.nthCell(t-1),o=a=>({first(){return a.value},next(){return a!==n&&a.next?o(a.next):void 0}});return r?o(r):void 0}shuffle(e,t=bn){if(this._length<2)return this;for(e=e!==void 0?e:Math.ceil(1.5*Math.log2(this._length));e>0;e--){let r=this._head;for(;r;){let n=r.next;t.float()<.5?this.asHead(r):this.asTail(r),r=n}}return this}slice(e=0,t=this.length){let r=e<0?e+this._length:e,n=t<0?t+this._length:t;(r<0||n<0)&&fn("invalid indices: ${from} / ${to}");let o=new Te,a=this.nthCell(r);for(;a&&++r<=n;)o.push(a.value),a=a.next;return o}sort(e=at){if(!this._length)return this;let t=1;for(;;){let r=this._head;this._head=void 0,this._tail=void 0;let n=0;for(;r;){n++;let o=r,a=0;for(let p=0;p<t&&(a++,o=o.next,!!o);p++);let u=t;for(;a>0||u>0&&o;){let p;a===0?(p=o,o=o.next,u--):!o||u===0||e(r.value,o.value)<=0?(p=r,r=r.next,a--):(p=o,o=o.next,u--),this._tail?this._tail.next=p:this._head=p,p.prev=this._tail,this._tail=p}r=o}if(this._tail.next=void 0,n<=1)return this;t*=2}}splice(e,t=0,r){let n;typeof e=="number"?(e<0&&(e+=this._length),Ot(e,0,this._length),n=this.nthCellUnsafe(e)):n=e;let o=new Te;if(t>0)for(;n&&t-- >0;)this.remove(n),o.push(n.value),n=n.next;else n&&(n=n.next);if(r)if(n)for(let a of r)this.insertBefore(n,a);else for(let a of r)this.push(a);return o}};var je=class{constructor(e,t){let r=Object.assign({maxlen:1/0,maxsize:1/0,map:()=>new Map,ksize:()=>0,vsize:()=>0},t);this.map=r.map(),this.items=new Te,this._size=0,this.opts=r,e&&this.into(e)}get length(){return this.items.length}get size(){return this._size}[Symbol.iterator](){return this.entries()}entries(){return lt(e=>[e.k,e],this.items)}keys(){return lt(e=>e.k,this.items)}values(){return lt(e=>e.v,this.items)}copy(){let e=this.empty();e.items=this.items.copy();let t=e.items.head;for(;t;)e.map.set(t.value.k,t),t=t.next;return e}empty(){return new je(null,this.opts)}release(){this._size=0,this.map.clear();let e=this.opts.release;if(e){let t;for(;t=this.items.drop();)e(t.k,t.v);return!0}return this.items.release()}has(e){return this.map.has(e)}get(e,t){let r=this.map.get(e);return r?this.resetEntry(r):t}set(e,t){let r=this.opts.ksize(e)+this.opts.vsize(t),n=this.map.get(e);return this._size+=Math.max(0,r-(n?n.value.s:0)),this.ensureSize()&&this.doSetEntry(n,e,t,r),t}into(e){for(let t of e)this.set(t[0],t[1]);return this}getSet(e,t){let r=this.map.get(e);return r?Promise.resolve(this.resetEntry(r)):t().then(n=>this.set(e,n))}delete(e){let t=this.map.get(e);return t?(this.removeEntry(t),!0):!1}resetEntry(e){return this.items.asTail(e),e.value.v}ensureSize(){let e=this.opts.release,t=this.opts.maxsize,r=this.opts.maxlen;for(;this._size>t||this.length>=r;){let n=this.items.drop();if(!n)return!1;this.map.delete(n.k),e&&e(n.k,n.v),this._size-=n.s}return!0}removeEntry(e){let t=e.value;this.map.delete(t.k),this.items.remove(e),this.opts.release&&this.opts.release(t.k,t.v),this._size-=t.s}doSetEntry(e,t,r,n){e?(e.value.v=r,e.value.s=n,this.items.asTail(e)):(this.items.push({k:t,v:r,s:n}),this.map.set(t,this.items.tail))}};var Ft=class extends Ke{feeCache;disconnectSubscribeNewHeads=null;constructor(e){super(e),this.feeCache=new je(null),this.api.rpc.chain.subscribeNewHeads(async t=>{this.feeCache.release()}).then(t=>{this.disconnectSubscribeNewHeads=t})}async getPoolFees(e,t){let r=[t.address,e].join("-");if(this.feeCache.has(r))return this.feeCache.get(r);{let o=await super.getPoolFees(e,t);return this.feeCache.set(r,o),o}}async destroy(){console.log(`Destroying pool cache!
|
|
2
|
-
Items: [${this.feeCache.length}]`),this.feeCache.release(),this.disconnectSubscribeNewHeads?.()}};var Le=class{type;address;tokens;maxInRatio;maxOutRatio;minTradingLimit;fee;repayFeeApply;static fromPool(e){return new Le(e.address,e.tokens,e.maxInRatio,e.maxOutRatio,e.minTradingLimit,e.fee,e.repayFeeApply)}constructor(e,t,r,n,o,a,u){this.type="Lbp",this.address=e,this.tokens=t,this.maxInRatio=r,this.maxOutRatio=n,this.minTradingLimit=o,this.fee=a,this.repayFeeApply=u}validatePair(e,t){return!0}parsePair(e,t){let r=new Map(this.tokens.map(p=>[p.id,p])),n=r.get(e),o=r.get(t);if(n==null)throw new Error("Pool does not contain tokenIn");if(o==null)throw new Error("Pool does not contain tokenOut");let a=D(n.balance),u=D(o.balance);return{assetIn:e,assetOut:t,decimalsIn:n.decimals,decimalsOut:o.decimals,weightIn:n.weight,weightOut:o.weight,balanceIn:a,balanceOut:u}}validateAndBuy(e,t,r){let n=this.tokens[0].id,o=[];t.isLessThan(this.minTradingLimit)&&o.push("InsufficientTradingAmount");let a=e.balanceOut.div(this.maxOutRatio);if(t.isGreaterThan(a)&&o.push("MaxOutRatioExceeded"),n===e.assetOut){let u=this.calculateTradeFee(t,r),p=ke(this.repayFeeApply?r.repayFee:r.exchangeFee),f=t.plus(u),v=this.calculateInGivenOut(e,f),O=e.balanceIn.div(this.maxInRatio);return v.isGreaterThan(O)&&o.push("MaxInRatioExceeded"),{amountIn:v,calculatedIn:v,amountOut:t,feePct:p,errors:o}}else{let u=this.calculateInGivenOut(e,t),p=e.balanceIn.div(this.maxInRatio);return u.isGreaterThan(p)&&o.push("MaxInRatioExceeded"),{amountIn:u,calculatedIn:u,amountOut:t,feePct:0,errors:o}}}validateAndSell(e,t,r){let n=this.tokens[0].id,o=[];t.isLessThan(this.minTradingLimit)&&o.push("InsufficientTradingAmount");let a=e.balanceIn.div(this.maxInRatio);if(t.isGreaterThan(a)&&o.push("MaxInRatioExceeded"),n===e.assetIn){let u=this.calculateOutGivenIn(e,t),p=e.balanceOut.div(this.maxOutRatio);return u.isGreaterThan(p)&&o.push("MaxOutRatioExceeded"),{amountIn:t,calculatedOut:u,amountOut:u,feePct:0,errors:o}}else{let u=this.calculateOutGivenIn(e,t),p=this.calculateTradeFee(u,r),f=ke(this.repayFeeApply?r.repayFee:r.exchangeFee),v=u.minus(p),O=e.balanceOut.div(this.maxOutRatio);return v.isGreaterThan(O)&&o.push("MaxOutRatioExceeded"),{amountIn:t,calculatedOut:u,amountOut:v,feePct:f,errors:o}}}calculateInGivenOut(e,t){let r=we.calculateInGivenOut(e.balanceIn.toString(),e.balanceOut.toString(),e.weightIn.toString(),e.weightOut.toString(),t.toFixed(0)),n=D(r);return n.isNegative()?re:n}calculateOutGivenIn(e,t){let r=we.calculateOutGivenIn(e.balanceIn.toString(),e.balanceOut.toString(),e.weightIn.toString(),e.weightOut.toString(),t.toFixed(0)),n=D(r);return n.isNegative()?re:n}spotPriceInGivenOut(e){let t=we.getSpotPrice(e.balanceOut.toString(),e.balanceIn.toString(),e.weightOut.toString(),e.weightIn.toString(),de(Oe,e.decimalsOut).toString());return D(t)}spotPriceOutGivenIn(e){let t=we.getSpotPrice(e.balanceIn.toString(),e.balanceOut.toString(),e.weightIn.toString(),e.weightOut.toString(),de(Oe,e.decimalsIn).toString());return D(t)}calculateTradeFee(e,t){let r=we.calculatePoolTradeFee(e.toString(),this.repayFeeApply?t.repayFee[0]:t.exchangeFee[0],this.repayFeeApply?t.repayFee[1]:t.exchangeFee[1]);return D(r)}};var W=Wt(Fn()),ge=class{static calculateSpotPrice(e,t,r,n){return(0,W.calculate_spot_price)(e,t,r,n)}static calculateLrnaSpotPrice(e,t){return(0,W.calculate_lrna_spot_price)(e,t)}static calculateInGivenOut(e,t,r,n,o,a,u,p,f){return(0,W.calculate_in_given_out)(e,t,r,n,o,a,u,p,f)}static calculateLrnaInGivenOut(e,t,r,n,o){return(0,W.calculate_lrna_in_given_out)(e,t,r,n,o)}static calculateOutGivenIn(e,t,r,n,o,a,u,p,f){return(0,W.calculate_out_given_in)(e,t,r,n,o,a,u,p,f)}static calculateOutGivenLrnaIn(e,t,r,n,o){return(0,W.calculate_out_given_lrna_in)(e,t,r,n,o)}static calculatePoolTradeFee(e,t,r){return(0,W.calculate_pool_trade_fee)(e,t,r)}static calculateShares(e,t,r,n){return(0,W.calculate_shares)(e,t,r,n)}static calculateLiquidityOut(e,t,r,n,o,a,u,p){return(0,W.calculate_liquidity_out)(e,t,r,n,o,a,u,p)}static calculateLiquidityLRNAOut(e,t,r,n,o,a,u,p){return(0,W.calculate_liquidity_lrna_out)(e,t,r,n,o,a,u,p)}static calculateCapDifference(e,t,r,n){return(0,W.calculate_cap_difference)(e,t,r,n)}static verifyAssetCap(e,t,r,n){return(0,W.verify_asset_cap)(e,t,r,n)}static calculateLimitHubIn(e,t,r,n){return(0,W.calculate_liquidity_hub_in)(e,t,r,n)}static isSellAllowed(e){return(0,W.is_sell_allowed)(e)}static isBuyAllowed(e){return(0,W.is_buy_allowed)(e)}static isAddLiquidityAllowed(e){return(0,W.is_add_liquidity_allowed)(e)}static isRemoveLiquidityAllowed(e){return(0,W.is_remove_liquidity_allowed)(e)}};var De=class{type;address;tokens;maxInRatio;maxOutRatio;minTradingLimit;hubAssetId;static fromPool(e){return new De(e.address,e.tokens,e.maxInRatio,e.maxOutRatio,e.minTradingLimit,e.hubAssetId)}constructor(e,t,r,n,o,a){this.type="Omnipool",this.address=e,this.tokens=t,this.maxInRatio=r,this.maxOutRatio=n,this.minTradingLimit=o,this.hubAssetId=a}validatePair(e,t){return this.hubAssetId!=t}parsePair(e,t){let r=new Map(this.tokens.map(p=>[p.id,p])),n=r.get(e),o=r.get(t);if(n==null)throw new Error("Pool does not contain tokenIn");if(o==null)throw new Error("Pool does not contain tokenOut");let a=D(n.balance),u=D(o.balance);return{assetIn:e,assetOut:t,hubReservesIn:n.hubReserves,hubReservesOut:o.hubReserves,sharesIn:n.shares,sharesOut:o.shares,decimalsIn:n.decimals,decimalsOut:o.decimals,balanceIn:a,balanceOut:u}}validateAndBuy(e,t,r){let n=this.calculateInGivenOut(e,t),o=this.calculateInGivenOut(e,t,r),a=o.minus(n),u=n===re?re:a.div(n).multipliedBy(100).decimalPlaces(2),p=[];t.isLessThan(this.minTradingLimit)&&p.push("InsufficientTradingAmount");let f=e.balanceOut.div(this.maxOutRatio);t.isGreaterThan(f)&&p.push("MaxOutRatioExceeded");let v=e.balanceIn.div(this.maxInRatio);return o.isGreaterThan(v)&&p.push("MaxInRatioExceeded"),{amountIn:o,calculatedIn:n,amountOut:t,feePct:u.toNumber(),errors:p}}validateAndSell(e,t,r){let n=this.calculateOutGivenIn(e,t),o=this.calculateOutGivenIn(e,t,r),u=n.minus(o).div(n).multipliedBy(100).decimalPlaces(2),p=[];t.isLessThan(this.minTradingLimit)&&p.push("InsufficientTradingAmount");let f=e.balanceIn.div(this.maxInRatio);t.isGreaterThan(f)&&p.push("MaxInRatioExceeded");let v=e.balanceOut.div(this.maxOutRatio);return o.isGreaterThan(v)&&p.push("MaxOutRatioExceeded"),{amountIn:t,calculatedOut:n,amountOut:o,feePct:u.toNumber(),errors:p}}calculateInGivenOut(e,t,r){if(e.assetIn==this.hubAssetId)return this.calculateLrnaInGivenOut(e,t,r);let n=ge.calculateInGivenOut(e.balanceIn.toString(),e.hubReservesIn.toString(),e.sharesIn.toString(),e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),r?He(r.assetFee).toString():re.toString(),r?He(r.protocolFee).toString():re.toString()),o=D(n);return o.isNegative()?re:o}calculateLrnaInGivenOut(e,t,r){let n=ge.calculateLrnaInGivenOut(e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),r?He(r.assetFee).toString():re.toString()),o=D(n);return o.isNegative()?re:o}calculateOutGivenIn(e,t,r){if(e.assetIn==this.hubAssetId)return this.calculateOutGivenLrnaIn(e,t,r);let n=ge.calculateOutGivenIn(e.balanceIn.toString(),e.hubReservesIn.toString(),e.sharesIn.toString(),e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),r?He(r.assetFee).toString():re.toString(),r?He(r.protocolFee).toString():re.toString()),o=D(n);return o.isNegative()?re:o}calculateOutGivenLrnaIn(e,t,r){let n=ge.calculateOutGivenLrnaIn(e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),r?He(r.assetFee).toString():re.toString()),o=D(n);return o.isNegative()?re:o}spotPriceInGivenOut(e){if(e.assetIn==this.hubAssetId)return this.spotPriceLrnaInGivenOut(e);let t=ge.calculateSpotPrice(e.balanceOut.toString(),e.hubReservesOut.toString(),e.balanceIn.toString(),e.hubReservesIn.toString());return D(t).shiftedBy(-1*(18-e.decimalsOut)).decimalPlaces(0,1)}spotPriceLrnaInGivenOut(e){let t=ge.calculateLrnaSpotPrice(e.hubReservesOut.toString(),e.balanceOut.toString());return D(t).shiftedBy(-1*(18-e.decimalsOut)).decimalPlaces(0,1)}spotPriceOutGivenIn(e){if(e.assetIn==this.hubAssetId)return this.spotPriceOutGivenLrnaIn(e);let t=ge.calculateSpotPrice(e.balanceIn.toString(),e.hubReservesIn.toString(),e.balanceOut.toString(),e.hubReservesOut.toString());return D(t).shiftedBy(-1*(18-e.decimalsIn)).decimalPlaces(0,1)}spotPriceOutGivenLrnaIn(e){let t=ge.calculateLrnaSpotPrice(e.balanceOut.toString(),e.hubReservesOut.toString());return D(t).shiftedBy(-1*(18-e.decimalsIn)).decimalPlaces(0,1)}};var _e=Wt(kn()),Fe=class{static getSpotPrice(e,t,r){return(0,_e.get_spot_price)(e,t,r)}static calculateInGivenOut(e,t,r){return(0,_e.calculate_in_given_out)(e,t,r)}static calculateOutGivenIn(e,t,r){return(0,_e.calculate_out_given_in)(e,t,r)}static calculatePoolTradeFee(e,t,r){return(0,_e.calculate_pool_trade_fee)(e,t,r)}static calculateLiquidityIn(e,t,r){return(0,_e.calculate_liquidity_in)(e,t,r)}static calculateShares(e,t,r){return(0,_e.calculate_shares)(e,t,r)}static calculateLiquidityOutAssetA(e,t,r,n){return(0,_e.calculate_liquidity_out_asset_a)(e,t,r,n)}static calculateLiquidityOutAssetB(e,t,r,n){return(0,_e.calculate_liquidity_out_asset_b)(e,t,r,n)}};var Ce=class{type;address;tokens;maxInRatio;maxOutRatio;minTradingLimit;static fromPool(e){return new Ce(e.address,e.tokens,e.maxInRatio,e.maxOutRatio,e.minTradingLimit)}constructor(e,t,r,n,o){this.type="Xyk",this.address=e,this.tokens=t,this.maxInRatio=r,this.maxOutRatio=n,this.minTradingLimit=o}validatePair(e,t){return!0}parsePair(e,t){let r=new Map(this.tokens.map(p=>[p.id,p])),n=r.get(e),o=r.get(t);if(n==null)throw new Error("Pool does not contain tokenIn");if(o==null)throw new Error("Pool does not contain tokenOut");let a=D(n.balance),u=D(o.balance);return{assetIn:e,assetOut:t,decimalsIn:n.decimals,decimalsOut:o.decimals,balanceIn:a,balanceOut:u}}validateAndBuy(e,t,r){let n=this.calculateInGivenOut(e,t),o=this.calculateTradeFee(n,r),a=ke(r.exchangeFee),u=n.plus(o),p=[];t.isLessThan(this.minTradingLimit)&&p.push("InsufficientTradingAmount");let f=e.balanceOut.div(this.maxOutRatio);t.isGreaterThan(f)&&p.push("MaxOutRatioExceeded");let v=e.balanceIn.div(this.maxInRatio);return u.isGreaterThan(v)&&p.push("MaxInRatioExceeded"),{amountIn:u,calculatedIn:n,amountOut:t,feePct:a,errors:p}}validateAndSell(e,t,r){let n=this.calculateOutGivenIn(e,t),o=this.calculateTradeFee(n,r),a=ke(r.exchangeFee),u=n.minus(o),p=[];t.isLessThan(this.minTradingLimit)&&p.push("InsufficientTradingAmount");let f=e.balanceIn.div(this.maxInRatio);t.isGreaterThan(f)&&p.push("MaxInRatioExceeded");let v=e.balanceOut.div(this.maxOutRatio);return u.isGreaterThan(v)&&p.push("MaxOutRatioExceeded"),{amountIn:t,calculatedOut:n,amountOut:u,feePct:a,errors:p}}calculateInGivenOut(e,t){let r=Fe.calculateInGivenOut(e.balanceIn.toString(),e.balanceOut.toString(),t.toFixed(0)),n=D(r);return n.isNegative()?re:n}calculateOutGivenIn(e,t){let r=Fe.calculateOutGivenIn(e.balanceIn.toString(),e.balanceOut.toString(),t.toFixed(0)),n=D(r);return n.isNegative()?re:n}spotPriceInGivenOut(e){let t=Fe.getSpotPrice(e.balanceOut.toString(),e.balanceIn.toString(),de(Oe,e.decimalsOut).toString());return D(t)}spotPriceOutGivenIn(e){let t=Fe.getSpotPrice(e.balanceIn.toString(),e.balanceOut.toString(),de(Oe,e.decimalsIn).toString());return D(t)}calculateTradeFee(e,t){let r=Fe.calculatePoolTradeFee(e.toString(),t.exchangeFee[0],t.exchangeFee[1]);return D(r)}};var Ze=class{static get(e){switch(e.type){case"Xyk":return Ce.fromPool(e);case"Omnipool":return De.fromPool(e);case"Lbp":return Le.fromPool(e);default:throw new Error("Pool type "+e.type+" is not supported yet")}}};var We=class{routeSuggester;routerOptions;poolService;defaultRouterOptions={includeOnly:[]};constructor(e,t){this.poolService=e,this.routeSuggester=new nt,this.routerOptions={...this.defaultRouterOptions,...t}}async getPools(){let e=this.routerOptions.includeOnly;return await this.poolService.getPools(e)}async getAllAssets(){let e=await this.getPools();if(e.length===0)throw new Error("No pools configured");let t=await this.getAssets(e);return[...new Map(t).values()]}async getAssetPairs(e){let t=await this.getPools();if(t.length===0)throw new Error("No pools configured");let{assets:r,poolsMap:n}=await this.validateToken(e,t),a=this.getPaths(e,null,n,t).map(u=>u[u.length-1].assetOut);return this.toPoolAssets([...new Set(a)],r)}async getAllPaths(e,t){let r=await this.getPools();if(r.length===0)throw new Error("No pools configured");let{poolsMap:n}=await this.validateTokenPair(e,t,r);return this.getPaths(e,t,n,r)}async getAssets(e){let t=e.map(r=>r.tokens.map(({id:n,symbol:o,origin:a})=>({id:n,symbol:o,origin:a}))).flat();return new Map(t.map(r=>[r.id,r]))}getPaths(e,t,r,n){return this.routeSuggester.getProposals(e,t,n).filter(u=>this.validPath(u,r)).map(u=>this.toHops(u,r))}async validateTokenPair(e,t,r){let n=await this.getAssets(r);if(n.get(e)==null)throw new Error(e+" is not supported token");if(n.get(t)==null)throw new Error(t+" is not supported token");let o=this.getPoolMap(r);return{assets:n,poolsMap:o}}async validateToken(e,t){let r=await this.getAssets(t);if(r.get(e)==null)throw new Error(e+" is not supported token");let n=this.getPoolMap(t);return{assets:r,poolsMap:n}}getPoolMap(e){return new Map(e.map(t=>[t.address,Ze.get(t)]))}validPath(e,t){return e.length>0&&e.map(r=>this.validEdge(r,t)).reduce((r,n)=>r&&n)}validEdge([e,t,r],n){return n.get(e)?.validatePair(t,r)||!1}toHops(e,t){return e.map(([r,n,o])=>{let a=t.get(r);return{poolId:r,pool:a?.type,assetIn:n,assetOut:o}})}toPoolAssets(e,t){return e.map(r=>{let n=t.get(r);return{id:r,symbol:n?.symbol}})}};function wr(i,e){return i.minus(e).abs().div(i.plus(e).div(2)).multipliedBy(100).decimalPlaces(2)}function Qe(i,e){return i.minus(e).div(e).multipliedBy(100).decimalPlaces(2)}function on(i,e){return Oe.minus(e.div(i)).multipliedBy(100).decimalPlaces(2)}function sn(i,e){return e.div(i).minus(Oe).multipliedBy(100).decimalPlaces(2)}var ct=class extends We{isDirectTrade(e){return e.length==1}findBestSellRoute(e){let t=e.sort((r,n)=>{let o=r[r.length-1].amountOut,a=n[n.length-1].amountOut;return o.isGreaterThan(a)?-1:1});return t.find(r=>r.every(n=>n.errors.length==0))||t[0]}getRouteFeeRange(e){if(e.filter(r=>r.tradeFeeRange).length>0){let r=e.map(o=>o.tradeFeeRange?.[0]??o.tradeFeePct).reduce((o,a)=>o+a),n=e.map(o=>o.tradeFeeRange?.[1]??o.tradeFeePct).reduce((o,a)=>o+a);return[r,n]}}getPoolFeeRange(e){let t=e.min?ke(e.min):void 0,r=e.max?ke(e.max):void 0;if(t&&r)return[t,r]}async getBestSell(e,t,r){let n=await super.getPools();if(n.length===0)throw new Error("No pools configured");let{poolsMap:o}=await super.validateTokenPair(e,t,n),a=super.getPaths(e,t,o,n);if(a.length===0)throw new Ye(e,t);let u=a.map(async G=>await this.toSellSwaps(r,G,o)),p=await Promise.all(u),f=this.findBestSellRoute(p),v=f[0],O=f[f.length-1],N=this.isDirectTrade(f),F=f.map(G=>G.spotPrice.shiftedBy(-1*G.assetOutDecimals)).reduce((G,s)=>G.multipliedBy(s)),k=de(F,O.assetOutDecimals).decimalPlaces(0,1),L=v.amountIn.shiftedBy(-1*v.assetInDecimals).multipliedBy(k),E=Qe(O.calculatedOut,L),q=N?O.calculatedOut:this.calculateDelta0Y(v.amountIn,f,o),x=O.amountOut,H=N?O.tradeFeePct:on(q,x).toNumber(),ee=q.minus(x),J=this.getRouteFeeRange(f),$=G=>this.poolService.buildSellTx(e,t,v.amountIn,G,f.map(({assetIn:s,assetOut:c,pool:_,poolId:h})=>({assetIn:s,assetOut:c,pool:_,poolId:h})));return{type:"Sell",amountIn:v.amountIn,amountOut:O.amountOut,spotPrice:k,tradeFee:ee,tradeFeePct:H,tradeFeeRange:J,priceImpactPct:E.toNumber(),swaps:f,toTx:$,toHuman(){return{type:"Sell",amountIn:ae(v.amountIn,v.assetInDecimals),amountOut:ae(O.amountOut,O.assetOutDecimals),spotPrice:ae(k,O.assetOutDecimals),tradeFee:ae(ee,O.assetOutDecimals),tradeFeePct:H,tradeFeeRange:J,priceImpactPct:E.toNumber(),swaps:f.map(G=>G.toHuman())}}}}calculateDelta0Y(e,t,r){let n=[];for(let o=0;o<t.length;o++){let a=t[o],u=r.get(a.poolId);if(u==null)throw new Error("Pool does not exit");let p=u.parsePair(a.assetIn,a.assetOut),f;o>0?f=n[o-1]:f=e;let v=u.calculateOutGivenIn(p,f);n.push(v)}return n[n.length-1]}async toSellSwaps(e,t,r){let n=[];for(let o=0;o<t.length;o++){let a=t[o],u=r.get(a.poolId);if(u==null)throw new Error("Pool does not exit");let p=u.parsePair(a.assetIn,a.assetOut),f;o>0?f=n[o-1].amountOut:f=de(D(e),p.decimalsIn).decimalPlaces(0,1);let v=await this.poolService.getPoolFees(p.assetOut,u),{amountOut:O,calculatedOut:N,feePct:F,errors:k}=u.validateAndSell(p,f,v),L=this.getPoolFeeRange(v),E=u.spotPriceOutGivenIn(p),q=f.shiftedBy(-1*p.decimalsIn).multipliedBy(E),x=Qe(N,q);n.push({...a,assetInDecimals:p.decimalsIn,assetOutDecimals:p.decimalsOut,amountIn:f,calculatedOut:N,amountOut:O,spotPrice:E,tradeFeePct:F,tradeFeeRange:L,priceImpactPct:x.toNumber(),errors:k,toHuman(){return{...a,amountIn:ae(f,p.decimalsIn),calculatedOut:ae(N,p.decimalsOut),amountOut:ae(O,p.decimalsOut),spotPrice:ae(E,p.decimalsOut),tradeFeePct:F,tradeFeeRange:L,priceImpactPct:x.toNumber(),errors:k}}})}return n}async getBestSpotPrice(e,t){let r=await super.getPools();if(r.length===0)throw new Error("No pools configured");let{poolsMap:n}=await super.validateTokenPair(e,t,r),o=super.getPaths(e,t,n,r);if(o.length===0)return Promise.resolve(void 0);let a=o.map(async N=>await this.toSellSwaps("1",N,n)),u=await Promise.all(a),p=this.findBestSellRoute(u),f=p.map(N=>N.spotPrice.shiftedBy(-1*N.assetOutDecimals)).reduce((N,F)=>N.multipliedBy(F)),v=p[p.length-1].assetOutDecimals;return{amount:de(f,v).decimalPlaces(0,1),decimals:v}}findBestBuyRoute(e){let t=e.sort((r,n)=>{let o=r[0].amountIn,a=n[0].amountIn;return o.isGreaterThan(a)?1:-1});return t.find(r=>r.every(n=>n.errors.length==0))||t[0]}async getBestBuy(e,t,r){let n=await super.getPools();if(n.length===0)throw new Error("No pools configured");let{poolsMap:o}=await super.validateTokenPair(e,t,n),a=super.getPaths(e,t,o,n);if(a.length===0)throw new Ye(e,t);let u=a.map(async G=>await this.toBuySwaps(r,G,o)),p=await Promise.all(u),f=this.findBestBuyRoute(p),v=f[f.length-1],O=f[0],N=this.isDirectTrade(f),F=f.map(G=>G.spotPrice.shiftedBy(-1*G.assetInDecimals)).reduce((G,s)=>G.multipliedBy(s)),k=de(F,O.assetInDecimals).decimalPlaces(0,1),L=v.amountOut.shiftedBy(-1*v.assetOutDecimals).multipliedBy(k),E;O.calculatedIn.isZero()?E=-100:E=Qe(L,O.calculatedIn).toNumber();let q=N?O.calculatedIn:this.calculateDelta0X(v.amountOut,f,o),x=O.amountIn,H=N?O.tradeFeePct:sn(q,x),ee=x.minus(q),J=this.getRouteFeeRange(f),$=G=>this.poolService.buildBuyTx(e,t,v.amountOut,G,f.map(({assetIn:s,assetOut:c,pool:_,poolId:h})=>({assetIn:s,assetOut:c,pool:_,poolId:h})));return{type:"Buy",amountOut:v.amountOut,amountIn:O.amountIn,spotPrice:k,tradeFee:ee,tradeFeePct:H,tradeFeeRange:J,priceImpactPct:E,swaps:f,toTx:$,toHuman(){return{type:"Buy",amountOut:ae(v.amountOut,v.assetOutDecimals),amountIn:ae(O.amountIn,O.assetInDecimals),spotPrice:ae(k,O.assetInDecimals),tradeFee:ae(ee,O.assetInDecimals),tradeFeePct:H,tradeFeeRange:J,priceImpactPct:E,swaps:f.map(G=>G.toHuman())}}}}calculateDelta0X(e,t,r){let n=[];for(let o=t.length-1;o>=0;o--){let a=t[o],u=r.get(a.poolId);if(u==null)throw new Error("Pool does not exit");let p=u.parsePair(a.assetIn,a.assetOut),f;o==t.length-1?f=e:f=n[0];let v=u.calculateInGivenOut(p,f);n.unshift(v)}return n[0]}async toBuySwaps(e,t,r){let n=[];for(let o=t.length-1;o>=0;o--){let a=t[o],u=r.get(a.poolId);if(u==null)throw new Error("Pool does not exit");let p=u.parsePair(a.assetIn,a.assetOut),f;o==t.length-1?f=de(D(e),p.decimalsOut).decimalPlaces(0,1):f=n[0].amountIn;let v=await this.poolService.getPoolFees(p.assetIn,u),{amountIn:O,calculatedIn:N,feePct:F,errors:k}=u.validateAndBuy(p,f,v),L=this.getPoolFeeRange(v),E=u.spotPriceInGivenOut(p),q=f.shiftedBy(-1*p.decimalsOut).multipliedBy(E),x;N.isZero()?x=-100:x=Qe(q,N).toNumber(),n.unshift({...a,assetInDecimals:p.decimalsIn,assetOutDecimals:p.decimalsOut,amountOut:f,calculatedIn:N,amountIn:O,spotPrice:E,tradeFeePct:F,tradeFeeRange:L,priceImpactPct:x,errors:k,toHuman(){return{...a,amountOut:ae(f,p.decimalsOut),calculatedIn:ae(N,p.decimalsIn),amountIn:ae(O,p.decimalsIn),spotPrice:ae(E,p.decimalsIn),tradeFeePct:F,tradeFeeRange:L,priceImpactPct:x,errors:k}}})}return n}};0&&(module.exports={AssetClient,AssetNotFound,BASILISK_PARACHAIN_ID,BalanceClient,BigNumber,CachingPoolService,DECIMAL_PLACES,DENOMINATOR,HYDRADX_PARACHAIN_ID,HYDRADX_SS58_PREFIX,INFINITY,LbpMath,LbpPool,ONE,OmniMath,OmniPool,PoolConfigNotFound,PoolError,PoolFactory,PoolNotFound,PoolService,PoolType,ProviderConfigNotFound,RUNTIME_DECIMALS,RouteNotFound,Router,SYSTEM_ASSET_DECIMALS,SYSTEM_ASSET_ID,StorageConfigNotFound,SubscriptionNotSupported,TradeRouter,TradeType,XykMath,XykPool,ZERO,bnum,calculateBuyFee,calculateDiffToAvg,calculateDiffToRef,calculateSellFee,scale});
|
|
1
|
+
"use strict";var Vn=Object.create;var yt=Object.defineProperty;var jn=Object.getOwnPropertyDescriptor;var Zn=Object.getOwnPropertyNames;var Qn=Object.getPrototypeOf,er=Object.prototype.hasOwnProperty;var xt=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),tr=(i,e)=>{for(var t in e)yt(i,t,{get:e[t],enumerable:!0})},vn=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Zn(e))!er.call(i,r)&&r!==t&&yt(i,r,{get:()=>e[r],enumerable:!(n=jn(e,r))||n.enumerable});return i};var vt=(i,e,t)=>(t=i!=null?Vn(Qn(i)):{},vn(e||!i||!i.__esModule?yt(t,"default",{value:i,enumerable:!0}):t,i)),nr=i=>vn(yt({},"__esModule",{value:!0}),i);var Tn=xt((mo,Je)=>{var sr={},R,{TextEncoder:ar,TextDecoder:lr}=require("util"),re=0,Bt=null;function Nt(){return(Bt===null||Bt.byteLength===0)&&(Bt=new Uint8Array(R.memory.buffer)),Bt}var At=new ar("utf-8"),cr=typeof At.encodeInto=="function"?function(i,e){return At.encodeInto(i,e)}:function(i,e){let t=At.encode(i);return e.set(t),{read:i.length,written:t.length}};function ae(i,e,t){if(t===void 0){let l=At.encode(i),u=e(l.length,1)>>>0;return Nt().subarray(u,u+l.length).set(l),re=l.length,u}let n=i.length,r=e(n,1)>>>0,o=Nt(),s=0;for(;s<n;s++){let l=i.charCodeAt(s);if(l>127)break;o[r+s]=l}if(s!==n){s!==0&&(i=i.slice(s)),r=t(r,n,n=s+i.length*3,1)>>>0;let l=Nt().subarray(r+s,r+n),u=cr(i,l);s+=u.written}return re=s,r}var Tt=null;function Me(){return(Tt===null||Tt.byteLength===0)&&(Tt=new Int32Array(R.memory.buffer)),Tt}var Bn=new lr("utf-8",{ignoreBOM:!0,fatal:!0});Bn.decode();function pt(i,e){return i=i>>>0,Bn.decode(Nt().subarray(i,i+e))}Je.exports.calculate_pool_trade_fee=function(i,e,t){let n,r;try{let l=R.__wbindgen_add_to_stack_pointer(-16),u=ae(i,R.__wbindgen_malloc,R.__wbindgen_realloc),p=re;R.calculate_pool_trade_fee(l,u,p,e,t);var o=Me()[l/4+0],s=Me()[l/4+1];return n=o,r=s,pt(o,s)}finally{R.__wbindgen_add_to_stack_pointer(16),R.__wbindgen_free(n,r,1)}};Je.exports.get_spot_price=function(i,e,t,n,r){let o,s;try{let p=R.__wbindgen_add_to_stack_pointer(-16),P=ae(i,R.__wbindgen_malloc,R.__wbindgen_realloc),S=re,T=ae(e,R.__wbindgen_malloc,R.__wbindgen_realloc),F=re,k=ae(t,R.__wbindgen_malloc,R.__wbindgen_realloc),L=re,E=ae(n,R.__wbindgen_malloc,R.__wbindgen_realloc),G=re,v=ae(r,R.__wbindgen_malloc,R.__wbindgen_realloc),q=re;R.get_spot_price(p,P,S,T,F,k,L,E,G,v,q);var l=Me()[p/4+0],u=Me()[p/4+1];return o=l,s=u,pt(l,u)}finally{R.__wbindgen_add_to_stack_pointer(16),R.__wbindgen_free(o,s,1)}};Je.exports.calculate_out_given_in=function(i,e,t,n,r){let o,s;try{let p=R.__wbindgen_add_to_stack_pointer(-16),P=ae(i,R.__wbindgen_malloc,R.__wbindgen_realloc),S=re,T=ae(e,R.__wbindgen_malloc,R.__wbindgen_realloc),F=re,k=ae(t,R.__wbindgen_malloc,R.__wbindgen_realloc),L=re,E=ae(n,R.__wbindgen_malloc,R.__wbindgen_realloc),G=re,v=ae(r,R.__wbindgen_malloc,R.__wbindgen_realloc),q=re;R.calculate_out_given_in(p,P,S,T,F,k,L,E,G,v,q);var l=Me()[p/4+0],u=Me()[p/4+1];return o=l,s=u,pt(l,u)}finally{R.__wbindgen_add_to_stack_pointer(16),R.__wbindgen_free(o,s,1)}};Je.exports.calculate_in_given_out=function(i,e,t,n,r){let o,s;try{let p=R.__wbindgen_add_to_stack_pointer(-16),P=ae(i,R.__wbindgen_malloc,R.__wbindgen_realloc),S=re,T=ae(e,R.__wbindgen_malloc,R.__wbindgen_realloc),F=re,k=ae(t,R.__wbindgen_malloc,R.__wbindgen_realloc),L=re,E=ae(n,R.__wbindgen_malloc,R.__wbindgen_realloc),G=re,v=ae(r,R.__wbindgen_malloc,R.__wbindgen_realloc),q=re;R.calculate_in_given_out(p,P,S,T,F,k,L,E,G,v,q);var l=Me()[p/4+0],u=Me()[p/4+1];return o=l,s=u,pt(l,u)}finally{R.__wbindgen_add_to_stack_pointer(16),R.__wbindgen_free(o,s,1)}};Je.exports.calculate_linear_weights=function(i,e,t,n,r){let o,s;try{let p=R.__wbindgen_add_to_stack_pointer(-16),P=ae(i,R.__wbindgen_malloc,R.__wbindgen_realloc),S=re,T=ae(e,R.__wbindgen_malloc,R.__wbindgen_realloc),F=re,k=ae(t,R.__wbindgen_malloc,R.__wbindgen_realloc),L=re,E=ae(n,R.__wbindgen_malloc,R.__wbindgen_realloc),G=re,v=ae(r,R.__wbindgen_malloc,R.__wbindgen_realloc),q=re;R.calculate_linear_weights(p,P,S,T,F,k,L,E,G,v,q);var l=Me()[p/4+0],u=Me()[p/4+1];return o=l,s=u,pt(l,u)}finally{R.__wbindgen_add_to_stack_pointer(16),R.__wbindgen_free(o,s,1)}};var ur=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),_r=require("fs").readFileSync(ur),dr=new WebAssembly.Module(_r),pr=new WebAssembly.Instance(dr,sr);R=pr.exports;Je.exports.__wasm=R});var kn=xt((Ji,ke)=>{var gr={},O,{TextEncoder:mr,TextDecoder:fr}=require("util"),U=0,Mt=null;function mt(){return(Mt===null||Mt.byteLength===0)&&(Mt=new Uint8Array(O.memory.buffer)),Mt}var Gt=new mr("utf-8"),hr=typeof Gt.encodeInto=="function"?function(i,e){return Gt.encodeInto(i,e)}:function(i,e){let t=Gt.encode(i);return e.set(t),{read:i.length,written:t.length}};function X(i,e,t){if(t===void 0){let l=Gt.encode(i),u=e(l.length,1)>>>0;return mt().subarray(u,u+l.length).set(l),U=l.length,u}let n=i.length,r=e(n,1)>>>0,o=mt(),s=0;for(;s<n;s++){let l=i.charCodeAt(s);if(l>127)break;o[r+s]=l}if(s!==n){s!==0&&(i=i.slice(s)),r=t(r,n,n=s+i.length*3,1)>>>0;let l=mt().subarray(r+s,r+n),u=hr(i,l);s+=u.written}return U=s,r}var Dt=null;function _e(){return(Dt===null||Dt.byteLength===0)&&(Dt=new Int32Array(O.memory.buffer)),Dt}var Fn=new fr("utf-8",{ignoreBOM:!0,fatal:!0});Fn.decode();function ze(i,e){return i=i>>>0,Fn.decode(mt().subarray(i,i+e))}ke.exports.calculate_pool_trade_fee=function(i,e,t){let n,r;try{let l=O.__wbindgen_add_to_stack_pointer(-16),u=X(i,O.__wbindgen_malloc,O.__wbindgen_realloc),p=U;O.calculate_pool_trade_fee(l,u,p,e,t);var o=_e()[l/4+0],s=_e()[l/4+1];return n=o,r=s,ze(o,s)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(n,r,1)}};ke.exports.calculate_out_given_in=function(i,e,t,n,r,o){let s,l;try{let P=O.__wbindgen_add_to_stack_pointer(-16),S=X(i,O.__wbindgen_malloc,O.__wbindgen_realloc),T=U,F=X(n,O.__wbindgen_malloc,O.__wbindgen_realloc),k=U,L=X(r,O.__wbindgen_malloc,O.__wbindgen_realloc),E=U,G=X(o,O.__wbindgen_malloc,O.__wbindgen_realloc),v=U;O.calculate_out_given_in(P,S,T,e,t,F,k,L,E,G,v);var u=_e()[P/4+0],p=_e()[P/4+1];return s=u,l=p,ze(u,p)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(s,l,1)}};ke.exports.calculate_in_given_out=function(i,e,t,n,r,o){let s,l;try{let P=O.__wbindgen_add_to_stack_pointer(-16),S=X(i,O.__wbindgen_malloc,O.__wbindgen_realloc),T=U,F=X(n,O.__wbindgen_malloc,O.__wbindgen_realloc),k=U,L=X(r,O.__wbindgen_malloc,O.__wbindgen_realloc),E=U,G=X(o,O.__wbindgen_malloc,O.__wbindgen_realloc),v=U;O.calculate_in_given_out(P,S,T,e,t,F,k,L,E,G,v);var u=_e()[P/4+0],p=_e()[P/4+1];return s=u,l=p,ze(u,p)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(s,l,1)}};ke.exports.calculate_amplification=function(i,e,t,n,r){let o,s;try{let p=O.__wbindgen_add_to_stack_pointer(-16),P=X(i,O.__wbindgen_malloc,O.__wbindgen_realloc),S=U,T=X(e,O.__wbindgen_malloc,O.__wbindgen_realloc),F=U,k=X(t,O.__wbindgen_malloc,O.__wbindgen_realloc),L=U,E=X(n,O.__wbindgen_malloc,O.__wbindgen_realloc),G=U,v=X(r,O.__wbindgen_malloc,O.__wbindgen_realloc),q=U;O.calculate_amplification(p,P,S,T,F,k,L,E,G,v,q);var l=_e()[p/4+0],u=_e()[p/4+1];return o=l,s=u,ze(l,u)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(o,s,1)}};ke.exports.calculate_shares=function(i,e,t,n,r){let o,s;try{let p=O.__wbindgen_add_to_stack_pointer(-16),P=X(i,O.__wbindgen_malloc,O.__wbindgen_realloc),S=U,T=X(e,O.__wbindgen_malloc,O.__wbindgen_realloc),F=U,k=X(t,O.__wbindgen_malloc,O.__wbindgen_realloc),L=U,E=X(n,O.__wbindgen_malloc,O.__wbindgen_realloc),G=U,v=X(r,O.__wbindgen_malloc,O.__wbindgen_realloc),q=U;O.calculate_shares(p,P,S,T,F,k,L,E,G,v,q);var l=_e()[p/4+0],u=_e()[p/4+1];return o=l,s=u,ze(l,u)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(o,s,1)}};ke.exports.calculate_shares_for_amount=function(i,e,t,n,r,o){let s,l;try{let P=O.__wbindgen_add_to_stack_pointer(-16),S=X(i,O.__wbindgen_malloc,O.__wbindgen_realloc),T=U,F=X(t,O.__wbindgen_malloc,O.__wbindgen_realloc),k=U,L=X(n,O.__wbindgen_malloc,O.__wbindgen_realloc),E=U,G=X(r,O.__wbindgen_malloc,O.__wbindgen_realloc),v=U,q=X(o,O.__wbindgen_malloc,O.__wbindgen_realloc),j=U;O.calculate_shares_for_amount(P,S,T,e,F,k,L,E,G,v,q,j);var u=_e()[P/4+0],p=_e()[P/4+1];return s=u,l=p,ze(u,p)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(s,l,1)}};ke.exports.calculate_add_one_asset=function(i,e,t,n,r,o){let s,l;try{let P=O.__wbindgen_add_to_stack_pointer(-16),S=X(i,O.__wbindgen_malloc,O.__wbindgen_realloc),T=U,F=X(e,O.__wbindgen_malloc,O.__wbindgen_realloc),k=U,L=X(n,O.__wbindgen_malloc,O.__wbindgen_realloc),E=U,G=X(r,O.__wbindgen_malloc,O.__wbindgen_realloc),v=U,q=X(o,O.__wbindgen_malloc,O.__wbindgen_realloc),j=U;O.calculate_add_one_asset(P,S,T,F,k,t,L,E,G,v,q,j);var u=_e()[P/4+0],p=_e()[P/4+1];return s=u,l=p,ze(u,p)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(s,l,1)}};function br(i,e){return i=i>>>0,mt().subarray(i/1,i/1+e)}ke.exports.pool_account_name=function(i){try{let r=O.__wbindgen_add_to_stack_pointer(-16);O.pool_account_name(r,i);var e=_e()[r/4+0],t=_e()[r/4+1],n=br(e,t).slice();return O.__wbindgen_free(e,t*1),n}finally{O.__wbindgen_add_to_stack_pointer(16)}};ke.exports.calculate_liquidity_out_one_asset=function(i,e,t,n,r,o){let s,l;try{let P=O.__wbindgen_add_to_stack_pointer(-16),S=X(i,O.__wbindgen_malloc,O.__wbindgen_realloc),T=U,F=X(e,O.__wbindgen_malloc,O.__wbindgen_realloc),k=U,L=X(n,O.__wbindgen_malloc,O.__wbindgen_realloc),E=U,G=X(r,O.__wbindgen_malloc,O.__wbindgen_realloc),v=U,q=X(o,O.__wbindgen_malloc,O.__wbindgen_realloc),j=U;O.calculate_liquidity_out_one_asset(P,S,T,F,k,t,L,E,G,v,q,j);var u=_e()[P/4+0],p=_e()[P/4+1];return s=u,l=p,ze(u,p)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(s,l,1)}};var wr=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),Pr=require("fs").readFileSync(wr),yr=new WebAssembly.Module(Pr),xr=new WebAssembly.Instance(yr,gr);O=xr.exports;ke.exports.__wasm=O});var Yn=xt((Ia,oe)=>{var Nr={},c,{TextEncoder:Ar,TextDecoder:Fr}=require("util"),B=0,Jt=null;function jt(){return(Jt===null||Jt.byteLength===0)&&(Jt=new Uint8Array(c.memory.buffer)),Jt}var Zt=new Ar("utf-8"),kr=typeof Zt.encodeInto=="function"?function(i,e){return Zt.encodeInto(i,e)}:function(i,e){let t=Zt.encode(i);return e.set(t),{read:i.length,written:t.length}};function N(i,e,t){if(t===void 0){let l=Zt.encode(i),u=e(l.length)>>>0;return jt().subarray(u,u+l.length).set(l),B=l.length,u}let n=i.length,r=e(n)>>>0,o=jt(),s=0;for(;s<n;s++){let l=i.charCodeAt(s);if(l>127)break;o[r+s]=l}if(s!==n){s!==0&&(i=i.slice(s)),r=t(r,n,n=s+i.length*3)>>>0;let l=jt().subarray(r+s,r+n),u=kr(i,l);s+=u.written}return B=s,r}var Vt=null;function J(){return(Vt===null||Vt.byteLength===0)&&(Vt=new Int32Array(c.memory.buffer)),Vt}var $n=new Fr("utf-8",{ignoreBOM:!0,fatal:!0});$n.decode();function me(i,e){return i=i>>>0,$n.decode(jt().subarray(i,i+e))}oe.exports.calculate_shares=function(i,e,t,n){let r,o;try{let u=c.__wbindgen_add_to_stack_pointer(-16),p=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),P=B,S=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),T=B,F=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B;c.calculate_shares(u,p,P,S,T,F,k,L,E);var s=J()[u/4+0],l=J()[u/4+1];return r=s,o=l,me(s,l)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(r,o)}};oe.exports.calculate_withdrawal_fee=function(i,e,t){let n,r;try{let l=c.__wbindgen_add_to_stack_pointer(-16),u=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),p=B,P=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),S=B,T=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),F=B;c.calculate_withdrawal_fee(l,u,p,P,S,T,F);var o=J()[l/4+0],s=J()[l/4+1];return n=o,r=s,me(o,s)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(n,r)}};oe.exports.calculate_liquidity_out=function(i,e,t,n,r,o,s,l){let u,p;try{let T=c.__wbindgen_add_to_stack_pointer(-16),F=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B,G=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),v=B,q=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),j=B,te=N(r,c.__wbindgen_malloc,c.__wbindgen_realloc),V=B,H=N(o,c.__wbindgen_malloc,c.__wbindgen_realloc),a=B,_=N(s,c.__wbindgen_malloc,c.__wbindgen_realloc),d=B,b=N(l,c.__wbindgen_malloc,c.__wbindgen_realloc),m=B;c.calculate_liquidity_out(T,F,k,L,E,G,v,q,j,te,V,H,a,_,d,b,m);var P=J()[T/4+0],S=J()[T/4+1];return u=P,p=S,me(P,S)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(u,p)}};oe.exports.calculate_liquidity_lrna_out=function(i,e,t,n,r,o,s,l){let u,p;try{let T=c.__wbindgen_add_to_stack_pointer(-16),F=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B,G=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),v=B,q=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),j=B,te=N(r,c.__wbindgen_malloc,c.__wbindgen_realloc),V=B,H=N(o,c.__wbindgen_malloc,c.__wbindgen_realloc),a=B,_=N(s,c.__wbindgen_malloc,c.__wbindgen_realloc),d=B,b=N(l,c.__wbindgen_malloc,c.__wbindgen_realloc),m=B;c.calculate_liquidity_lrna_out(T,F,k,L,E,G,v,q,j,te,V,H,a,_,d,b,m);var P=J()[T/4+0],S=J()[T/4+1];return u=P,p=S,me(P,S)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(u,p)}};oe.exports.recalculate_asset_fee=function(i,e,t,n,r,o,s,l,u){let p,P;try{let F=c.__wbindgen_add_to_stack_pointer(-16),k=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,v=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),q=B,j=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=B,V=N(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=B,a=N(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=B,d=N(s,c.__wbindgen_malloc,c.__wbindgen_realloc),b=B,m=N(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=B,y=N(u,c.__wbindgen_malloc,c.__wbindgen_realloc),g=B;c.recalculate_asset_fee(F,k,L,E,G,v,q,j,te,V,H,a,_,d,b,m,h,y,g);var S=J()[F/4+0],T=J()[F/4+1];return p=S,P=T,me(S,T)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(p,P)}};oe.exports.recalculate_protocol_fee=function(i,e,t,n,r,o,s,l,u){let p,P;try{let F=c.__wbindgen_add_to_stack_pointer(-16),k=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,v=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),q=B,j=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=B,V=N(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=B,a=N(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=B,d=N(s,c.__wbindgen_malloc,c.__wbindgen_realloc),b=B,m=N(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=B,y=N(u,c.__wbindgen_malloc,c.__wbindgen_realloc),g=B;c.recalculate_protocol_fee(F,k,L,E,G,v,q,j,te,V,H,a,_,d,b,m,h,y,g);var S=J()[F/4+0],T=J()[F/4+1];return p=S,P=T,me(S,T)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(p,P)}};oe.exports.calculate_out_given_in=function(i,e,t,n,r,o,s,l,u){let p,P;try{let F=c.__wbindgen_add_to_stack_pointer(-16),k=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,v=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),q=B,j=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=B,V=N(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=B,a=N(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=B,d=N(s,c.__wbindgen_malloc,c.__wbindgen_realloc),b=B,m=N(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=B,y=N(u,c.__wbindgen_malloc,c.__wbindgen_realloc),g=B;c.calculate_out_given_in(F,k,L,E,G,v,q,j,te,V,H,a,_,d,b,m,h,y,g);var S=J()[F/4+0],T=J()[F/4+1];return p=S,P=T,me(S,T)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(p,P)}};oe.exports.calculate_out_given_lrna_in=function(i,e,t,n,r){let o,s;try{let p=c.__wbindgen_add_to_stack_pointer(-16),P=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),S=B,T=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),F=B,k=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,v=N(r,c.__wbindgen_malloc,c.__wbindgen_realloc),q=B;c.calculate_out_given_lrna_in(p,P,S,T,F,k,L,E,G,v,q);var l=J()[p/4+0],u=J()[p/4+1];return o=l,s=u,me(l,u)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(o,s)}};oe.exports.calculate_in_given_out=function(i,e,t,n,r,o,s,l,u){let p,P;try{let F=c.__wbindgen_add_to_stack_pointer(-16),k=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,v=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),q=B,j=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=B,V=N(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=B,a=N(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=B,d=N(s,c.__wbindgen_malloc,c.__wbindgen_realloc),b=B,m=N(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=B,y=N(u,c.__wbindgen_malloc,c.__wbindgen_realloc),g=B;c.calculate_in_given_out(F,k,L,E,G,v,q,j,te,V,H,a,_,d,b,m,h,y,g);var S=J()[F/4+0],T=J()[F/4+1];return p=S,P=T,me(S,T)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(p,P)}};oe.exports.calculate_lrna_in_given_out=function(i,e,t,n,r){let o,s;try{let p=c.__wbindgen_add_to_stack_pointer(-16),P=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),S=B,T=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),F=B,k=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,v=N(r,c.__wbindgen_malloc,c.__wbindgen_realloc),q=B;c.calculate_lrna_in_given_out(p,P,S,T,F,k,L,E,G,v,q);var l=J()[p/4+0],u=J()[p/4+1];return o=l,s=u,me(l,u)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(o,s)}};oe.exports.calculate_spot_price=function(i,e,t,n){let r,o;try{let u=c.__wbindgen_add_to_stack_pointer(-16),p=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),P=B,S=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),T=B,F=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B;c.calculate_spot_price(u,p,P,S,T,F,k,L,E);var s=J()[u/4+0],l=J()[u/4+1];return r=s,o=l,me(s,l)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(r,o)}};oe.exports.calculate_lrna_spot_price=function(i,e){let t,n;try{let s=c.__wbindgen_add_to_stack_pointer(-16),l=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),u=B,p=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),P=B;c.calculate_lrna_spot_price(s,l,u,p,P);var r=J()[s/4+0],o=J()[s/4+1];return t=r,n=o,me(r,o)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(t,n)}};oe.exports.calculate_cap_difference=function(i,e,t,n){let r,o;try{let u=c.__wbindgen_add_to_stack_pointer(-16),p=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),P=B,S=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),T=B,F=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B;c.calculate_cap_difference(u,p,P,S,T,F,k,L,E);var s=J()[u/4+0],l=J()[u/4+1];return r=s,o=l,me(s,l)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(r,o)}};oe.exports.verify_asset_cap=function(i,e,t,n){let r=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),o=B,s=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),l=B,u=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),p=B,P=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),S=B;return c.verify_asset_cap(r,o,s,l,u,p,P,S)!==0};oe.exports.calculate_tvl_cap_difference=function(i,e,t,n,r,o){let s,l;try{let P=c.__wbindgen_add_to_stack_pointer(-16),S=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),T=B,F=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B,G=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),v=B,q=N(r,c.__wbindgen_malloc,c.__wbindgen_realloc),j=B,te=N(o,c.__wbindgen_malloc,c.__wbindgen_realloc),V=B;c.calculate_tvl_cap_difference(P,S,T,F,k,L,E,G,v,q,j,te,V);var u=J()[P/4+0],p=J()[P/4+1];return s=u,l=p,me(u,p)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(s,l)}};oe.exports.calculate_liquidity_hub_in=function(i,e,t,n){let r,o;try{let u=c.__wbindgen_add_to_stack_pointer(-16),p=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),P=B,S=N(e,c.__wbindgen_malloc,c.__wbindgen_realloc),T=B,F=N(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=N(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B;c.calculate_liquidity_hub_in(u,p,P,S,T,F,k,L,E);var s=J()[u/4+0],l=J()[u/4+1];return r=s,o=l,me(s,l)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(r,o)}};oe.exports.is_sell_allowed=function(i){return c.is_sell_allowed(i)!==0};oe.exports.is_buy_allowed=function(i){return c.is_buy_allowed(i)!==0};oe.exports.is_add_liquidity_allowed=function(i){return c.is_add_liquidity_allowed(i)!==0};oe.exports.is_remove_liquidity_allowed=function(i){return c.is_remove_liquidity_allowed(i)!==0};oe.exports.calculate_pool_trade_fee=function(i,e,t){let n,r;try{let l=c.__wbindgen_add_to_stack_pointer(-16),u=N(i,c.__wbindgen_malloc,c.__wbindgen_realloc),p=B;c.calculate_pool_trade_fee(l,u,p,e,t);var o=J()[l/4+0],s=J()[l/4+1];return n=o,r=s,me(o,s)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(n,r)}};var Er=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),Rr=require("fs").readFileSync(Er),Lr=new WebAssembly.Module(Rr),Mr=new WebAssembly.Instance(Lr,Nr);c=Mr.exports;oe.exports.__wasm=c});var Jn=xt((rl,qe)=>{var Dr={},A,{TextEncoder:Gr,TextDecoder:Cr}=require("util"),Q=0,Qt=null;function tn(){return(Qt===null||Qt.buffer!==A.memory.buffer)&&(Qt=new Uint8Array(A.memory.buffer)),Qt}var nn=new Gr("utf-8"),qr=typeof nn.encodeInto=="function"?function(i,e){return nn.encodeInto(i,e)}:function(i,e){let t=nn.encode(i);return e.set(t),{read:i.length,written:t.length}};function ee(i,e,t){if(t===void 0){let l=nn.encode(i),u=e(l.length);return tn().subarray(u,u+l.length).set(l),Q=l.length,u}let n=i.length,r=e(n),o=tn(),s=0;for(;s<n;s++){let l=i.charCodeAt(s);if(l>127)break;o[r+s]=l}if(s!==n){s!==0&&(i=i.slice(s)),r=t(r,n,n=s+i.length*3);let l=tn().subarray(r+s,r+n),u=qr(i,l);s+=u.written}return Q=s,r}var en=null;function fe(){return(en===null||en.buffer!==A.memory.buffer)&&(en=new Int32Array(A.memory.buffer)),en}var Kn=new Cr("utf-8",{ignoreBOM:!0,fatal:!0});Kn.decode();function Ye(i,e){return Kn.decode(tn().subarray(i,i+e))}qe.exports.calculate_pool_trade_fee=function(i,e,t){try{let o=A.__wbindgen_add_to_stack_pointer(-16),s=ee(i,A.__wbindgen_malloc,A.__wbindgen_realloc),l=Q;A.calculate_pool_trade_fee(o,s,l,e,t);var n=fe()[o/4+0],r=fe()[o/4+1];return Ye(n,r)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(n,r)}};qe.exports.get_spot_price=function(i,e,t){try{let o=A.__wbindgen_add_to_stack_pointer(-16),s=ee(i,A.__wbindgen_malloc,A.__wbindgen_realloc),l=Q,u=ee(e,A.__wbindgen_malloc,A.__wbindgen_realloc),p=Q,P=ee(t,A.__wbindgen_malloc,A.__wbindgen_realloc),S=Q;A.get_spot_price(o,s,l,u,p,P,S);var n=fe()[o/4+0],r=fe()[o/4+1];return Ye(n,r)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(n,r)}};qe.exports.calculate_out_given_in=function(i,e,t){try{let o=A.__wbindgen_add_to_stack_pointer(-16),s=ee(i,A.__wbindgen_malloc,A.__wbindgen_realloc),l=Q,u=ee(e,A.__wbindgen_malloc,A.__wbindgen_realloc),p=Q,P=ee(t,A.__wbindgen_malloc,A.__wbindgen_realloc),S=Q;A.calculate_out_given_in(o,s,l,u,p,P,S);var n=fe()[o/4+0],r=fe()[o/4+1];return Ye(n,r)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(n,r)}};qe.exports.calculate_in_given_out=function(i,e,t){try{let o=A.__wbindgen_add_to_stack_pointer(-16),s=ee(i,A.__wbindgen_malloc,A.__wbindgen_realloc),l=Q,u=ee(e,A.__wbindgen_malloc,A.__wbindgen_realloc),p=Q,P=ee(t,A.__wbindgen_malloc,A.__wbindgen_realloc),S=Q;A.calculate_in_given_out(o,s,l,u,p,P,S);var n=fe()[o/4+0],r=fe()[o/4+1];return Ye(n,r)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(n,r)}};qe.exports.calculate_liquidity_in=function(i,e,t){try{let o=A.__wbindgen_add_to_stack_pointer(-16),s=ee(i,A.__wbindgen_malloc,A.__wbindgen_realloc),l=Q,u=ee(e,A.__wbindgen_malloc,A.__wbindgen_realloc),p=Q,P=ee(t,A.__wbindgen_malloc,A.__wbindgen_realloc),S=Q;A.calculate_liquidity_in(o,s,l,u,p,P,S);var n=fe()[o/4+0],r=fe()[o/4+1];return Ye(n,r)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(n,r)}};qe.exports.calculate_shares=function(i,e,t){try{let o=A.__wbindgen_add_to_stack_pointer(-16),s=ee(i,A.__wbindgen_malloc,A.__wbindgen_realloc),l=Q,u=ee(e,A.__wbindgen_malloc,A.__wbindgen_realloc),p=Q,P=ee(t,A.__wbindgen_malloc,A.__wbindgen_realloc),S=Q;A.calculate_shares(o,s,l,u,p,P,S);var n=fe()[o/4+0],r=fe()[o/4+1];return Ye(n,r)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(n,r)}};qe.exports.calculate_liquidity_out_asset_a=function(i,e,t,n){try{let s=A.__wbindgen_add_to_stack_pointer(-16),l=ee(i,A.__wbindgen_malloc,A.__wbindgen_realloc),u=Q,p=ee(e,A.__wbindgen_malloc,A.__wbindgen_realloc),P=Q,S=ee(t,A.__wbindgen_malloc,A.__wbindgen_realloc),T=Q,F=ee(n,A.__wbindgen_malloc,A.__wbindgen_realloc),k=Q;A.calculate_liquidity_out_asset_a(s,l,u,p,P,S,T,F,k);var r=fe()[s/4+0],o=fe()[s/4+1];return Ye(r,o)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(r,o)}};qe.exports.calculate_liquidity_out_asset_b=function(i,e,t,n){try{let s=A.__wbindgen_add_to_stack_pointer(-16),l=ee(i,A.__wbindgen_malloc,A.__wbindgen_realloc),u=Q,p=ee(e,A.__wbindgen_malloc,A.__wbindgen_realloc),P=Q,S=ee(t,A.__wbindgen_malloc,A.__wbindgen_realloc),T=Q,F=ee(n,A.__wbindgen_malloc,A.__wbindgen_realloc),k=Q;A.calculate_liquidity_out_asset_b(s,l,u,p,P,S,T,F,k);var r=fe()[s/4+0],o=fe()[s/4+1];return Ye(r,o)}finally{A.__wbindgen_add_to_stack_pointer(16),A.__wbindgen_free(r,o)}};var Hr=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),Wr=require("fs").readFileSync(Hr),Ur=new WebAssembly.Module(Wr),zr=new WebAssembly.Instance(Ur,Dr);A=zr.exports;qe.exports.__wasm=A});var $r={};tr($r,{AssetClient:()=>et,AssetNotFound:()=>pn,BASILISK_PARACHAIN_ID:()=>wo,BalanceClient:()=>tt,BigNumber:()=>Le,CachingPoolService:()=>Kt,DECIMAL_PLACES:()=>In,DENOMINATOR:()=>_n,HYDRADX_PARACHAIN_ID:()=>bo,HYDRADX_SS58_PREFIX:()=>Ft,INFINITY:()=>ir,LbpMath:()=>Te,LbpPool:()=>Xe,ONE:()=>ye,OmniMath:()=>ve,OmniPool:()=>$e,PoolConfigNotFound:()=>dn,PoolError:()=>Ze,PoolFactory:()=>lt,PoolNotFound:()=>ft,PoolService:()=>rt,PoolType:()=>Be,ProviderConfigNotFound:()=>fn,RUNTIME_DECIMALS:()=>gt,RouteNotFound:()=>nt,Router:()=>Ve,SYSTEM_ASSET_DECIMALS:()=>ho,SYSTEM_ASSET_ID:()=>Qe,StorageConfigNotFound:()=>gn,SubscriptionNotSupported:()=>mn,TradeRouter:()=>wt,TradeType:()=>un,XykMath:()=>He,XykPool:()=>Ke,ZERO:()=>z,bnum:()=>D,calculateBuyFee:()=>xn,calculateDiffToAvg:()=>Xr,calculateDiffToRef:()=>ct,calculateSellFee:()=>yn,scale:()=>ue});module.exports=nr($r);var St=class{constructor(e=1/0){this.capacity=e}storage=[];enqueue(e){if(this.size()===this.capacity)throw Error("Queue has reached max capacity, you cannot add more items");this.storage.push(e)}dequeue(){return this.storage.shift()}size(){return this.storage.length}};var rr=4,_t=class{isNotVisited(e,t){let n=!0;return t.forEach(r=>{(r[0]===e[0]||r[1]===e[1])&&(n=!1)}),n}findPaths(e,t,n){let r=[],o=new St,s=[];for(s.push([t,""]),o.enqueue(s);o.size()>0;){let l=o.dequeue();if(l==null||l.length>rr)return r;let u=l[l.length-1];(n===null||u[0]===n)&&r.push(l),e[u[0]].forEach(P=>{if(this.isNotVisited(P,l)){let S=[...l];S.push(P),o.enqueue(S)}})}return r}buildAndPopulateGraph(e,t){let n=e[e.length-1],r=[];for(let o=0;o<=parseInt(n);o++)r.push([]);for(let[o,s,l]of t){let u=parseInt(s),p=parseInt(l);r[u].push([p,o])}return r}};function sn(i){let e={};for(let t of i){let n=t.tokens.length;for(let r=0;r<n;r++){e[t.tokens[r].id]||(e[t.tokens[r].id]=[]);for(let o=0;o<n;o++){if(r==o)continue;let s=[t.address,t.tokens[r].id,t.tokens[o].id];e[t.tokens[r].id].push(s)}}}return e}var dt=class{getProposals(e,t,n){let r=sn(n),o=Object.keys(r),s=o.map(P=>r[P]).flat(),l=new _t,u=l.buildAndPopulateGraph(o,s),p=l.findPaths(u,parseInt(e),t?parseInt(t):null);return this.parsePaths(p)}parsePaths(e){let t=[];for(let n of e){let r=[];for(let o=0;o<n.length;o++){let s=n[o],l=n[o+1];if(l==null)break;r.push(this.toEdge(s,l))}t.push(r)}return t}toEdge(e,t){return[t[1],e[0].toString(),t[0].toString()]}};var or=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,an=Math.ceil,Re=Math.floor,we="[BigNumber Error] ",Sn=we+"Number primitive has more than 15 significant digits: ",Ae=1e14,W=14,ln=9007199254740991,cn=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Ue=1e7,ce=1e9;function On(i){var e,t,n,r=v.prototype={constructor:v,toString:null,valueOf:null},o=new v(1),s=20,l=4,u=-7,p=21,P=-1e7,S=1e7,T=!1,F=1,k=0,L={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},E="0123456789abcdefghijklmnopqrstuvwxyz",G=!0;function v(a,_){var d,b,m,h,y,g,f,x,w=this;if(!(w instanceof v))return new v(a,_);if(_==null){if(a&&a._isBigNumber===!0){w.s=a.s,!a.c||a.e>S?w.c=w.e=null:a.e<P?w.c=[w.e=0]:(w.e=a.e,w.c=a.c.slice());return}if((g=typeof a=="number")&&a*0==0){if(w.s=1/a<0?(a=-a,-1):1,a===~~a){for(h=0,y=a;y>=10;y/=10,h++);h>S?w.c=w.e=null:(w.e=h,w.c=[a]);return}x=String(a)}else{if(!or.test(x=String(a)))return n(w,x,g);w.s=x.charCodeAt(0)==45?(x=x.slice(1),-1):1}(h=x.indexOf("."))>-1&&(x=x.replace(".","")),(y=x.search(/e/i))>0?(h<0&&(h=y),h+=+x.slice(y+1),x=x.substring(0,y)):h<0&&(h=x.length)}else{if(ne(_,2,E.length,"Base"),_==10&&G)return w=new v(a),V(w,s+w.e+1,l);if(x=String(a),g=typeof a=="number"){if(a*0!=0)return n(w,x,g,_);if(w.s=1/a<0?(x=x.slice(1),-1):1,v.DEBUG&&x.replace(/^0\.0*|\./,"").length>15)throw Error(Sn+a)}else w.s=x.charCodeAt(0)===45?(x=x.slice(1),-1):1;for(d=E.slice(0,_),h=y=0,f=x.length;y<f;y++)if(d.indexOf(b=x.charAt(y))<0){if(b=="."){if(y>h){h=f;continue}}else if(!m&&(x==x.toUpperCase()&&(x=x.toLowerCase())||x==x.toLowerCase()&&(x=x.toUpperCase()))){m=!0,y=-1,h=0;continue}return n(w,String(a),g,_)}g=!1,x=t(x,_,10,w.s),(h=x.indexOf("."))>-1?x=x.replace(".",""):h=x.length}for(y=0;x.charCodeAt(y)===48;y++);for(f=x.length;x.charCodeAt(--f)===48;);if(x=x.slice(y,++f)){if(f-=y,g&&v.DEBUG&&f>15&&(a>ln||a!==Re(a)))throw Error(Sn+w.s*a);if((h=h-y-1)>S)w.c=w.e=null;else if(h<P)w.c=[w.e=0];else{if(w.e=h,w.c=[],y=(h+1)%W,h<0&&(y+=W),y<f){for(y&&w.c.push(+x.slice(0,y)),f-=W;y<f;)w.c.push(+x.slice(y,y+=W));y=W-(x=x.slice(y)).length}else y-=f;for(;y--;x+="0");w.c.push(+x)}}else w.c=[w.e=0]}v.clone=On,v.ROUND_UP=0,v.ROUND_DOWN=1,v.ROUND_CEIL=2,v.ROUND_FLOOR=3,v.ROUND_HALF_UP=4,v.ROUND_HALF_DOWN=5,v.ROUND_HALF_EVEN=6,v.ROUND_HALF_CEIL=7,v.ROUND_HALF_FLOOR=8,v.EUCLID=9,v.config=v.set=function(a){var _,d;if(a!=null)if(typeof a=="object"){if(a.hasOwnProperty(_="DECIMAL_PLACES")&&(d=a[_],ne(d,0,ce,_),s=d),a.hasOwnProperty(_="ROUNDING_MODE")&&(d=a[_],ne(d,0,8,_),l=d),a.hasOwnProperty(_="EXPONENTIAL_AT")&&(d=a[_],d&&d.pop?(ne(d[0],-ce,0,_),ne(d[1],0,ce,_),u=d[0],p=d[1]):(ne(d,-ce,ce,_),u=-(p=d<0?-d:d))),a.hasOwnProperty(_="RANGE"))if(d=a[_],d&&d.pop)ne(d[0],-ce,-1,_),ne(d[1],1,ce,_),P=d[0],S=d[1];else if(ne(d,-ce,ce,_),d)P=-(S=d<0?-d:d);else throw Error(we+_+" cannot be zero: "+d);if(a.hasOwnProperty(_="CRYPTO"))if(d=a[_],d===!!d)if(d)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))T=d;else throw T=!d,Error(we+"crypto unavailable");else T=d;else throw Error(we+_+" not true or false: "+d);if(a.hasOwnProperty(_="MODULO_MODE")&&(d=a[_],ne(d,0,9,_),F=d),a.hasOwnProperty(_="POW_PRECISION")&&(d=a[_],ne(d,0,ce,_),k=d),a.hasOwnProperty(_="FORMAT"))if(d=a[_],typeof d=="object")L=d;else throw Error(we+_+" not an object: "+d);if(a.hasOwnProperty(_="ALPHABET"))if(d=a[_],typeof d=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(d))G=d.slice(0,10)=="0123456789",E=d;else throw Error(we+_+" invalid: "+d)}else throw Error(we+"Object expected: "+a);return{DECIMAL_PLACES:s,ROUNDING_MODE:l,EXPONENTIAL_AT:[u,p],RANGE:[P,S],CRYPTO:T,MODULO_MODE:F,POW_PRECISION:k,FORMAT:L,ALPHABET:E}},v.isBigNumber=function(a){if(!a||a._isBigNumber!==!0)return!1;if(!v.DEBUG)return!0;var _,d,b=a.c,m=a.e,h=a.s;e:if({}.toString.call(b)=="[object Array]"){if((h===1||h===-1)&&m>=-ce&&m<=ce&&m===Re(m)){if(b[0]===0){if(m===0&&b.length===1)return!0;break e}if(_=(m+1)%W,_<1&&(_+=W),String(b[0]).length==_){for(_=0;_<b.length;_++)if(d=b[_],d<0||d>=Ae||d!==Re(d))break e;if(d!==0)return!0}}}else if(b===null&&m===null&&(h===null||h===1||h===-1))return!0;throw Error(we+"Invalid BigNumber: "+a)},v.maximum=v.max=function(){return j(arguments,r.lt)},v.minimum=v.min=function(){return j(arguments,r.gt)},v.random=function(){var a=9007199254740992,_=Math.random()*a&2097151?function(){return Re(Math.random()*a)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(d){var b,m,h,y,g,f=0,x=[],w=new v(o);if(d==null?d=s:ne(d,0,ce),y=an(d/W),T)if(crypto.getRandomValues){for(b=crypto.getRandomValues(new Uint32Array(y*=2));f<y;)g=b[f]*131072+(b[f+1]>>>11),g>=9e15?(m=crypto.getRandomValues(new Uint32Array(2)),b[f]=m[0],b[f+1]=m[1]):(x.push(g%1e14),f+=2);f=y/2}else if(crypto.randomBytes){for(b=crypto.randomBytes(y*=7);f<y;)g=(b[f]&31)*281474976710656+b[f+1]*1099511627776+b[f+2]*4294967296+b[f+3]*16777216+(b[f+4]<<16)+(b[f+5]<<8)+b[f+6],g>=9e15?crypto.randomBytes(7).copy(b,f):(x.push(g%1e14),f+=7);f=y/7}else throw T=!1,Error(we+"crypto unavailable");if(!T)for(;f<y;)g=_(),g<9e15&&(x[f++]=g%1e14);for(y=x[--f],d%=W,y&&d&&(g=cn[W-d],x[f]=Re(y/g)*g);x[f]===0;x.pop(),f--);if(f<0)x=[h=0];else{for(h=-1;x[0]===0;x.splice(0,1),h-=W);for(f=1,g=x[0];g>=10;g/=10,f++);f<W&&(h-=W-f)}return w.e=h,w.c=x,w}}(),v.sum=function(){for(var a=1,_=arguments,d=new v(_[0]);a<_.length;)d=d.plus(_[a++]);return d},t=function(){var a="0123456789";function _(d,b,m,h){for(var y,g=[0],f,x=0,w=d.length;x<w;){for(f=g.length;f--;g[f]*=b);for(g[0]+=h.indexOf(d.charAt(x++)),y=0;y<g.length;y++)g[y]>m-1&&(g[y+1]==null&&(g[y+1]=0),g[y+1]+=g[y]/m|0,g[y]%=m)}return g.reverse()}return function(d,b,m,h,y){var g,f,x,w,I,M,C,K,ie=d.indexOf("."),le=s,Y=l;for(ie>=0&&(w=k,k=0,d=d.replace(".",""),K=new v(b),M=K.pow(d.length-ie),k=w,K.c=_(We(Oe(M.c),M.e,"0"),10,m,a),K.e=K.c.length),C=_(d,b,m,y?(g=E,a):(g=a,E)),x=w=C.length;C[--w]==0;C.pop());if(!C[0])return g.charAt(0);if(ie<0?--x:(M.c=C,M.e=x,M.s=h,M=e(M,K,le,Y,m),C=M.c,I=M.r,x=M.e),f=x+le+1,ie=C[f],w=m/2,I=I||f<0||C[f+1]!=null,I=Y<4?(ie!=null||I)&&(Y==0||Y==(M.s<0?3:2)):ie>w||ie==w&&(Y==4||I||Y==6&&C[f-1]&1||Y==(M.s<0?8:7)),f<1||!C[0])d=I?We(g.charAt(1),-le,g.charAt(0)):g.charAt(0);else{if(C.length=f,I)for(--m;++C[--f]>m;)C[f]=0,f||(++x,C=[1].concat(C));for(w=C.length;!C[--w];);for(ie=0,d="";ie<=w;d+=g.charAt(C[ie++]));d=We(d,x,g.charAt(0))}return d}}(),e=function(){function a(b,m,h){var y,g,f,x,w=0,I=b.length,M=m%Ue,C=m/Ue|0;for(b=b.slice();I--;)f=b[I]%Ue,x=b[I]/Ue|0,y=C*f+x*M,g=M*f+y%Ue*Ue+w,w=(g/h|0)+(y/Ue|0)+C*x,b[I]=g%h;return w&&(b=[w].concat(b)),b}function _(b,m,h,y){var g,f;if(h!=y)f=h>y?1:-1;else for(g=f=0;g<h;g++)if(b[g]!=m[g]){f=b[g]>m[g]?1:-1;break}return f}function d(b,m,h,y){for(var g=0;h--;)b[h]-=g,g=b[h]<m[h]?1:0,b[h]=g*y+b[h]-m[h];for(;!b[0]&&b.length>1;b.splice(0,1));}return function(b,m,h,y,g){var f,x,w,I,M,C,K,ie,le,Y,Z,ge,Pt,rn,on,Ee,ut,Se=b.s==m.s?1:-1,be=b.c,se=m.c;if(!be||!be[0]||!se||!se[0])return new v(!b.s||!m.s||(be?se&&be[0]==se[0]:!se)?NaN:be&&be[0]==0||!se?Se*0:Se/0);for(ie=new v(Se),le=ie.c=[],x=b.e-m.e,Se=h+x+1,g||(g=Ae,x=Ie(b.e/W)-Ie(m.e/W),Se=Se/W|0),w=0;se[w]==(be[w]||0);w++);if(se[w]>(be[w]||0)&&x--,Se<0)le.push(1),I=!0;else{for(rn=be.length,Ee=se.length,w=0,Se+=2,M=Re(g/(se[0]+1)),M>1&&(se=a(se,M,g),be=a(be,M,g),Ee=se.length,rn=be.length),Pt=Ee,Y=be.slice(0,Ee),Z=Y.length;Z<Ee;Y[Z++]=0);ut=se.slice(),ut=[0].concat(ut),on=se[0],se[1]>=g/2&&on++;do{if(M=0,f=_(se,Y,Ee,Z),f<0){if(ge=Y[0],Ee!=Z&&(ge=ge*g+(Y[1]||0)),M=Re(ge/on),M>1)for(M>=g&&(M=g-1),C=a(se,M,g),K=C.length,Z=Y.length;_(C,Y,K,Z)==1;)M--,d(C,Ee<K?ut:se,K,g),K=C.length,f=1;else M==0&&(f=M=1),C=se.slice(),K=C.length;if(K<Z&&(C=[0].concat(C)),d(Y,C,Z,g),Z=Y.length,f==-1)for(;_(se,Y,Ee,Z)<1;)M++,d(Y,Ee<Z?ut:se,Z,g),Z=Y.length}else f===0&&(M++,Y=[0]);le[w++]=M,Y[0]?Y[Z++]=be[Pt]||0:(Y=[be[Pt]],Z=1)}while((Pt++<rn||Y[0]!=null)&&Se--);I=Y[0]!=null,le[0]||le.splice(0,1)}if(g==Ae){for(w=1,Se=le[0];Se>=10;Se/=10,w++);V(ie,h+(ie.e=w+x*W-1)+1,y,I)}else ie.e=x,ie.r=+I;return ie}}();function q(a,_,d,b){var m,h,y,g,f;if(d==null?d=l:ne(d,0,8),!a.c)return a.toString();if(m=a.c[0],y=a.e,_==null)f=Oe(a.c),f=b==1||b==2&&(y<=u||y>=p)?It(f,y):We(f,y,"0");else if(a=V(new v(a),_,d),h=a.e,f=Oe(a.c),g=f.length,b==1||b==2&&(_<=h||h<=u)){for(;g<_;f+="0",g++);f=It(f,h)}else if(_-=y,f=We(f,h,"0"),h+1>g){if(--_>0)for(f+=".";_--;f+="0");}else if(_+=h-g,_>0)for(h+1==g&&(f+=".");_--;f+="0");return a.s<0&&m?"-"+f:f}function j(a,_){for(var d,b=1,m=new v(a[0]);b<a.length;b++)if(d=new v(a[b]),d.s)_.call(m,d)&&(m=d);else{m=d;break}return m}function te(a,_,d){for(var b=1,m=_.length;!_[--m];_.pop());for(m=_[0];m>=10;m/=10,b++);return(d=b+d*W-1)>S?a.c=a.e=null:d<P?a.c=[a.e=0]:(a.e=d,a.c=_),a}n=function(){var a=/^(-?)0([xbo])(?=\w[\w.]*$)/i,_=/^([^.]+)\.$/,d=/^\.([^.]+)$/,b=/^-?(Infinity|NaN)$/,m=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(h,y,g,f){var x,w=g?y:y.replace(m,"");if(b.test(w))h.s=isNaN(w)?null:w<0?-1:1;else{if(!g&&(w=w.replace(a,function(I,M,C){return x=(C=C.toLowerCase())=="x"?16:C=="b"?2:8,!f||f==x?M:I}),f&&(x=f,w=w.replace(_,"$1").replace(d,"0.$1")),y!=w))return new v(w,x);if(v.DEBUG)throw Error(we+"Not a"+(f?" base "+f:"")+" number: "+y);h.s=null}h.c=h.e=null}}();function V(a,_,d,b){var m,h,y,g,f,x,w,I=a.c,M=cn;if(I){e:{for(m=1,g=I[0];g>=10;g/=10,m++);if(h=_-m,h<0)h+=W,y=_,f=I[x=0],w=f/M[m-y-1]%10|0;else if(x=an((h+1)/W),x>=I.length)if(b){for(;I.length<=x;I.push(0));f=w=0,m=1,h%=W,y=h-W+1}else break e;else{for(f=g=I[x],m=1;g>=10;g/=10,m++);h%=W,y=h-W+m,w=y<0?0:f/M[m-y-1]%10|0}if(b=b||_<0||I[x+1]!=null||(y<0?f:f%M[m-y-1]),b=d<4?(w||b)&&(d==0||d==(a.s<0?3:2)):w>5||w==5&&(d==4||b||d==6&&(h>0?y>0?f/M[m-y]:0:I[x-1])%10&1||d==(a.s<0?8:7)),_<1||!I[0])return I.length=0,b?(_-=a.e+1,I[0]=M[(W-_%W)%W],a.e=-_||0):I[0]=a.e=0,a;if(h==0?(I.length=x,g=1,x--):(I.length=x+1,g=M[W-h],I[x]=y>0?Re(f/M[m-y]%M[y])*g:0),b)for(;;)if(x==0){for(h=1,y=I[0];y>=10;y/=10,h++);for(y=I[0]+=g,g=1;y>=10;y/=10,g++);h!=g&&(a.e++,I[0]==Ae&&(I[0]=1));break}else{if(I[x]+=g,I[x]!=Ae)break;I[x--]=0,g=1}for(h=I.length;I[--h]===0;I.pop());}a.e>S?a.c=a.e=null:a.e<P&&(a.c=[a.e=0])}return a}function H(a){var _,d=a.e;return d===null?a.toString():(_=Oe(a.c),_=d<=u||d>=p?It(_,d):We(_,d,"0"),a.s<0?"-"+_:_)}return r.absoluteValue=r.abs=function(){var a=new v(this);return a.s<0&&(a.s=1),a},r.comparedTo=function(a,_){return je(this,new v(a,_))},r.decimalPlaces=r.dp=function(a,_){var d,b,m,h=this;if(a!=null)return ne(a,0,ce),_==null?_=l:ne(_,0,8),V(new v(h),a+h.e+1,_);if(!(d=h.c))return null;if(b=((m=d.length-1)-Ie(this.e/W))*W,m=d[m])for(;m%10==0;m/=10,b--);return b<0&&(b=0),b},r.dividedBy=r.div=function(a,_){return e(this,new v(a,_),s,l)},r.dividedToIntegerBy=r.idiv=function(a,_){return e(this,new v(a,_),0,1)},r.exponentiatedBy=r.pow=function(a,_){var d,b,m,h,y,g,f,x,w,I=this;if(a=new v(a),a.c&&!a.isInteger())throw Error(we+"Exponent not an integer: "+H(a));if(_!=null&&(_=new v(_)),g=a.e>14,!I.c||!I.c[0]||I.c[0]==1&&!I.e&&I.c.length==1||!a.c||!a.c[0])return w=new v(Math.pow(+H(I),g?a.s*(2-Ot(a)):+H(a))),_?w.mod(_):w;if(f=a.s<0,_){if(_.c?!_.c[0]:!_.s)return new v(NaN);b=!f&&I.isInteger()&&_.isInteger(),b&&(I=I.mod(_))}else{if(a.e>9&&(I.e>0||I.e<-1||(I.e==0?I.c[0]>1||g&&I.c[1]>=24e7:I.c[0]<8e13||g&&I.c[0]<=9999975e7)))return h=I.s<0&&Ot(a)?-0:0,I.e>-1&&(h=1/h),new v(f?1/h:h);k&&(h=an(k/W+2))}for(g?(d=new v(.5),f&&(a.s=1),x=Ot(a)):(m=Math.abs(+H(a)),x=m%2),w=new v(o);;){if(x){if(w=w.times(I),!w.c)break;h?w.c.length>h&&(w.c.length=h):b&&(w=w.mod(_))}if(m){if(m=Re(m/2),m===0)break;x=m%2}else if(a=a.times(d),V(a,a.e+1,1),a.e>14)x=Ot(a);else{if(m=+H(a),m===0)break;x=m%2}I=I.times(I),h?I.c&&I.c.length>h&&(I.c.length=h):b&&(I=I.mod(_))}return b?w:(f&&(w=o.div(w)),_?w.mod(_):h?V(w,k,l,y):w)},r.integerValue=function(a){var _=new v(this);return a==null?a=l:ne(a,0,8),V(_,_.e+1,a)},r.isEqualTo=r.eq=function(a,_){return je(this,new v(a,_))===0},r.isFinite=function(){return!!this.c},r.isGreaterThan=r.gt=function(a,_){return je(this,new v(a,_))>0},r.isGreaterThanOrEqualTo=r.gte=function(a,_){return(_=je(this,new v(a,_)))===1||_===0},r.isInteger=function(){return!!this.c&&Ie(this.e/W)>this.c.length-2},r.isLessThan=r.lt=function(a,_){return je(this,new v(a,_))<0},r.isLessThanOrEqualTo=r.lte=function(a,_){return(_=je(this,new v(a,_)))===-1||_===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(a,_){var d,b,m,h,y=this,g=y.s;if(a=new v(a,_),_=a.s,!g||!_)return new v(NaN);if(g!=_)return a.s=-_,y.plus(a);var f=y.e/W,x=a.e/W,w=y.c,I=a.c;if(!f||!x){if(!w||!I)return w?(a.s=-_,a):new v(I?y:NaN);if(!w[0]||!I[0])return I[0]?(a.s=-_,a):new v(w[0]?y:l==3?-0:0)}if(f=Ie(f),x=Ie(x),w=w.slice(),g=f-x){for((h=g<0)?(g=-g,m=w):(x=f,m=I),m.reverse(),_=g;_--;m.push(0));m.reverse()}else for(b=(h=(g=w.length)<(_=I.length))?g:_,g=_=0;_<b;_++)if(w[_]!=I[_]){h=w[_]<I[_];break}if(h&&(m=w,w=I,I=m,a.s=-a.s),_=(b=I.length)-(d=w.length),_>0)for(;_--;w[d++]=0);for(_=Ae-1;b>g;){if(w[--b]<I[b]){for(d=b;d&&!w[--d];w[d]=_);--w[d],w[b]+=Ae}w[b]-=I[b]}for(;w[0]==0;w.splice(0,1),--x);return w[0]?te(a,w,x):(a.s=l==3?-1:1,a.c=[a.e=0],a)},r.modulo=r.mod=function(a,_){var d,b,m=this;return a=new v(a,_),!m.c||!a.s||a.c&&!a.c[0]?new v(NaN):!a.c||m.c&&!m.c[0]?new v(m):(F==9?(b=a.s,a.s=1,d=e(m,a,0,3),a.s=b,d.s*=b):d=e(m,a,0,F),a=m.minus(d.times(a)),!a.c[0]&&F==1&&(a.s=m.s),a)},r.multipliedBy=r.times=function(a,_){var d,b,m,h,y,g,f,x,w,I,M,C,K,ie,le,Y=this,Z=Y.c,ge=(a=new v(a,_)).c;if(!Z||!ge||!Z[0]||!ge[0])return!Y.s||!a.s||Z&&!Z[0]&&!ge||ge&&!ge[0]&&!Z?a.c=a.e=a.s=null:(a.s*=Y.s,!Z||!ge?a.c=a.e=null:(a.c=[0],a.e=0)),a;for(b=Ie(Y.e/W)+Ie(a.e/W),a.s*=Y.s,f=Z.length,I=ge.length,f<I&&(K=Z,Z=ge,ge=K,m=f,f=I,I=m),m=f+I,K=[];m--;K.push(0));for(ie=Ae,le=Ue,m=I;--m>=0;){for(d=0,M=ge[m]%le,C=ge[m]/le|0,y=f,h=m+y;h>m;)x=Z[--y]%le,w=Z[y]/le|0,g=C*x+w*M,x=M*x+g%le*le+K[h]+d,d=(x/ie|0)+(g/le|0)+C*w,K[h--]=x%ie;K[h]=d}return d?++b:K.splice(0,1),te(a,K,b)},r.negated=function(){var a=new v(this);return a.s=-a.s||null,a},r.plus=function(a,_){var d,b=this,m=b.s;if(a=new v(a,_),_=a.s,!m||!_)return new v(NaN);if(m!=_)return a.s=-_,b.minus(a);var h=b.e/W,y=a.e/W,g=b.c,f=a.c;if(!h||!y){if(!g||!f)return new v(m/0);if(!g[0]||!f[0])return f[0]?a:new v(g[0]?b:m*0)}if(h=Ie(h),y=Ie(y),g=g.slice(),m=h-y){for(m>0?(y=h,d=f):(m=-m,d=g),d.reverse();m--;d.push(0));d.reverse()}for(m=g.length,_=f.length,m-_<0&&(d=f,f=g,g=d,_=m),m=0;_;)m=(g[--_]=g[_]+f[_]+m)/Ae|0,g[_]=Ae===g[_]?0:g[_]%Ae;return m&&(g=[m].concat(g),++y),te(a,g,y)},r.precision=r.sd=function(a,_){var d,b,m,h=this;if(a!=null&&a!==!!a)return ne(a,1,ce),_==null?_=l:ne(_,0,8),V(new v(h),a,_);if(!(d=h.c))return null;if(m=d.length-1,b=m*W+1,m=d[m]){for(;m%10==0;m/=10,b--);for(m=d[0];m>=10;m/=10,b++);}return a&&h.e+1>b&&(b=h.e+1),b},r.shiftedBy=function(a){return ne(a,-ln,ln),this.times("1e"+a)},r.squareRoot=r.sqrt=function(){var a,_,d,b,m,h=this,y=h.c,g=h.s,f=h.e,x=s+4,w=new v("0.5");if(g!==1||!y||!y[0])return new v(!g||g<0&&(!y||y[0])?NaN:y?h:1/0);if(g=Math.sqrt(+H(h)),g==0||g==1/0?(_=Oe(y),(_.length+f)%2==0&&(_+="0"),g=Math.sqrt(+_),f=Ie((f+1)/2)-(f<0||f%2),g==1/0?_="5e"+f:(_=g.toExponential(),_=_.slice(0,_.indexOf("e")+1)+f),d=new v(_)):d=new v(g+""),d.c[0]){for(f=d.e,g=f+x,g<3&&(g=0);;)if(m=d,d=w.times(m.plus(e(h,m,x,1))),Oe(m.c).slice(0,g)===(_=Oe(d.c)).slice(0,g))if(d.e<f&&--g,_=_.slice(g-3,g+1),_=="9999"||!b&&_=="4999"){if(!b&&(V(m,m.e+s+2,0),m.times(m).eq(h))){d=m;break}x+=4,g+=4,b=1}else{(!+_||!+_.slice(1)&&_.charAt(0)=="5")&&(V(d,d.e+s+2,1),a=!d.times(d).eq(h));break}}return V(d,d.e+s+1,l,a)},r.toExponential=function(a,_){return a!=null&&(ne(a,0,ce),a++),q(this,a,_,1)},r.toFixed=function(a,_){return a!=null&&(ne(a,0,ce),a=a+this.e+1),q(this,a,_)},r.toFormat=function(a,_,d){var b,m=this;if(d==null)a!=null&&_&&typeof _=="object"?(d=_,_=null):a&&typeof a=="object"?(d=a,a=_=null):d=L;else if(typeof d!="object")throw Error(we+"Argument not an object: "+d);if(b=m.toFixed(a,_),m.c){var h,y=b.split("."),g=+d.groupSize,f=+d.secondaryGroupSize,x=d.groupSeparator||"",w=y[0],I=y[1],M=m.s<0,C=M?w.slice(1):w,K=C.length;if(f&&(h=g,g=f,f=h,K-=h),g>0&&K>0){for(h=K%g||g,w=C.substr(0,h);h<K;h+=g)w+=x+C.substr(h,g);f>0&&(w+=x+C.slice(h)),M&&(w="-"+w)}b=I?w+(d.decimalSeparator||"")+((f=+d.fractionGroupSize)?I.replace(new RegExp("\\d{"+f+"}\\B","g"),"$&"+(d.fractionGroupSeparator||"")):I):w}return(d.prefix||"")+b+(d.suffix||"")},r.toFraction=function(a){var _,d,b,m,h,y,g,f,x,w,I,M,C=this,K=C.c;if(a!=null&&(g=new v(a),!g.isInteger()&&(g.c||g.s!==1)||g.lt(o)))throw Error(we+"Argument "+(g.isInteger()?"out of range: ":"not an integer: ")+H(g));if(!K)return new v(C);for(_=new v(o),x=d=new v(o),b=f=new v(o),M=Oe(K),h=_.e=M.length-C.e-1,_.c[0]=cn[(y=h%W)<0?W+y:y],a=!a||g.comparedTo(_)>0?h>0?_:x:g,y=S,S=1/0,g=new v(M),f.c[0]=0;w=e(g,_,0,1),m=d.plus(w.times(b)),m.comparedTo(a)!=1;)d=b,b=m,x=f.plus(w.times(m=x)),f=m,_=g.minus(w.times(m=_)),g=m;return m=e(a.minus(d),b,0,1),f=f.plus(m.times(x)),d=d.plus(m.times(b)),f.s=x.s=C.s,h=h*2,I=e(x,b,h,l).minus(C).abs().comparedTo(e(f,d,h,l).minus(C).abs())<1?[x,b]:[f,d],S=y,I},r.toNumber=function(){return+H(this)},r.toPrecision=function(a,_){return a!=null&&ne(a,1,ce),q(this,a,_,2)},r.toString=function(a){var _,d=this,b=d.s,m=d.e;return m===null?b?(_="Infinity",b<0&&(_="-"+_)):_="NaN":(a==null?_=m<=u||m>=p?It(Oe(d.c),m):We(Oe(d.c),m,"0"):a===10&&G?(d=V(new v(d),s+m+1,l),_=We(Oe(d.c),d.e,"0")):(ne(a,2,E.length,"Base"),_=t(We(Oe(d.c),m,"0"),10,a,b,!0)),b<0&&d.c[0]&&(_="-"+_)),_},r.valueOf=r.toJSON=function(){return H(this)},r._isBigNumber=!0,r[Symbol.toStringTag]="BigNumber",r[Symbol.for("nodejs.util.inspect.custom")]=r.valueOf,i!=null&&v.set(i),v}function Ie(i){var e=i|0;return i>0||i===e?e:e-1}function Oe(i){for(var e,t,n=1,r=i.length,o=i[0]+"";n<r;){for(e=i[n++]+"",t=W-e.length;t--;e="0"+e);o+=e}for(r=o.length;o.charCodeAt(--r)===48;);return o.slice(0,r+1||1)}function je(i,e){var t,n,r=i.c,o=e.c,s=i.s,l=e.s,u=i.e,p=e.e;if(!s||!l)return null;if(t=r&&!r[0],n=o&&!o[0],t||n)return t?n?0:-l:s;if(s!=l)return s;if(t=s<0,n=u==p,!r||!o)return n?0:!r^t?1:-1;if(!n)return u>p^t?1:-1;for(l=(u=r.length)<(p=o.length)?u:p,s=0;s<l;s++)if(r[s]!=o[s])return r[s]>o[s]^t?1:-1;return u==p?0:u>p^t?1:-1}function ne(i,e,t,n){if(i<e||i>t||i!==Re(i))throw Error(we+(n||"Argument")+(typeof i=="number"?i<e||i>t?" out of range: ":" not an integer: ":" not a primitive number: ")+String(i))}function Ot(i){var e=i.c.length-1;return Ie(i.e/W)==e&&i.c[e]%2!=0}function It(i,e){return(i.length>1?i.charAt(0)+"."+i.slice(1):i)+(e<0?"e":"e+")+e}function We(i,e,t){var n,r;if(e<0){for(r=t+".";++e;r+=t);i=r+i}else if(n=i.length,++e>n){for(r=t,e-=n;--e;r+=t);i+=r}else e<n&&(i=i.slice(0,e)+"."+i.slice(e));return i}var Le=On();var In=12;Le.config({EXPONENTIAL_AT:[-100,100],ROUNDING_MODE:4,DECIMAL_PLACES:In});var z=D(0),ye=D(1),ir=D("Infinity");function ue(i,e){let t=new Le(e.toString()),n=new Le(10).pow(t);return i.times(n)}function D(i){return new Le(i.toString())}var Be=(r=>(r.XYK="Xyk",r.LBP="Lbp",r.Stable="Stableswap",r.Omni="Omnipool",r))(Be||{}),Ze=(r=>(r.UnknownError="UnknownError",r.InsufficientTradingAmount="InsufficientTradingAmount",r.MaxInRatioExceeded="MaxInRatioExceeded",r.MaxOutRatioExceeded="MaxOutRatioExceeded",r))(Ze||{}),un=(t=>(t.Buy="Buy",t.Sell="Sell",t))(un||{});var De=vt(Tn()),Te=class{static getSpotPrice(e,t,n,r,o){return(0,De.get_spot_price)(e,t,n,r,o)}static calculateInGivenOut(e,t,n,r,o){return(0,De.calculate_in_given_out)(e,t,n,r,o)}static calculateOutGivenIn(e,t,n,r,o){return(0,De.calculate_out_given_in)(e,t,n,r,o)}static calculateLinearWeights(e,t,n,r,o){return(0,De.calculate_linear_weights)(e,t,n,r,o)}static calculatePoolTradeFee(e,t,n){return(0,De.calculate_pool_trade_fee)(e,t,n)}};var gt=18,Qe="0",ho=12,bo=2034,Ft=63,wo=2090,_n=1e3;var yo=require("@polkadot/types/lookup");var xo=require("@polkadot/api-base/types/consts");var vo=require("@polkadot/api-base/types/errors");var So=require("@polkadot/api-base/types/events");var Oo=require("@polkadot/api-base/types/storage");var Io=require("@polkadot/api-base/types/submittable");var Bo=require("@polkadot/rpc-core/types/jsonrpc");var To=require("@polkadot/api-base/types/calls");var Mo=require("@polkadot/types/types/registry");var qo=require("@polkadot/types/lookup");var Ho=require("@polkadot/api-base/types/consts");var Wo=require("@polkadot/api-base/types/errors");var Uo=require("@polkadot/api-base/types/events");var zo=require("@polkadot/api-base/types/storage");var Xo=require("@polkadot/api-base/types/submittable");var $o=require("@polkadot/rpc-core/types/jsonrpc");var Yo=require("@polkadot/api-base/types/calls");var ti=require("@polkadot/types/types/registry");var kt=class{api;constructor(e){this.api=e}get chainDecimals(){return this.api.registry.chainDecimals[0]}get chainToken(){return this.api.registry.chainTokens[0]}};var et=class extends kt{constructor(e){super(e)}async tryBonds(e,t){try{let n=await this.api.query.bonds.bonds(e);if(n.isSome){let[r,o]=n.unwrap(),s=r.toString(),l=o.toNumber();return t(e,s,l)}}catch{}}async tryShares(e,t){try{let n=await this.api.query.stableswap.pools(e);if(n.isSome){let{assets:r}=n.unwrap(),o=r.map(s=>s.toString());return t(e,o)}}catch{}}async getTokenMetadata(e){if(e==Qe)return{symbol:this.chainToken,decimals:this.chainDecimals,icon:this.chainToken};let t=await this.api.query.assetRegistry.assetMetadataMap(e),{symbol:n,decimals:r}=t.unwrap();return{symbol:n.toHuman(),decimals:r.toNumber(),icon:n.toHuman()}}async getBondMetadata(e,t){let{symbol:n,decimals:r}=await this.getTokenMetadata(t);return{symbol:n+"b",decimals:r,icon:n}}async getShareMetadata(e,t){return{symbol:"SPS",decimals:18,icon:(await Promise.all(t.map(async s=>this.getTokenMetadata(s)))).map(s=>s.symbol).join("/")}}async getAssetMetadata(e){return(await Promise.all([this.tryBonds(e,this.getBondMetadata.bind(this)),this.tryShares(e,this.getShareMetadata.bind(this))])).find(n=>n)||this.getTokenMetadata(e)}async getTokenDetail(e){if(e==Qe){let s=this.api.consts.balances.existentialDeposit;return{name:this.chainToken,assetType:"Token",existentialDeposit:s.toString()}}let t=await this.api.query.assetRegistry.assets(e),{name:n,assetType:r,existentialDeposit:o}=t.unwrap();return{name:r.toHuman(),assetType:r.toHuman(),existentialDeposit:o.toString()}}async getBondDetail(e,t,n){let{assetType:r,existentialDeposit:o}=await this.getTokenDetail(e),{icon:s}=await this.getBondMetadata(e,t),l=new Intl.DateTimeFormat("en-GB");return{name:[s,"Bond",l.format(n)].join(" "),assetType:r,existentialDeposit:o}}async getShareDetail(e,t){let{assetType:n,existentialDeposit:r}=await this.getTokenDetail(e);return{name:(await Promise.all(t.map(async u=>this.getTokenMetadata(u)))).map(u=>u.symbol).join("/"),assetType:n,existentialDeposit:r}}async getAssetDetail(e){return(await Promise.all([this.tryBonds(e,this.getBondDetail.bind(this)),this.tryShares(e,this.getShareDetail.bind(this))])).find(n=>n)||this.getTokenDetail(e)}};var tt=class extends et{constructor(e){super(e)}async getAccountBalance(e,t){let n=t===Qe?await this.getSystemAccountBalance(e):await this.getTokenAccountBalance(e,t),r=await this.getAssetMetadata(t);return{amount:n,decimals:r.decimals}}async getSystemAccountBalance(e){let{data:{free:t,miscFrozen:n,feeFrozen:r}}=await this.api.query.system.account(e);return this.calculateFreeBalance(t.toString(),n.toString(),r.toString())}async getTokenAccountBalance(e,t){let{free:n,reserved:r,frozen:o}=await this.api.query.tokens.accounts(e,t);return this.calculateFreeBalance(n.toString(),z.toFixed(),o.toString())}calculateFreeBalance(e,t,n){let r=new Le(e),o=new Le(t),s=new Le(n),l=o.gt(s)?o:s;return r.minus(l)}};var Ge=class extends tt{constructor(e){super(e)}getStorageKey(e,t){return e[0].toHuman()[t]}getStorageEntryArray(e){return e[1].toHuman()}async getPoolTokens(e,t){let n=t.map(async r=>{let o=await this.getAccountBalance(e,r),s=await this.getAssetMetadata(r);return{id:r,balance:o.amount.toString(),decimals:s.decimals,symbol:s.symbol,icon:s.icon}});return Promise.all(n)}async syncPoolTokens(e,t){let n=t.map(async r=>{let o=await this.getAccountBalance(e,r.id);return{...r,balance:o.amount.toString()}});return Promise.all(n)}};var Et=class extends Ge{MAX_FINAL_WEIGHT=ue(D(100),6);poolsData=new Map([]);pools=[];_poolsLoaded=!1;async getPools(){let e=await this.getRelayChainBlock();return this._poolsLoaded?this.pools=await this.syncPools(e):(this.pools=await this.loadPools(e),this._poolsLoaded=!0),this.pools.filter(t=>{let n=this.poolsData.get(t.address);return n?this.isActivePool(n,e):!1})}async loadPools(e){let n=(await this.api.query.lbp.poolData.entries()).map(async r=>{let o=this.getStorageKey(r,0),s=r[1].unwrap(),l=s.assets.map(F=>F.toString()),u=await this.getPoolTokens(o,l),p=await this.getLinearWeight(s,e),P=D(p),S=this.MAX_FINAL_WEIGHT.minus(D(P)),T=u[0].id;return this.poolsData.set(o,s),{address:o,type:"Lbp",fee:s.fee.toJSON(),repayFeeApply:await this.isRepayFeeApplied(T,s),tokens:[{...u[0],weight:P},{...u[1],weight:S}],...this.getPoolLimits()}});return Promise.all(n)}async syncPools(e){let t=this.pools.map(async n=>{let r=this.poolsData.get(n.address),o=await this.syncPoolTokens(n.address,n.tokens),s=await this.getLinearWeight(r,e),l=D(s),u=this.MAX_FINAL_WEIGHT.minus(D(l)),p=o[0].id;return{...n,repayFeeApply:await this.isRepayFeeApplied(p,r),tokens:[{...o[0],weight:l},{...o[1],weight:u}]}});return Promise.all(t)}async getRelayChainBlock(){return(await this.api.query.parachainSystem.validationData()).unwrap().relayParentNumber.toNumber()}isActivePool(e,t){let n=e.start.toString(),r=e.end.toString();return t>=Number(n)&&t<Number(r)}async getLinearWeight(e,t){return Te.calculateLinearWeights(e.start.toString(),e.end.toString(),e.initialWeight.toString(),e.finalWeight.toString(),t.toString())}async isRepayFeeApplied(e,t){let n=D(t.repayTarget.toString());if(n.isZero())return!1;try{return(await this.getAccountBalance(e,t.feeCollector.toString())).amount.isLessThan(n)}catch{return!0}}async getPoolFees(e,t){let n=this.pools.find(r=>r.address===t);return{repayFee:this.getRepayFee(),exchangeFee:n.fee}}getRepayFee(){return this.api.consts.lbp.repayFee.toJSON()}getPoolLimits(){let e=this.api.consts.lbp.maxInRatio.toJSON(),t=this.api.consts.lbp.maxOutRatio.toJSON(),n=this.api.consts.lbp.minTradingLimit.toJSON();return{maxInRatio:e,maxOutRatio:t,minTradingLimit:n}}};var Nn=require("@polkadot/util-crypto"),An=require("@polkadot/util");function pe(i,e){return i.shiftedBy(-1*e).toString()}function Ne(i){return i[0]/i[1]*100}function Pe(i){return i[0]/i[1]}function Fe(i){return[i/1e3,1e3]}var Rt=class extends Ge{pools=[];_poolLoaded=!1;async getPools(){if(this._poolLoaded){let e=await this.syncPool();this.pools=[e]}else{let e=await this.loadPool();this.pools=[e],this._poolLoaded=!0}return this.pools}async loadPool(){let e=this.api.consts.omnipool.hubAssetId.toString(),t=await this.api.query.omnipool.assets.entries(),n=t.map(l=>this.getStorageKey(l,0)).concat(e),r=this.getPoolId(),o=await this.getPoolTokens(r,n),s=this.getPoolTokenState(t,o,e);return{address:r,type:"Omnipool",hubAssetId:e,tokens:s,...this.getPoolLimits()}}async syncPool(){let e=this.api.consts.omnipool.hubAssetId.toString(),t=await this.api.query.omnipool.assets.entries(),n=await this.syncPoolTokens(this.pools[0].address,this.pools[0].tokens),r=this.getPoolTokenState(t,n,e);return{...this.pools[0],tokens:r}}getPoolTokenState(e,t,n){return t.map((r,o)=>{if(n===r.id)return r;let l=e[o][1].unwrap();return{...r,hubReserves:D(l.hubReserve.toString()),shares:D(l.shares.toString())}})}async getPoolFees(e,t){let n=await this.api.query.dynamicFees.assetFee(e),r=this.api.consts.dynamicFees.assetFeeParameters,o=this.api.consts.dynamicFees.protocolFeeParameters,s=r.minFee.toNumber()+o.minFee.toNumber(),l=r.maxFee.toNumber()+o.maxFee.toNumber();if(n.isSome){let{assetFee:u,protocolFee:p}=n.unwrap();return{assetFee:Fe(u.toNumber()),protocolFee:Fe(p.toNumber()),min:Fe(s),max:Fe(l)}}else return{assetFee:this.getAssetFee(),protocolFee:this.getProtocolFee(),min:Fe(s),max:Fe(l)}}getAssetFee(){let t=this.api.consts.dynamicFees.assetFeeParameters.minFee.toNumber();return Fe(t)}getProtocolFee(){let t=this.api.consts.dynamicFees.protocolFeeParameters.minFee.toNumber();return Fe(t)}getPoolId(){return(0,Nn.encodeAddress)((0,An.stringToU8a)("modlomnipool".padEnd(32,"\0")),63)}getPoolLimits(){let e=this.api.consts.omnipool.maxInRatio.toJSON(),t=this.api.consts.omnipool.maxOutRatio.toJSON(),n=this.api.consts.omnipool.minimumTradingLimit.toJSON();return{maxInRatio:e,maxOutRatio:t,minTradingLimit:n}}};var Lt=class extends Ge{pools=[];_poolsLoaded=!1;async getPools(){return this._poolsLoaded?this.pools=await this.syncPools():(this.pools=await this.loadPools(),this._poolsLoaded=!0),this.pools}async loadPools(){let t=(await this.api.query.xyk.poolAssets.entries()).map(async n=>{let r=this.getStorageKey(n,0),o=this.getStorageEntryArray(n),s=await this.getPoolTokens(r,o);return{address:r,type:"Xyk",tokens:s,...this.getPoolLimits()}});return Promise.all(t)}async syncPools(){let e=this.pools.map(async t=>({...t,tokens:await this.syncPoolTokens(t.address,t.tokens)}));return Promise.all(e)}async getPoolFees(e,t){return{exchangeFee:this.getExchangeFee()}}getExchangeFee(){return this.api.consts.xyk.getExchangeFee.toJSON()}getPoolLimits(){let e=this.api.consts.xyk.maxInRatio.toJSON(),t=this.api.consts.xyk.maxOutRatio.toJSON(),n=this.api.consts.xyk.minTradingLimit.toJSON();return{maxInRatio:e,maxOutRatio:t,minTradingLimit:n}}};var qt=require("@polkadot/util-crypto");var de=vt(kn()),xe=class{static getPoolAddress(e){return(0,de.pool_account_name)(e)}static calculateAmplification(e,t,n,r,o){return(0,de.calculate_amplification)(e,t,n,r,o)}static calculateInGivenOut(e,t,n,r,o,s){return(0,de.calculate_in_given_out)(e,t,n,r,o,s)}static calculateAddOneAsset(e,t,n,r,o,s){return(0,de.calculate_add_one_asset)(e,t,n,r,o,s)}static calculateSharesForAmount(e,t,n,r,o,s){return(0,de.calculate_shares_for_amount)(e,t,n,r,o,s)}static calculateOutGivenIn(e,t,n,r,o,s){return(0,de.calculate_out_given_in)(e,t,n,r,o,s)}static calculateLiquidityOutOneAsset(e,t,n,r,o,s){return(0,de.calculate_liquidity_out_one_asset)(e,t,n,r,o,s)}static calculateShares(e,t,n,r,o){return(0,de.calculate_shares)(e,t,n,r,o)}static calculatePoolTradeFee(e,t,n){return(0,de.calculate_pool_trade_fee)(e,t,n)}};var Ct=class extends Ge{poolsData=new Map([]);pools=[];_poolsLoaded=!1;async getPools(){let e=await this.getParaChainBlock();return this._poolsLoaded?this.pools=await this.syncPools(e):(this.pools=await this.loadPools(e),this._poolsLoaded=!0),this.pools}async loadPools(e){let n=(await this.api.query.stableswap.pools.entries()).map(async r=>{let o=this.getStorageKey(r,0),s=r[1].unwrap(),l=this.getPoolAddress(o),u=await this.getPoolTokens(l,s.assets.map(S=>S.toString()));u.push({id:o,symbol:"",icon:"",balance:"",decimals:18});let p=await this.getAmplification(s,e),P=await this.getTotalIssueance(o);return this.poolsData.set(o,s),{id:o,address:l,type:"Stableswap",amplification:p,fee:Fe(s.fee.toNumber()),totalIssuance:P,tokens:u,...this.getPoolLimits()}});return Promise.all(n)}async syncPools(e){let t=this.pools.map(async n=>{let r=this.poolsData.get(n.id),o=await this.getAmplification(r,e),s=await this.getTotalIssueance(n.id);return{...n,amplification:o,totalIssuance:s,tokens:await this.syncPoolTokens(n.address,n.tokens)}});return Promise.all(t)}async getParaChainBlock(){return(await this.api.query.system.number()).toNumber()}async getTotalIssueance(e){return(await this.api.query.tokens.totalIssuance(e)).toString()}async getAmplification(e,t){return xe.calculateAmplification(e.initialAmplification.toString(),e.finalAmplification.toString(),e.initialBlock.toString(),e.finalBlock.toString(),t.toString())}getPoolAddress(e){let t=Number(e),n=xe.getPoolAddress(t);return(0,qt.encodeAddress)((0,qt.blake2AsHex)(n),63)}async getPoolFees(e,t){return{fee:this.pools.find(r=>r.address===t).fee}}getPoolLimits(){return{maxInRatio:0,maxOutRatio:0,minTradingLimit:this.api.consts.stableswap.minTradingLimit.toJSON()}}};var ft=class extends Error{constructor(e){super(),this.message=`${e} pool invalid`,this.name="PoolNotFound"}},dn=class extends Error{constructor(e,t){super(),this.message=`${e} pool missing ${t}`,this.name="PoolConfigNotFound"}},nt=class extends Error{constructor(e,t){super(),this.message=`Route from ${e} to ${t} not found in pool configuration`,this.name="RouteNotFound"}},pn=class extends Error{constructor(e){super(),this.message=`Asset ${e} not available in current network`,this.name="AssetNotFound"}},gn=class extends Error{constructor(e){super(),this.message=`Storage missing ${e}`,this.name="StorageConfigNotFound"}},mn=class extends Error{constructor(e){super(),this.message=`Subscription type "${e}" not supported`,this.name="SubscriptionNotSupported"}},fn=class extends Error{constructor(e){super(),this.message=`${e}`,this.name="ProviderConfigNotFound"}};var rt=class{api;xykClient;omniClient;lbpClient;stableClient;constructor(e){this.api=e,this.xykClient=new Lt(this.api),this.omniClient=new Rt(this.api),this.lbpClient=new Et(this.api),this.stableClient=new Ct(this.api)}async getPools(e){if(e.length==0)return(await Promise.all([this.xykClient.getPools(),this.omniClient.getPools(),this.lbpClient.getPools(),this.stableClient.getPools()])).flat();let t=[];return e.forEach(r=>{switch(r){case"Xyk":t.push(this.xykClient.getPools());break;case"Omnipool":t.push(this.omniClient.getPools());break;case"Lbp":t.push(this.lbpClient.getPools());break;case"Stableswap":t.push(this.stableClient.getPools());break}}),(await Promise.all(t)).flat()}async getPoolFees(e,t){switch(t.type){case"Xyk":return this.xykClient.getPoolFees(e,t.address);case"Omnipool":return this.omniClient.getPoolFees(e,t.address);case"Lbp":return this.lbpClient.getPoolFees(e,t.address);case"Stableswap":return this.stableClient.getPoolFees(e,t.address);default:throw new ft(t.type)}}isDirectOmnipoolTrade(e){return e.length==1&&e[0].pool=="Omnipool"}buildBuyTx(e,t,n,r,o){let s;this.isDirectOmnipoolTrade(o)?s=this.api.tx.omnipool.buy(t,e,n.toFixed(),r.toFixed()):s=this.api.tx.router.buy(e,t,n.toFixed(),r.toFixed(),this.buildRoute(o));let l=()=>s;return{hex:s.toHex(),name:"RouterBuy",get:l}}buildSellTx(e,t,n,r,o){let s;this.isDirectOmnipoolTrade(o)?s=this.api.tx.omnipool.sell(e,t,n.toFixed(),r.toFixed()):s=this.api.tx.router.sell(e,t,n.toFixed(),r.toFixed(),this.buildRoute(o));let l=()=>s;return{hex:s.toHex(),name:"RouterSell",get:l}}buildRoute(e){return e.map(({assetIn:t,assetOut:n,pool:r,poolId:o})=>r==="Stableswap"?{pool:{Stableswap:o},assetIn:t,assetOut:n}:{pool:r,assetIn:t,assetOut:n})}};var ht=(i,e)=>i===e?0:i==null?e==null?0:-1:e==null?i==null?0:1:typeof i.compare=="function"?i.compare(e):typeof e.compare=="function"?-e.compare(i):i<e?-1:i>e?1:0;var Ht=(i,e=t=>t!==void 0?": "+t:"")=>class extends Error{constructor(t){super(i(t)+e(t))}};var vr=Ht(()=>"illegal argument(s)"),En=i=>{throw new vr(i)};var Sr=Ht(()=>"index out of bounds"),hn=i=>{throw new Sr(i)},Wt=(i,e,t)=>(i<e||i>=t)&&hn(i);var Rn=23283064365386963e-26,Ut=class{float(e=1){return this.int()*Rn*e}norm(e=1){return(this.int()*Rn-.5)*2*e}normMinMax(e,t){let n=this.minmax(e,t);return this.float()<.5?n:-n}minmax(e,t){return this.float()*(t-e)+e}minmaxInt(e,t){return e|=0,t|=0,e+(this.float()*(t-e)|0)}};var bn=Math.random,wn=class extends Ut{int(){return bn()*4294967296>>>0}float(e=1){return bn()*e}norm(e=1){return(bn()-.5)*2*e}},Ln=new wn;var Mn=i=>i!=null&&typeof i!="function"&&i.length!==void 0;var Dn=Object.getPrototypeOf({}),zt="function",Gn="string",ot=(i,e)=>{let t;if(i===e)return!0;if(i!=null){if(typeof i.equiv===zt)return i.equiv(e)}else return i==e;if(e!=null){if(typeof e.equiv===zt)return e.equiv(i)}else return i==e;return typeof i===Gn||typeof e===Gn?!1:(t=Object.getPrototypeOf(i),(t==null||t===Dn)&&(t=Object.getPrototypeOf(e),t==null||t===Dn)?Tr(i,e):typeof i!==zt&&i.length!==void 0&&typeof e!==zt&&e.length!==void 0?Or(i,e):i instanceof Set&&e instanceof Set?Ir(i,e):i instanceof Map&&e instanceof Map?Br(i,e):i instanceof Date&&e instanceof Date?i.getTime()===e.getTime():i instanceof RegExp&&e instanceof RegExp?i.toString()===e.toString():i!==i&&e!==e)},Or=(i,e,t=ot)=>{let n=i.length;if(n===e.length)for(;n-- >0&&t(i[n],e[n]););return n<0},Ir=(i,e,t=ot)=>i.size===e.size&&t([...i.keys()].sort(),[...e.keys()].sort()),Br=(i,e,t=ot)=>i.size===e.size&&t([...i].sort(),[...e].sort()),Tr=(i,e,t=ot)=>{if(Object.keys(i).length!==Object.keys(e).length)return!1;for(let n in i)if(!e.hasOwnProperty(n)||!t(i[n],e[n]))return!1;return!0};var Cn=(i,e)=>i!=null&&typeof i[e]=="function";var qn=i=>Cn(i,"xform")?i.xform():i;var Xt=Symbol(),Pn=()=>{};var Hn=i=>i!=null&&typeof i[Symbol.iterator]=="function";var $t=class{constructor(e){this.value=e}deref(){return this.value}};var Yt=i=>i instanceof $t;var Wn=i=>i instanceof $t?i.deref():i;function*Un(i,e){let t=qn(i)([Pn,Pn,(n,r)=>r])[2];for(let n of e){let r=t(Xt,n);if(Yt(r)){r=Wn(r.deref()),r!==Xt&&(yield r);return}r!==Xt&&(yield r)}}var zn=(i,e)=>[i[0],i[1],e];function bt(i,e){return Hn(e)?Un(bt(i),e):t=>{let n=t[2];return zn(t,(r,o)=>n(r,i(o)))}}var it=class{constructor(e){this._length=0,e&&this.into(e)}get length(){return this._length}get head(){return this._head}[Symbol.iterator](){return Xn("next",this._head)}reverseIterator(){return Xn("prev",this.tail)}clear(){this.release()}compare(e,t=ht){let n=this._length;if(n<e._length)return-1;if(n>e._length)return 1;if(n===0)return 0;{let r=this._head,o=e._head,s=0;for(;n-- >0&&s===0;)s=t(r.value,o.value),r=r.next,o=o.next;return s}}concat(...e){let t=this.copy();for(let n of e)t.into(n);return t}equiv(e){if(!(e instanceof it||Mn(e))||this._length!==e.length)return!1;if(!this._length||this===e)return!0;let t=e[Symbol.iterator](),n=this._head;for(let r=this._length;r-- >0;){if(!ot(n.value,t.next().value))return!1;n=n.next}return!0}filter(e){let t=this.empty();return this.traverse(n=>(e(n.value)&&t.append(n.value),!0)),t}find(e){return this.traverse(t=>t.value!==e)}findWith(e){return this.traverse(t=>!e(t.value))}first(){return this._head&&this._head.value}insertSorted(e,t){t=t||ht;for(let n=this._head,r=this._length;r-- >0;){if(t(e,n.value)<=0)return this.insertBefore(n,e);n=n.next}return this.append(e)}into(e){for(let t of e)this.append(t);return this}nth(e,t){let n=this.nthCell(e);return n?n.value:t}nthCellUnsafe(e){let t,n;for(e<=this._length>>>1?(t=this._head,n="next"):(t=this.tail,n="prev",e=this._length-e-1);e-- >0&&t;)t=t[n];return t}peek(){return this.tail&&this.tail.value}$reduce(e,t){let n=this._head;for(let r=this._length;r-- >0&&!Yt(t);)t=e(t,n.value),n=n.next;return t}reduce(e,t){return this.$reduce(e,t)}release(){let e=this._head;if(!e)return!0;let t;for(let n=this._length;n-- >0;)t=e.next,delete e.value,delete e.prev,delete e.next,e=t;return this._head=void 0,this._length=0,!0}reverse(){let e=this._head,t=this.tail,n=(this._length>>>1)+(this._length&1);for(;e&&t&&n>0;){let r=e.value;e.value=t.value,t.value=r,e=e.next,t=t.prev,n--}return this}setHead(e){let t=this._head;return t?(t.value=e,t):this.prepend(e)}setNth(e,t){let n=this.nthCell(e);return!n&&hn(e),n.value=t,n}setTail(e){let t=this.tail;return t?(t.value=e,t):this.append(e)}swap(e,t){if(e!==t){let n=e.value;e.value=t.value,t.value=n}return this}toArray(e=[]){return this.traverse(t=>(e.push(t.value),!0)),e}toJSON(){return this.toArray()}toString(){let e=[];return this.traverse(t=>(e.push(String(t.value)),!0)),e.join(", ")}traverse(e,t=this._head,n){if(!this._head)return;let r=t;do{if(!e(r))break;r=r.next}while(r!==n);return r}_map(e,t){return this.traverse(n=>(e.append(t(n.value)),!0)),e}};function*Xn(i,e){for(;e;)yield e.value,e=e[i]}var Ce=class extends it{get tail(){return this._tail}append(e){if(this._tail){let t={value:e,prev:this._tail};return this._tail.next=t,this._tail=t,this._length++,t}else return this.prepend(e)}asHead(e){return e===this._head?this:(this.remove(e),this._head.prev=e,e.next=this._head,e.prev=void 0,this._head=e,this._length++,this)}asTail(e){return e===this._tail?this:(this.remove(e),this._tail.next=e,e.prev=this._tail,e.next=void 0,this._tail=e,this._length++,this)}cons(e){return this.prepend(e),this}copy(){return new Ce(this)}*cycle(){for(;;)yield*this}drop(){let e=this._head;if(e)return this._head=e.next,this._head?this._head.prev=void 0:this._tail=void 0,this._length--,e.value}empty(){return new Ce}insertAfter(e,t){let n={value:t,next:e.next,prev:e};return e.next?e.next.prev=n:this._tail=n,e.next=n,this._length++,n}insertAfterNth(e,t){return e<0&&(e+=this._length),e>=this._length-1?this.append(t):(Wt(e,0,this._length),this.insertAfter(this.nthCellUnsafe(e),t))}insertBefore(e,t){let n={value:t,next:e,prev:e.prev};return e.prev?e.prev.next=n:this._head=n,e.prev=n,this._length++,n}insertBeforeNth(e,t){return e<0&&(e+=this._length),e<=0?this.prepend(t):(Wt(e,0,this._length),this.insertBefore(this.nthCellUnsafe(e),t))}map(e){return this._map(new Ce,e)}nth(e,t){let n=this.nthCell(e);return n?n.value:t}nthCell(e){if(e<0&&(e+=this._length),!(e<0||e>=this._length))return this.nthCellUnsafe(e)}pop(){let e=this._tail;if(e)return this._tail=e.prev,this._tail?this._tail.next=void 0:this._head=void 0,this._length--,e.value}prepend(e){let t={value:e,next:this._head};return this._head?this._head.prev=t:this._tail=t,this._head=t,this._length++,t}push(e){return this.append(e),this}release(){return this._tail=void 0,super.release()}remove(e){return e.prev?e.prev.next=e.next:this._head=e.next,e.next?e.next.prev=e.prev:this._tail=e.prev,this._length--,this}rotateLeft(){switch(this._length){case 0:case 1:return this;case 2:return this.swap(this._head,this._tail);default:return this.push(this.drop())}}rotateRight(){switch(this._length){case 0:case 1:return this;case 2:return this.swap(this._head,this._tail);default:let e=this.peek();return this.pop(),this.prepend(e),this}}seq(e=0,t=this.length){if(e>=t||e<0)return;let n=this.nthCell(e),r=this.nthCell(t-1),o=s=>({first(){return s.value},next(){return s!==r&&s.next?o(s.next):void 0}});return n?o(n):void 0}shuffle(e,t=Ln){if(this._length<2)return this;for(e=e!==void 0?e:Math.ceil(1.5*Math.log2(this._length));e>0;e--){let n=this._head;for(;n;){let r=n.next;t.float()<.5?this.asHead(n):this.asTail(n),n=r}}return this}slice(e=0,t=this.length){let n=e<0?e+this._length:e,r=t<0?t+this._length:t;(n<0||r<0)&&En("invalid indices: ${from} / ${to}");let o=new Ce,s=this.nthCell(n);for(;s&&++n<=r;)o.push(s.value),s=s.next;return o}sort(e=ht){if(!this._length)return this;let t=1;for(;;){let n=this._head;this._head=void 0,this._tail=void 0;let r=0;for(;n;){r++;let o=n,s=0;for(let u=0;u<t&&(s++,o=o.next,!!o);u++);let l=t;for(;s>0||l>0&&o;){let u;s===0?(u=o,o=o.next,l--):!o||l===0||e(n.value,o.value)<=0?(u=n,n=n.next,s--):(u=o,o=o.next,l--),this._tail?this._tail.next=u:this._head=u,u.prev=this._tail,this._tail=u}n=o}if(this._tail.next=void 0,r<=1)return this;t*=2}}splice(e,t=0,n){let r;typeof e=="number"?(e<0&&(e+=this._length),Wt(e,0,this._length),r=this.nthCellUnsafe(e)):r=e;let o=new Ce;if(t>0)for(;r&&t-- >0;)this.remove(r),o.push(r.value),r=r.next;else r&&(r=r.next);if(n)if(r)for(let s of n)this.insertBefore(r,s);else for(let s of n)this.push(s);return o}};var st=class{constructor(e,t){let n=Object.assign({maxlen:1/0,maxsize:1/0,map:()=>new Map,ksize:()=>0,vsize:()=>0},t);this.map=n.map(),this.items=new Ce,this._size=0,this.opts=n,e&&this.into(e)}get length(){return this.items.length}get size(){return this._size}[Symbol.iterator](){return this.entries()}entries(){return bt(e=>[e.k,e],this.items)}keys(){return bt(e=>e.k,this.items)}values(){return bt(e=>e.v,this.items)}copy(){let e=this.empty();e.items=this.items.copy();let t=e.items.head;for(;t;)e.map.set(t.value.k,t),t=t.next;return e}empty(){return new st(null,this.opts)}release(){this._size=0,this.map.clear();let e=this.opts.release;if(e){let t;for(;t=this.items.drop();)e(t.k,t.v);return!0}return this.items.release()}has(e){return this.map.has(e)}get(e,t){let n=this.map.get(e);return n?this.resetEntry(n):t}set(e,t){let n=this.opts.ksize(e)+this.opts.vsize(t),r=this.map.get(e);return this._size+=Math.max(0,n-(r?r.value.s:0)),this.ensureSize()&&this.doSetEntry(r,e,t,n),t}into(e){for(let t of e)this.set(t[0],t[1]);return this}getSet(e,t){let n=this.map.get(e);return n?Promise.resolve(this.resetEntry(n)):t().then(r=>this.set(e,r))}delete(e){let t=this.map.get(e);return t?(this.removeEntry(t),!0):!1}resetEntry(e){return this.items.asTail(e),e.value.v}ensureSize(){let e=this.opts.release,t=this.opts.maxsize,n=this.opts.maxlen;for(;this._size>t||this.length>=n;){let r=this.items.drop();if(!r)return!1;this.map.delete(r.k),e&&e(r.k,r.v),this._size-=r.s}return!0}removeEntry(e){let t=e.value;this.map.delete(t.k),this.items.remove(e),this.opts.release&&this.opts.release(t.k,t.v),this._size-=t.s}doSetEntry(e,t,n,r){e?(e.value.v=n,e.value.s=r,this.items.asTail(e)):(this.items.push({k:t,v:n,s:r}),this.map.set(t,this.items.tail))}};var Kt=class extends rt{feeCache;disconnectSubscribeNewHeads=null;constructor(e){super(e),this.feeCache=new st(null),this.api.rpc.chain.subscribeNewHeads(async t=>{this.feeCache.release()}).then(t=>{this.disconnectSubscribeNewHeads=t})}async getPoolFees(e,t){let n=[t.address,e].join("-");if(this.feeCache.has(n))return this.feeCache.get(n);{let o=await super.getPoolFees(e,t);return this.feeCache.set(n,o),o}}async destroy(){console.log(`Destroying pool cache!
|
|
2
|
+
Items: [${this.feeCache.length}]`),this.feeCache.release(),this.disconnectSubscribeNewHeads?.()}};var Xe=class{type;address;tokens;maxInRatio;maxOutRatio;minTradingLimit;fee;repayFeeApply;static fromPool(e){return new Xe(e.address,e.tokens,e.maxInRatio,e.maxOutRatio,e.minTradingLimit,e.fee,e.repayFeeApply)}constructor(e,t,n,r,o,s,l){this.type="Lbp",this.address=e,this.tokens=t,this.maxInRatio=n,this.maxOutRatio=r,this.minTradingLimit=o,this.fee=s,this.repayFeeApply=l}validatePair(e,t){return!0}parsePair(e,t){let n=new Map(this.tokens.map(u=>[u.id,u])),r=n.get(e),o=n.get(t);if(r==null)throw new Error("Pool does not contain tokenIn");if(o==null)throw new Error("Pool does not contain tokenOut");let s=D(r.balance),l=D(o.balance);return{assetIn:e,assetOut:t,decimalsIn:r.decimals,decimalsOut:o.decimals,weightIn:r.weight,weightOut:o.weight,balanceIn:s,balanceOut:l}}validateAndBuy(e,t,n){let r=this.tokens[0].id,o=[];t.isLessThan(this.minTradingLimit)&&o.push("InsufficientTradingAmount");let s=e.balanceOut.div(this.maxOutRatio);if(t.isGreaterThan(s)&&o.push("MaxOutRatioExceeded"),r===e.assetOut){let l=this.calculateTradeFee(t,n),u=Ne(this.repayFeeApply?n.repayFee:n.exchangeFee),p=t.plus(l),P=this.calculateInGivenOut(e,p),S=e.balanceIn.div(this.maxInRatio);return P.isGreaterThan(S)&&o.push("MaxInRatioExceeded"),{amountIn:P,calculatedIn:P,amountOut:t,feePct:u,errors:o}}else{let l=this.calculateInGivenOut(e,t),u=e.balanceIn.div(this.maxInRatio);return l.isGreaterThan(u)&&o.push("MaxInRatioExceeded"),{amountIn:l,calculatedIn:l,amountOut:t,feePct:0,errors:o}}}validateAndSell(e,t,n){let r=this.tokens[0].id,o=[];t.isLessThan(this.minTradingLimit)&&o.push("InsufficientTradingAmount");let s=e.balanceIn.div(this.maxInRatio);if(t.isGreaterThan(s)&&o.push("MaxInRatioExceeded"),r===e.assetIn){let l=this.calculateOutGivenIn(e,t),u=e.balanceOut.div(this.maxOutRatio);return l.isGreaterThan(u)&&o.push("MaxOutRatioExceeded"),{amountIn:t,calculatedOut:l,amountOut:l,feePct:0,errors:o}}else{let l=this.calculateOutGivenIn(e,t),u=this.calculateTradeFee(l,n),p=Ne(this.repayFeeApply?n.repayFee:n.exchangeFee),P=l.minus(u),S=e.balanceOut.div(this.maxOutRatio);return P.isGreaterThan(S)&&o.push("MaxOutRatioExceeded"),{amountIn:t,calculatedOut:l,amountOut:P,feePct:p,errors:o}}}calculateInGivenOut(e,t){let n=Te.calculateInGivenOut(e.balanceIn.toString(),e.balanceOut.toString(),e.weightIn.toString(),e.weightOut.toString(),t.toFixed(0)),r=D(n);return r.isNegative()?z:r}calculateOutGivenIn(e,t){let n=Te.calculateOutGivenIn(e.balanceIn.toString(),e.balanceOut.toString(),e.weightIn.toString(),e.weightOut.toString(),t.toFixed(0)),r=D(n);return r.isNegative()?z:r}spotPriceInGivenOut(e){let t=Te.getSpotPrice(e.balanceOut.toString(),e.balanceIn.toString(),e.weightOut.toString(),e.weightIn.toString(),ue(ye,e.decimalsOut).toString());return D(t)}spotPriceOutGivenIn(e){let t=Te.getSpotPrice(e.balanceIn.toString(),e.balanceOut.toString(),e.weightIn.toString(),e.weightOut.toString(),ue(ye,e.decimalsIn).toString());return D(t)}calculateTradeFee(e,t){let n=Te.calculatePoolTradeFee(e.toString(),this.repayFeeApply?t.repayFee[0]:t.exchangeFee[0],this.repayFeeApply?t.repayFee[1]:t.exchangeFee[1]);return D(n)}};var $=vt(Yn()),ve=class{static calculateSpotPrice(e,t,n,r){return(0,$.calculate_spot_price)(e,t,n,r)}static calculateLrnaSpotPrice(e,t){return(0,$.calculate_lrna_spot_price)(e,t)}static calculateInGivenOut(e,t,n,r,o,s,l,u,p){return(0,$.calculate_in_given_out)(e,t,n,r,o,s,l,u,p)}static calculateLrnaInGivenOut(e,t,n,r,o){return(0,$.calculate_lrna_in_given_out)(e,t,n,r,o)}static calculateOutGivenIn(e,t,n,r,o,s,l,u,p){return(0,$.calculate_out_given_in)(e,t,n,r,o,s,l,u,p)}static calculateOutGivenLrnaIn(e,t,n,r,o){return(0,$.calculate_out_given_lrna_in)(e,t,n,r,o)}static calculatePoolTradeFee(e,t,n){return(0,$.calculate_pool_trade_fee)(e,t,n)}static calculateShares(e,t,n,r){return(0,$.calculate_shares)(e,t,n,r)}static calculateLiquidityOut(e,t,n,r,o,s,l,u){return(0,$.calculate_liquidity_out)(e,t,n,r,o,s,l,u)}static calculateLiquidityLRNAOut(e,t,n,r,o,s,l,u){return(0,$.calculate_liquidity_lrna_out)(e,t,n,r,o,s,l,u)}static calculateCapDifference(e,t,n,r){return(0,$.calculate_cap_difference)(e,t,n,r)}static verifyAssetCap(e,t,n,r){return(0,$.verify_asset_cap)(e,t,n,r)}static calculateLimitHubIn(e,t,n,r){return(0,$.calculate_liquidity_hub_in)(e,t,n,r)}static isSellAllowed(e){return(0,$.is_sell_allowed)(e)}static isBuyAllowed(e){return(0,$.is_buy_allowed)(e)}static isAddLiquidityAllowed(e){return(0,$.is_add_liquidity_allowed)(e)}static isRemoveLiquidityAllowed(e){return(0,$.is_remove_liquidity_allowed)(e)}};var $e=class{type;address;tokens;maxInRatio;maxOutRatio;minTradingLimit;hubAssetId;static fromPool(e){return new $e(e.address,e.tokens,e.maxInRatio,e.maxOutRatio,e.minTradingLimit,e.hubAssetId)}constructor(e,t,n,r,o,s){this.type="Omnipool",this.address=e,this.tokens=t,this.maxInRatio=n,this.maxOutRatio=r,this.minTradingLimit=o,this.hubAssetId=s}validatePair(e,t){return this.hubAssetId!=t}parsePair(e,t){let n=new Map(this.tokens.map(u=>[u.id,u])),r=n.get(e),o=n.get(t);if(r==null)throw new Error("Pool does not contain tokenIn");if(o==null)throw new Error("Pool does not contain tokenOut");let s=D(r.balance),l=D(o.balance);return{assetIn:e,assetOut:t,hubReservesIn:r.hubReserves,hubReservesOut:o.hubReserves,sharesIn:r.shares,sharesOut:o.shares,decimalsIn:r.decimals,decimalsOut:o.decimals,balanceIn:s,balanceOut:l}}validateAndBuy(e,t,n){let r=this.calculateInGivenOut(e,t),o=this.calculateInGivenOut(e,t,n),s=o.minus(r),l=r===z?z:s.div(r).multipliedBy(100).decimalPlaces(2),u=[];t.isLessThan(this.minTradingLimit)&&u.push("InsufficientTradingAmount");let p=e.balanceOut.div(this.maxOutRatio);t.isGreaterThan(p)&&u.push("MaxOutRatioExceeded");let P=e.balanceIn.div(this.maxInRatio);return o.isGreaterThan(P)&&u.push("MaxInRatioExceeded"),{amountIn:o,calculatedIn:r,amountOut:t,feePct:l.toNumber(),errors:u}}validateAndSell(e,t,n){let r=this.calculateOutGivenIn(e,t),o=this.calculateOutGivenIn(e,t,n),l=r.minus(o).div(r).multipliedBy(100).decimalPlaces(2),u=[];t.isLessThan(this.minTradingLimit)&&u.push("InsufficientTradingAmount");let p=e.balanceIn.div(this.maxInRatio);t.isGreaterThan(p)&&u.push("MaxInRatioExceeded");let P=e.balanceOut.div(this.maxOutRatio);return o.isGreaterThan(P)&&u.push("MaxOutRatioExceeded"),{amountIn:t,calculatedOut:r,amountOut:o,feePct:l.toNumber(),errors:u}}calculateInGivenOut(e,t,n){if(e.assetIn==this.hubAssetId)return this.calculateLrnaInGivenOut(e,t,n);let r=ve.calculateInGivenOut(e.balanceIn.toString(),e.hubReservesIn.toString(),e.sharesIn.toString(),e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),n?Pe(n.assetFee).toString():z.toString(),n?Pe(n.protocolFee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateLrnaInGivenOut(e,t,n){let r=ve.calculateLrnaInGivenOut(e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),n?Pe(n.assetFee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateOutGivenIn(e,t,n){if(e.assetIn==this.hubAssetId)return this.calculateOutGivenLrnaIn(e,t,n);let r=ve.calculateOutGivenIn(e.balanceIn.toString(),e.hubReservesIn.toString(),e.sharesIn.toString(),e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),n?Pe(n.assetFee).toString():z.toString(),n?Pe(n.protocolFee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateOutGivenLrnaIn(e,t,n){let r=ve.calculateOutGivenLrnaIn(e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),n?Pe(n.assetFee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}spotPriceInGivenOut(e){if(e.assetIn==this.hubAssetId)return this.spotPriceLrnaInGivenOut(e);let t=ve.calculateSpotPrice(e.balanceOut.toString(),e.hubReservesOut.toString(),e.balanceIn.toString(),e.hubReservesIn.toString());return D(t).shiftedBy(-1*(18-e.decimalsOut)).decimalPlaces(0,1)}spotPriceLrnaInGivenOut(e){let t=ve.calculateLrnaSpotPrice(e.hubReservesOut.toString(),e.balanceOut.toString());return D(t).shiftedBy(-1*(18-e.decimalsOut)).decimalPlaces(0,1)}spotPriceOutGivenIn(e){if(e.assetIn==this.hubAssetId)return this.spotPriceOutGivenLrnaIn(e);let t=ve.calculateSpotPrice(e.balanceIn.toString(),e.hubReservesIn.toString(),e.balanceOut.toString(),e.hubReservesOut.toString());return D(t).shiftedBy(-1*(18-e.decimalsIn)).decimalPlaces(0,1)}spotPriceOutGivenLrnaIn(e){let t=ve.calculateLrnaSpotPrice(e.balanceOut.toString(),e.hubReservesOut.toString());return D(t).shiftedBy(-1*(18-e.decimalsIn)).decimalPlaces(0,1)}};var at=class{type;address;tokens;maxInRatio;maxOutRatio;minTradingLimit;amplification;id;fee;totalIssuance;static fromPool(e){return new at(e.address,e.tokens,e.maxInRatio,e.maxOutRatio,e.minTradingLimit,e.amplification,e.id,e.fee,e.totalIssuance)}constructor(e,t,n,r,o,s,l,u,p){this.type="Stableswap",this.address=e,this.tokens=t,this.maxInRatio=n,this.maxOutRatio=r,this.minTradingLimit=o,this.amplification=s,this.id=l,this.fee=u,this.totalIssuance=p}validatePair(e,t){return!0}parsePair(e,t){let n=new Map(this.tokens.map(u=>[u.id,u])),r=n.get(e),o=n.get(t);if(r==null)throw new Error("Pool does not contain tokenIn");if(o==null)throw new Error("Pool does not contain tokenOut");let s=D(r.balance),l=D(o.balance);return{assetIn:e,assetOut:t,decimalsIn:r.decimals,decimalsOut:o.decimals,balanceIn:s,balanceOut:l}}validateAndBuy(e,t,n){let r=this.calculateInGivenOut(e,t),o=this.calculateInGivenOut(e,t,n),s=Ne(n.fee),l=[];return t.isLessThan(this.minTradingLimit)&&l.push("InsufficientTradingAmount"),{amountIn:o,calculatedIn:r,amountOut:t,feePct:s,errors:l}}validateAndSell(e,t,n){let r=this.calculateOutGivenIn(e,t),o=this.calculateOutGivenIn(e,t,n),s=Ne(n.fee),l=[];return t.isLessThan(this.minTradingLimit)&&l.push("InsufficientTradingAmount"),{amountIn:t,calculatedOut:r,amountOut:o,feePct:s,errors:l}}calculateIn(e,t,n){let r=xe.calculateInGivenOut(this.getReserves(),Number(e.assetIn),Number(e.assetOut),t.toFixed(0),this.amplification,n?Pe(n.fee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateAddOneAsset(e,t,n){let r=xe.calculateAddOneAsset(this.getReserves(),t.toFixed(0),Number(e.assetIn),this.amplification,this.totalIssuance,n?Pe(n.fee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateSharesForAmount(e,t,n){let r=xe.calculateSharesForAmount(this.getReserves(),Number(e.assetOut),t.toFixed(0),this.amplification,this.totalIssuance,n?Pe(n.fee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateInGivenOut(e,t,n){return e.assetOut==this.id?this.calculateAddOneAsset(e,t,n):e.assetIn==this.id?this.calculateSharesForAmount(e,t,n):this.calculateIn(e,t,n)}spotPriceInGivenOut(e){let t=ue(ye,e.decimalsOut);return e.assetOut==this.id?this.calculateAddOneAsset(e,t):e.assetIn==this.id?this.calculateSharesForAmount(e,t):this.calculateIn(e,t)}calculateOut(e,t,n){let r=xe.calculateOutGivenIn(this.getReserves(),Number(e.assetIn),Number(e.assetOut),t.toFixed(0),this.amplification,n?Pe(n.fee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateWithdrawOneAsset(e,t,n){let r=xe.calculateLiquidityOutOneAsset(this.getReserves(),t.toFixed(0),Number(e.assetOut),this.amplification,this.totalIssuance,n?Pe(n.fee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateShares(e,t,n){let r=xe.calculateShares(this.getReserves(),this.getAssets(e.assetIn,t),this.amplification,this.totalIssuance,n?Pe(n.fee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateOutGivenIn(e,t,n){return e.assetIn==this.id?this.calculateWithdrawOneAsset(e,t,n):e.assetOut==this.id?this.calculateShares(e,t,n):this.calculateOut(e,t,n)}spotPriceOutGivenIn(e){let t=ue(ye,e.decimalsIn);return e.assetIn==this.id?this.calculateWithdrawOneAsset(e,t):e.assetOut==this.id?this.calculateShares(e,t):this.calculateOut(e,t)}calculateTradeFee(e,t){let n=xe.calculatePoolTradeFee(e.toString(),t.fee[0],t.fee[1]);return D(n)}getReserves(){let e=this.tokens.filter(t=>t.id!=this.id).map(({id:t,balance:n,decimals:r})=>({asset_id:Number(t),amount:n,decimals:r}));return JSON.stringify(e)}getAssets(e,t){let n={asset_id:Number(e),amount:t.toFixed(0)};return JSON.stringify([n])}};var he=vt(Jn()),He=class{static getSpotPrice(e,t,n){return(0,he.get_spot_price)(e,t,n)}static calculateInGivenOut(e,t,n){return(0,he.calculate_in_given_out)(e,t,n)}static calculateOutGivenIn(e,t,n){return(0,he.calculate_out_given_in)(e,t,n)}static calculatePoolTradeFee(e,t,n){return(0,he.calculate_pool_trade_fee)(e,t,n)}static calculateLiquidityIn(e,t,n){return(0,he.calculate_liquidity_in)(e,t,n)}static calculateShares(e,t,n){return(0,he.calculate_shares)(e,t,n)}static calculateLiquidityOutAssetA(e,t,n,r){return(0,he.calculate_liquidity_out_asset_a)(e,t,n,r)}static calculateLiquidityOutAssetB(e,t,n,r){return(0,he.calculate_liquidity_out_asset_b)(e,t,n,r)}};var Ke=class{type;address;tokens;maxInRatio;maxOutRatio;minTradingLimit;static fromPool(e){return new Ke(e.address,e.tokens,e.maxInRatio,e.maxOutRatio,e.minTradingLimit)}constructor(e,t,n,r,o){this.type="Xyk",this.address=e,this.tokens=t,this.maxInRatio=n,this.maxOutRatio=r,this.minTradingLimit=o}validatePair(e,t){return!0}parsePair(e,t){let n=new Map(this.tokens.map(u=>[u.id,u])),r=n.get(e),o=n.get(t);if(r==null)throw new Error("Pool does not contain tokenIn");if(o==null)throw new Error("Pool does not contain tokenOut");let s=D(r.balance),l=D(o.balance);return{assetIn:e,assetOut:t,decimalsIn:r.decimals,decimalsOut:o.decimals,balanceIn:s,balanceOut:l}}validateAndBuy(e,t,n){let r=this.calculateInGivenOut(e,t),o=this.calculateTradeFee(r,n),s=Ne(n.exchangeFee),l=r.plus(o),u=[];t.isLessThan(this.minTradingLimit)&&u.push("InsufficientTradingAmount");let p=e.balanceOut.div(this.maxOutRatio);t.isGreaterThan(p)&&u.push("MaxOutRatioExceeded");let P=e.balanceIn.div(this.maxInRatio);return l.isGreaterThan(P)&&u.push("MaxInRatioExceeded"),{amountIn:l,calculatedIn:r,amountOut:t,feePct:s,errors:u}}validateAndSell(e,t,n){let r=this.calculateOutGivenIn(e,t),o=this.calculateTradeFee(r,n),s=Ne(n.exchangeFee),l=r.minus(o),u=[];t.isLessThan(this.minTradingLimit)&&u.push("InsufficientTradingAmount");let p=e.balanceIn.div(this.maxInRatio);t.isGreaterThan(p)&&u.push("MaxInRatioExceeded");let P=e.balanceOut.div(this.maxOutRatio);return l.isGreaterThan(P)&&u.push("MaxOutRatioExceeded"),{amountIn:t,calculatedOut:r,amountOut:l,feePct:s,errors:u}}calculateInGivenOut(e,t){let n=He.calculateInGivenOut(e.balanceIn.toString(),e.balanceOut.toString(),t.toFixed(0)),r=D(n);return r.isNegative()?z:r}calculateOutGivenIn(e,t){let n=He.calculateOutGivenIn(e.balanceIn.toString(),e.balanceOut.toString(),t.toFixed(0)),r=D(n);return r.isNegative()?z:r}spotPriceInGivenOut(e){let t=He.getSpotPrice(e.balanceOut.toString(),e.balanceIn.toString(),ue(ye,e.decimalsOut).toString());return D(t)}spotPriceOutGivenIn(e){let t=He.getSpotPrice(e.balanceIn.toString(),e.balanceOut.toString(),ue(ye,e.decimalsIn).toString());return D(t)}calculateTradeFee(e,t){let n=He.calculatePoolTradeFee(e.toString(),t.exchangeFee[0],t.exchangeFee[1]);return D(n)}};var lt=class{static get(e){switch(e.type){case"Xyk":return Ke.fromPool(e);case"Omnipool":return $e.fromPool(e);case"Lbp":return Xe.fromPool(e);case"Stableswap":return at.fromPool(e);default:throw new Error("Pool type "+e.type+" is not supported yet")}}};var Ve=class{routeSuggester;routerOptions;poolService;defaultRouterOptions={includeOnly:[]};constructor(e,t){this.poolService=e,this.routeSuggester=new dt,this.routerOptions={...this.defaultRouterOptions,...t}}async getPools(){let e=this.routerOptions.includeOnly;return await this.poolService.getPools(e)}async getAllAssets(){let e=await this.getPools();if(e.length===0)throw new Error("No pools configured");let t=await this.getAssets(e);return[...new Map(t).values()]}async getAssetPairs(e){let t=await this.getPools();if(t.length===0)throw new Error("No pools configured");let{assets:n,poolsMap:r}=await this.validateToken(e,t),s=this.getPaths(e,null,r,t).map(l=>l[l.length-1].assetOut);return this.toPoolAssets([...new Set(s)],n)}async getAllPaths(e,t){let n=await this.getPools();if(n.length===0)throw new Error("No pools configured");let{poolsMap:r}=await this.validateTokenPair(e,t,n);return this.getPaths(e,t,r,n)}async getAssets(e){let t=e.map(n=>n.tokens.map(({id:r,symbol:o,icon:s})=>({id:r,symbol:o,icon:s}))).flat();return new Map(t.map(n=>[n.id,n]))}getPaths(e,t,n,r){return this.routeSuggester.getProposals(e,t,r).filter(l=>this.validPath(l,n)).map(l=>this.toHops(l,n))}async validateTokenPair(e,t,n){let r=await this.getAssets(n);if(r.get(e)==null)throw new Error(e+" is not supported token");if(r.get(t)==null)throw new Error(t+" is not supported token");let o=this.getPoolMap(n);return{assets:r,poolsMap:o}}async validateToken(e,t){let n=await this.getAssets(t);if(n.get(e)==null)throw new Error(e+" is not supported token");let r=this.getPoolMap(t);return{assets:n,poolsMap:r}}getPoolMap(e){return new Map(e.map(t=>[t.address,lt.get(t)]))}validPath(e,t){return e.length>0&&e.map(n=>this.validEdge(n,t)).reduce((n,r)=>n&&r)}validEdge([e,t,n],r){return r.get(e)?.validatePair(t,n)||!1}toHops(e,t){return e.map(([n,r,o])=>{let s=t.get(n);return{poolAddress:n,poolId:s?.id,pool:s?.type,assetIn:r,assetOut:o}})}toPoolAssets(e,t){return e.map(n=>{let r=t.get(n);return{id:n,symbol:r?.symbol,icon:r?.icon}})}};function Xr(i,e){return i.minus(e).abs().div(i.plus(e).div(2)).multipliedBy(100).decimalPlaces(2)}function ct(i,e){return i.minus(e).div(e).multipliedBy(100).decimalPlaces(2)}function yn(i,e){return ye.minus(e.div(i)).multipliedBy(100).decimalPlaces(2)}function xn(i,e){return e.div(i).minus(ye).multipliedBy(100).decimalPlaces(2)}var wt=class extends Ve{isDirectTrade(e){return e.length==1}findBestSellRoute(e){let t=e.sort((n,r)=>{let o=n[n.length-1].amountOut,s=r[r.length-1].amountOut;return o.isGreaterThan(s)?-1:1});return t.find(n=>n.every(r=>r.errors.length==0))||t[0]}getRouteFeeRange(e){if(e.filter(n=>n.tradeFeeRange).length>0){let n=e.map(o=>o.tradeFeeRange?.[0]??o.tradeFeePct).reduce((o,s)=>o+s),r=e.map(o=>o.tradeFeeRange?.[1]??o.tradeFeePct).reduce((o,s)=>o+s);return[n,r]}}getPoolFeeRange(e){let t=e.min?Ne(e.min):void 0,n=e.max?Ne(e.max):void 0;if(t&&n)return[t,n]}async getBestSell(e,t,n){let r=await super.getPools();if(r.length===0)throw new Error("No pools configured");let{poolsMap:o}=await super.validateTokenPair(e,t,r),s=super.getPaths(e,t,o,r);if(s.length===0)throw new nt(e,t);let l=s.map(async H=>await this.toSellSwaps(n,H,o)),u=await Promise.all(l),p=this.findBestSellRoute(u),P=p[0],S=p[p.length-1],T=this.isDirectTrade(p),F=p.map(H=>H.spotPrice.shiftedBy(-1*H.assetOutDecimals)).reduce((H,a)=>H.multipliedBy(a)),k=ue(F,S.assetOutDecimals).decimalPlaces(0,1),L=P.amountIn.shiftedBy(-1*P.assetInDecimals).multipliedBy(k),E=ct(S.calculatedOut,L),G=T?S.calculatedOut:this.calculateDelta0Y(P.amountIn,p,o),v=S.amountOut,q=T?S.tradeFeePct:yn(G,v).toNumber(),j=G.minus(v),te=this.getRouteFeeRange(p),V=H=>this.poolService.buildSellTx(e,t,P.amountIn,H,p.map(a=>a));return{type:"Sell",amountIn:P.amountIn,amountOut:S.amountOut,spotPrice:k,tradeFee:j,tradeFeePct:q,tradeFeeRange:te,priceImpactPct:E.toNumber(),swaps:p,toTx:V,toHuman(){return{type:"Sell",amountIn:pe(P.amountIn,P.assetInDecimals),amountOut:pe(S.amountOut,S.assetOutDecimals),spotPrice:pe(k,S.assetOutDecimals),tradeFee:pe(j,S.assetOutDecimals),tradeFeePct:q,tradeFeeRange:te,priceImpactPct:E.toNumber(),swaps:p.map(H=>H.toHuman())}}}}calculateDelta0Y(e,t,n){let r=[];for(let o=0;o<t.length;o++){let s=t[o],l=n.get(s.poolAddress);if(l==null)throw new Error("Pool does not exit");let u=l.parsePair(s.assetIn,s.assetOut),p;o>0?p=r[o-1]:p=e;let P=l.calculateOutGivenIn(u,p);r.push(P)}return r[r.length-1]}async toSellSwaps(e,t,n){let r=[];for(let o=0;o<t.length;o++){let s=t[o],l=n.get(s.poolAddress);if(l==null)throw new Error("Pool does not exit");let u=l.parsePair(s.assetIn,s.assetOut),p;o>0?p=r[o-1].amountOut:p=ue(D(e),u.decimalsIn).decimalPlaces(0,1);let P=await this.poolService.getPoolFees(u.assetOut,l),{amountOut:S,calculatedOut:T,feePct:F,errors:k}=l.validateAndSell(u,p,P),L=this.getPoolFeeRange(P),E=l.spotPriceOutGivenIn(u),G=p.shiftedBy(-1*u.decimalsIn).multipliedBy(E),v=ct(T,G);r.push({...s,assetInDecimals:u.decimalsIn,assetOutDecimals:u.decimalsOut,amountIn:p,calculatedOut:T,amountOut:S,spotPrice:E,tradeFeePct:F,tradeFeeRange:L,priceImpactPct:v.toNumber(),errors:k,toHuman(){return{...s,amountIn:pe(p,u.decimalsIn),calculatedOut:pe(T,u.decimalsOut),amountOut:pe(S,u.decimalsOut),spotPrice:pe(E,u.decimalsOut),tradeFeePct:F,tradeFeeRange:L,priceImpactPct:v.toNumber(),errors:k}}})}return r}async getBestSpotPrice(e,t){let n=await super.getPools();if(n.length===0)throw new Error("No pools configured");let{poolsMap:r}=await super.validateTokenPair(e,t,n),o=super.getPaths(e,t,r,n);if(o.length===0)return Promise.resolve(void 0);let s=o.map(async T=>await this.toSellSwaps("1",T,r)),l=await Promise.all(s),u=this.findBestSellRoute(l),p=u.map(T=>T.spotPrice.shiftedBy(-1*T.assetOutDecimals)).reduce((T,F)=>T.multipliedBy(F)),P=u[u.length-1].assetOutDecimals;return{amount:ue(p,P).decimalPlaces(0,1),decimals:P}}findBestBuyRoute(e){let t=e.sort((n,r)=>{let o=n[0].amountIn,s=r[0].amountIn;return o.isGreaterThan(s)?1:-1});return t.find(n=>n.every(r=>r.errors.length==0))||t[0]}async getBestBuy(e,t,n){let r=await super.getPools();if(r.length===0)throw new Error("No pools configured");let{poolsMap:o}=await super.validateTokenPair(e,t,r),s=super.getPaths(e,t,o,r);if(s.length===0)throw new nt(e,t);let l=s.map(async H=>await this.toBuySwaps(n,H,o)),u=await Promise.all(l),p=this.findBestBuyRoute(u),P=p[p.length-1],S=p[0],T=this.isDirectTrade(p),F=p.map(H=>H.spotPrice.shiftedBy(-1*H.assetInDecimals)).reduce((H,a)=>H.multipliedBy(a)),k=ue(F,S.assetInDecimals).decimalPlaces(0,1),L=P.amountOut.shiftedBy(-1*P.assetOutDecimals).multipliedBy(k),E;S.calculatedIn.isZero()?E=-100:E=ct(L,S.calculatedIn).toNumber();let G=T?S.calculatedIn:this.calculateDelta0X(P.amountOut,p,o),v=S.amountIn,q=T?S.tradeFeePct:xn(G,v),j=v.minus(G),te=this.getRouteFeeRange(p),V=H=>this.poolService.buildBuyTx(e,t,P.amountOut,H,p.map(a=>a));return{type:"Buy",amountOut:P.amountOut,amountIn:S.amountIn,spotPrice:k,tradeFee:j,tradeFeePct:q,tradeFeeRange:te,priceImpactPct:E,swaps:p,toTx:V,toHuman(){return{type:"Buy",amountOut:pe(P.amountOut,P.assetOutDecimals),amountIn:pe(S.amountIn,S.assetInDecimals),spotPrice:pe(k,S.assetInDecimals),tradeFee:pe(j,S.assetInDecimals),tradeFeePct:q,tradeFeeRange:te,priceImpactPct:E,swaps:p.map(H=>H.toHuman())}}}}calculateDelta0X(e,t,n){let r=[];for(let o=t.length-1;o>=0;o--){let s=t[o],l=n.get(s.poolAddress);if(l==null)throw new Error("Pool does not exit");let u=l.parsePair(s.assetIn,s.assetOut),p;o==t.length-1?p=e:p=r[0];let P=l.calculateInGivenOut(u,p);r.unshift(P)}return r[0]}async toBuySwaps(e,t,n){let r=[];for(let o=t.length-1;o>=0;o--){let s=t[o],l=n.get(s.poolAddress);if(l==null)throw new Error("Pool does not exit");let u=l.parsePair(s.assetIn,s.assetOut),p;o==t.length-1?p=ue(D(e),u.decimalsOut).decimalPlaces(0,1):p=r[0].amountIn;let P=await this.poolService.getPoolFees(u.assetIn,l),{amountIn:S,calculatedIn:T,feePct:F,errors:k}=l.validateAndBuy(u,p,P),L=this.getPoolFeeRange(P),E=l.spotPriceInGivenOut(u),G=p.shiftedBy(-1*u.decimalsOut).multipliedBy(E),v;T.isZero()?v=-100:v=ct(G,T).toNumber(),r.unshift({...s,assetInDecimals:u.decimalsIn,assetOutDecimals:u.decimalsOut,amountOut:p,calculatedIn:T,amountIn:S,spotPrice:E,tradeFeePct:F,tradeFeeRange:L,priceImpactPct:v,errors:k,toHuman(){return{...s,amountOut:pe(p,u.decimalsOut),calculatedIn:pe(T,u.decimalsIn),amountIn:pe(S,u.decimalsIn),spotPrice:pe(E,u.decimalsIn),tradeFeePct:F,tradeFeeRange:L,priceImpactPct:v,errors:k}}})}return r}};0&&(module.exports={AssetClient,AssetNotFound,BASILISK_PARACHAIN_ID,BalanceClient,BigNumber,CachingPoolService,DECIMAL_PLACES,DENOMINATOR,HYDRADX_PARACHAIN_ID,HYDRADX_SS58_PREFIX,INFINITY,LbpMath,LbpPool,ONE,OmniMath,OmniPool,PoolConfigNotFound,PoolError,PoolFactory,PoolNotFound,PoolService,PoolType,ProviderConfigNotFound,RUNTIME_DECIMALS,RouteNotFound,Router,SYSTEM_ASSET_DECIMALS,SYSTEM_ASSET_ID,StorageConfigNotFound,SubscriptionNotSupported,TradeRouter,TradeType,XykMath,XykPool,ZERO,bnum,calculateBuyFee,calculateDiffToAvg,calculateDiffToRef,calculateSellFee,scale});
|