@galacticcouncil/sdk 0.7.1 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.cjs +2 -2
- package/build/index.mjs +2 -2
- package/build/types/client/AssetClient.d.ts +0 -1
- package/build/types/pool/omni/OmniPool.d.ts +3 -0
- package/build/types/pool/stable/StableSwap.d.ts +12 -5
- package/build/types/pool/stable/StableSwapClient.d.ts +1 -0
- package/build/types/types.d.ts +4 -1
- package/package.json +1 -1
package/build/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var jn=Object.create;var vt=Object.defineProperty;var Zn=Object.getOwnPropertyDescriptor;var Qn=Object.getOwnPropertyNames;var er=Object.getPrototypeOf,tr=Object.prototype.hasOwnProperty;var St=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),nr=(i,e)=>{for(var t in e)vt(i,t,{get:e[t],enumerable:!0})},vn=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Qn(e))!tr.call(i,r)&&r!==t&&vt(i,r,{get:()=>e[r],enumerable:!(n=Zn(e,r))||n.enumerable});return i};var Ot=(i,e,t)=>(t=i!=null?jn(er(i)):{},vn(e||!i||!i.__esModule?vt(t,"default",{value:i,enumerable:!0}):t,i)),rr=i=>vn(vt({},"__esModule",{value:!0}),i);var Tn=St((fo,Je)=>{var ar={},R,{TextEncoder:lr,TextDecoder:cr}=require("util"),re=0,At=null;function Ft(){return(At===null||At.byteLength===0)&&(At=new Uint8Array(R.memory.buffer)),At}var kt=new lr("utf-8"),ur=typeof kt.encodeInto=="function"?function(i,e){return kt.encodeInto(i,e)}:function(i,e){let t=kt.encode(i);return e.set(t),{read:i.length,written:t.length}};function ae(i,e,t){if(t===void 0){let l=kt.encode(i),u=e(l.length,1)>>>0;return Ft().subarray(u,u+l.length).set(l),re=l.length,u}let n=i.length,r=e(n,1)>>>0,o=Ft(),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=Ft().subarray(r+s,r+n),u=ur(i,l);s+=u.written}return re=s,r}var Nt=null;function Me(){return(Nt===null||Nt.byteLength===0)&&(Nt=new Int32Array(R.memory.buffer)),Nt}var Bn=new cr("utf-8",{ignoreBOM:!0,fatal:!0});Bn.decode();function pt(i,e){return i=i>>>0,Bn.decode(Ft().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,B=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,B,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,B=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,B,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,B=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,B,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,B=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,B,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 _r=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),dr=require("fs").readFileSync(_r),pr=new WebAssembly.Module(dr),gr=new WebAssembly.Instance(pr,ar);R=gr.exports;Je.exports.__wasm=R});var kn=St((Vi,ke)=>{var mr={},O,{TextEncoder:fr,TextDecoder:hr}=require("util"),U=0,Dt=null;function ft(){return(Dt===null||Dt.byteLength===0)&&(Dt=new Uint8Array(O.memory.buffer)),Dt}var Ct=new fr("utf-8"),br=typeof Ct.encodeInto=="function"?function(i,e){return Ct.encodeInto(i,e)}:function(i,e){let t=Ct.encode(i);return e.set(t),{read:i.length,written:t.length}};function X(i,e,t){if(t===void 0){let l=Ct.encode(i),u=e(l.length,1)>>>0;return ft().subarray(u,u+l.length).set(l),U=l.length,u}let n=i.length,r=e(n,1)>>>0,o=ft(),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=ft().subarray(r+s,r+n),u=br(i,l);s+=u.written}return U=s,r}var Gt=null;function _e(){return(Gt===null||Gt.byteLength===0)&&(Gt=new Int32Array(O.memory.buffer)),Gt}var Fn=new hr("utf-8",{ignoreBOM:!0,fatal:!0});Fn.decode();function ze(i,e){return i=i>>>0,Fn.decode(ft().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),B=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,B,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),B=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,B,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,B=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,B,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,B=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,B,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),B=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,B,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),B=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,B,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 wr(i,e){return i=i>>>0,ft().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=wr(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),B=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,B,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 Pr=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),yr=require("fs").readFileSync(Pr),xr=new WebAssembly.Module(yr),vr=new WebAssembly.Instance(xr,mr);O=vr.exports;ke.exports.__wasm=O});var Kn=St((Ta,oe)=>{var Nr={},c,{TextEncoder:Fr,TextDecoder:kr}=require("util"),T=0,Jt=null;function jt(){return(Jt===null||Jt.byteLength===0)&&(Jt=new Uint8Array(c.memory.buffer)),Jt}var Zt=new Fr("utf-8"),Er=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 A(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),T=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=Er(i,l);s+=u.written}return T=s,r}var Vt=null;function J(){return(Vt===null||Vt.byteLength===0)&&(Vt=new Int32Array(c.memory.buffer)),Vt}var Yn=new kr("utf-8",{ignoreBOM:!0,fatal:!0});Yn.decode();function me(i,e){return i=i>>>0,Yn.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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),P=T,S=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),B=T,F=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=T,L=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=T;c.calculate_shares(u,p,P,S,B,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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),p=T,P=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),S=T,B=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),F=T;c.calculate_withdrawal_fee(l,u,p,P,S,B,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 B=c.__wbindgen_add_to_stack_pointer(-16),F=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),k=T,L=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),E=T,G=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),v=T,q=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),j=T,te=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),V=T,H=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),a=T,_=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),d=T,b=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),m=T;c.calculate_liquidity_out(B,F,k,L,E,G,v,q,j,te,V,H,a,_,d,b,m);var P=J()[B/4+0],S=J()[B/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 B=c.__wbindgen_add_to_stack_pointer(-16),F=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),k=T,L=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),E=T,G=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),v=T,q=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),j=T,te=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),V=T,H=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),a=T,_=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),d=T,b=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),m=T;c.calculate_liquidity_lrna_out(B,F,k,L,E,G,v,q,j,te,V,H,a,_,d,b,m);var P=J()[B/4+0],S=J()[B/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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),L=T,E=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=T,v=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),q=T,j=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=T,V=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=T,a=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=T,d=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),b=T,m=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=T,y=A(u,c.__wbindgen_malloc,c.__wbindgen_realloc),g=T;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],B=J()[F/4+1];return p=S,P=B,me(S,B)}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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),L=T,E=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=T,v=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),q=T,j=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=T,V=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=T,a=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=T,d=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),b=T,m=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=T,y=A(u,c.__wbindgen_malloc,c.__wbindgen_realloc),g=T;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],B=J()[F/4+1];return p=S,P=B,me(S,B)}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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),L=T,E=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=T,v=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),q=T,j=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=T,V=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=T,a=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=T,d=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),b=T,m=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=T,y=A(u,c.__wbindgen_malloc,c.__wbindgen_realloc),g=T;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],B=J()[F/4+1];return p=S,P=B,me(S,B)}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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),S=T,B=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),F=T,k=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),L=T,E=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),G=T,v=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),q=T;c.calculate_out_given_lrna_in(p,P,S,B,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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),L=T,E=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=T,v=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),q=T,j=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=T,V=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=T,a=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=T,d=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),b=T,m=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=T,y=A(u,c.__wbindgen_malloc,c.__wbindgen_realloc),g=T;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],B=J()[F/4+1];return p=S,P=B,me(S,B)}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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),S=T,B=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),F=T,k=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),L=T,E=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),G=T,v=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),q=T;c.calculate_lrna_in_given_out(p,P,S,B,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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),P=T,S=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),B=T,F=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=T,L=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=T;c.calculate_spot_price(u,p,P,S,B,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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),u=T,p=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),P=T;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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),P=T,S=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),B=T,F=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=T,L=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=T;c.calculate_cap_difference(u,p,P,S,B,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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),o=T,s=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),l=T,u=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),p=T,P=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),S=T;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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),B=T,F=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),k=T,L=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),E=T,G=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),v=T,q=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),j=T,te=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),V=T;c.calculate_tvl_cap_difference(P,S,B,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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),P=T,S=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),B=T,F=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=T,L=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=T;c.calculate_liquidity_hub_in(u,p,P,S,B,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=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),p=T;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 Rr=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),Lr=require("fs").readFileSync(Rr),Mr=new WebAssembly.Module(Lr),Dr=new WebAssembly.Instance(Mr,Nr);c=Dr.exports;oe.exports.__wasm=c});var Vn=St((il,qe)=>{var Gr={},N,{TextEncoder:Cr,TextDecoder:qr}=require("util"),Q=0,Qt=null;function tn(){return(Qt===null||Qt.buffer!==N.memory.buffer)&&(Qt=new Uint8Array(N.memory.buffer)),Qt}var nn=new Cr("utf-8"),Hr=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=Hr(i,l);s+=u.written}return Q=s,r}var en=null;function fe(){return(en===null||en.buffer!==N.memory.buffer)&&(en=new Int32Array(N.memory.buffer)),en}var Jn=new qr("utf-8",{ignoreBOM:!0,fatal:!0});Jn.decode();function Ye(i,e){return Jn.decode(tn().subarray(i,i+e))}qe.exports.calculate_pool_trade_fee=function(i,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),s=ee(i,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q;N.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{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};qe.exports.get_spot_price=function(i,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),s=ee(i,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q,u=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),p=Q,P=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),S=Q;N.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{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};qe.exports.calculate_out_given_in=function(i,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),s=ee(i,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q,u=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),p=Q,P=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),S=Q;N.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{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};qe.exports.calculate_in_given_out=function(i,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),s=ee(i,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q,u=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),p=Q,P=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),S=Q;N.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{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};qe.exports.calculate_liquidity_in=function(i,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),s=ee(i,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q,u=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),p=Q,P=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),S=Q;N.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{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};qe.exports.calculate_shares=function(i,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),s=ee(i,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q,u=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),p=Q,P=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),S=Q;N.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{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};qe.exports.calculate_liquidity_out_asset_a=function(i,e,t,n){try{let s=N.__wbindgen_add_to_stack_pointer(-16),l=ee(i,N.__wbindgen_malloc,N.__wbindgen_realloc),u=Q,p=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),P=Q,S=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),B=Q,F=ee(n,N.__wbindgen_malloc,N.__wbindgen_realloc),k=Q;N.calculate_liquidity_out_asset_a(s,l,u,p,P,S,B,F,k);var r=fe()[s/4+0],o=fe()[s/4+1];return Ye(r,o)}finally{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(r,o)}};qe.exports.calculate_liquidity_out_asset_b=function(i,e,t,n){try{let s=N.__wbindgen_add_to_stack_pointer(-16),l=ee(i,N.__wbindgen_malloc,N.__wbindgen_realloc),u=Q,p=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),P=Q,S=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),B=Q,F=ee(n,N.__wbindgen_malloc,N.__wbindgen_realloc),k=Q;N.calculate_liquidity_out_asset_b(s,l,u,p,P,S,B,F,k);var r=fe()[s/4+0],o=fe()[s/4+1];return Ye(r,o)}finally{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(r,o)}};var Wr=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),Ur=require("fs").readFileSync(Wr),zr=new WebAssembly.Module(Ur),Xr=new WebAssembly.Instance(zr,Gr);N=Xr.exports;qe.exports.__wasm=N});var Yr={};nr(Yr,{AssetClient:()=>et,AssetNotFound:()=>pn,BASILISK_PARACHAIN_ID:()=>Po,BalanceClient:()=>tt,BigNumber:()=>Le,CachingPoolService:()=>Kt,DECIMAL_PLACES:()=>In,DENOMINATOR:()=>_n,HYDRADX_PARACHAIN_ID:()=>wo,HYDRADX_SS58_PREFIX:()=>mt,INFINITY:()=>sr,LbpMath:()=>Te,LbpPool:()=>Xe,ONE:()=>ye,OmniMath:()=>ve,OmniPool:()=>$e,PoolConfigNotFound:()=>dn,PoolError:()=>Ze,PoolFactory:()=>lt,PoolNotFound:()=>bt,PoolService:()=>rt,PoolType:()=>Be,ProviderConfigNotFound:()=>fn,RUNTIME_DECIMALS:()=>gt,RouteNotFound:()=>nt,Router:()=>Ve,SYSTEM_ASSET_DECIMALS:()=>bo,SYSTEM_ASSET_ID:()=>Qe,StorageConfigNotFound:()=>gn,SubscriptionNotSupported:()=>mn,TradeRouter:()=>yt,TradeType:()=>un,XykMath:()=>He,XykPool:()=>Ke,ZERO:()=>z,bnum:()=>D,calculateBuyFee:()=>xn,calculateDiffToAvg:()=>$r,calculateDiffToRef:()=>ct,calculateSellFee:()=>yn,scale:()=>ue});module.exports=rr(Yr);var It=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 or=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 It,s=[];for(s.push([t,""]),o.enqueue(s);o.size()>0;){let l=o.dequeue();if(l==null||l.length>or)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 ir=/^-?(?:\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: ",Ne=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,B=!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(!ir.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))B=d;else throw B=!d,Error(we+"crypto unavailable");else B=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:B,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>=Ne||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),B)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 B=!1,Error(we+"crypto unavailable");if(!B)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,xt,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=Ne,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),xt=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[xt]||0:(Y=[be[xt]],Z=1)}while((xt++<rn||Y[0]!=null)&&Se--);I=Y[0]!=null,le[0]||le.splice(0,1)}if(g==Ne){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)?Tt(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=Tt(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]==Ne&&(I[0]=1));break}else{if(I[x]+=g,I[x]!=Ne)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?Tt(_,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-Bt(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&&Bt(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=Bt(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=Bt(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(_=Ne-1;b>g;){if(w[--b]<I[b]){for(d=b;d&&!w[--d];w[d]=_);--w[d],w[b]+=Ne}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=Ne,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)/Ne|0,g[_]=Ne===g[_]?0:g[_]%Ne;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?Tt(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 Bt(i){var e=i.c.length-1;return Ie(i.e/W)==e&&i.c[e]%2!=0}function Tt(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),sr=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=Ot(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",bo=12,wo=2034,mt=63,Po=2090,_n=1e3;var xo=require("@polkadot/types/lookup");var vo=require("@polkadot/api-base/types/consts");var So=require("@polkadot/api-base/types/errors");var Oo=require("@polkadot/api-base/types/events");var Io=require("@polkadot/api-base/types/storage");var Bo=require("@polkadot/api-base/types/submittable");var To=require("@polkadot/rpc-core/types/jsonrpc");var Ao=require("@polkadot/api-base/types/calls");var Do=require("@polkadot/types/types/registry");var Ho=require("@polkadot/types/lookup");var Wo=require("@polkadot/api-base/types/consts");var Uo=require("@polkadot/api-base/types/errors");var zo=require("@polkadot/api-base/types/events");var Xo=require("@polkadot/api-base/types/storage");var $o=require("@polkadot/api-base/types/submittable");var Yo=require("@polkadot/rpc-core/types/jsonrpc");var Ko=require("@polkadot/api-base/types/calls");var ni=require("@polkadot/types/types/registry");var Et=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 Et{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 Rt=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)),B=u[0].id;return this.poolsData.set(o,s),{address:o,type:"Lbp",fee:s.fee.toJSON(),repayFeeApply:await this.isRepayFeeApplied(B,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 An=require("@polkadot/util-crypto"),Nn=require("@polkadot/util");function pe(i,e){return i.shiftedBy(-1*e).toString()}function Ae(i){return i[0]/i[1]*100}function Pe(i){return i[0]/i[1]}function Fe(i){return[i/1e3,1e3]}var Lt=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,An.encodeAddress)((0,Nn.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 Mt=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 En=require("@polkadot/util"),ht=require("@polkadot/util-crypto");var de=Ot(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 qt=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(B=>B.toString()));if((await this.api.query.omnipool.assets(o)).isSome){let B=this.getOmniPoolAddress(),F=await this.getPoolTokens(B,[o]);u.push(F[0])}let P=await this.getAmplification(s,e),S=await this.getTotalIssueance(o);return this.poolsData.set(o,s),{id:o,address:l,type:"Stableswap",amplification:P,fee:Fe(s.fee.toNumber()),totalIssuance:S,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.syncTokens(n)}});return Promise.all(t)}async syncTokens(e){let t=e.tokens.find(r=>r.id===e.id),n=await this.syncPoolTokens(e.address,e.tokens.filter(r=>r!==t));if(t){let r=this.getOmniPoolAddress(),o=await this.syncPoolTokens(r,[t]);n.push(o[0])}return n}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,ht.encodeAddress)((0,ht.blake2AsHex)(n),63)}getOmniPoolAddress(){return(0,ht.encodeAddress)((0,En.stringToU8a)("modlomnipool".padEnd(32,"\0")),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 bt=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 Mt(this.api),this.omniClient=new Lt(this.api),this.lbpClient=new Rt(this.api),this.stableClient=new qt(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 bt(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 wt=(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 Sr=Ht(()=>"illegal argument(s)"),Rn=i=>{throw new Sr(i)};var Or=Ht(()=>"index out of bounds"),hn=i=>{throw new Or(i)},Wt=(i,e,t)=>(i<e||i>=t)&&hn(i);var Ln=23283064365386963e-26,Ut=class{float(e=1){return this.int()*Ln*e}norm(e=1){return(this.int()*Ln-.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}},Mn=new wn;var Dn=i=>i!=null&&typeof i!="function"&&i.length!==void 0;var Gn=Object.getPrototypeOf({}),zt="function",Cn="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===Cn||typeof e===Cn?!1:(t=Object.getPrototypeOf(i),(t==null||t===Gn)&&(t=Object.getPrototypeOf(e),t==null||t===Gn)?Ar(i,e):typeof i!==zt&&i.length!==void 0&&typeof e!==zt&&e.length!==void 0?Ir(i,e):i instanceof Set&&e instanceof Set?Br(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)},Ir=(i,e,t=ot)=>{let n=i.length;if(n===e.length)for(;n-- >0&&t(i[n],e[n]););return n<0},Br=(i,e,t=ot)=>i.size===e.size&&t([...i.keys()].sort(),[...e.keys()].sort()),Tr=(i,e,t=ot)=>i.size===e.size&&t([...i].sort(),[...e].sort()),Ar=(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 qn=(i,e)=>i!=null&&typeof i[e]=="function";var Hn=i=>qn(i,"xform")?i.xform():i;var Xt=Symbol(),Pn=()=>{};var Wn=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 Un=i=>i instanceof $t?i.deref():i;function*zn(i,e){let t=Hn(i)([Pn,Pn,(n,r)=>r])[2];for(let n of e){let r=t(Xt,n);if(Yt(r)){r=Un(r.deref()),r!==Xt&&(yield r);return}r!==Xt&&(yield r)}}var Xn=(i,e)=>[i[0],i[1],e];function Pt(i,e){return Wn(e)?zn(Pt(i),e):t=>{let n=t[2];return Xn(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 $n("next",this._head)}reverseIterator(){return $n("prev",this.tail)}clear(){this.release()}compare(e,t=wt){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||Dn(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||wt;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*$n(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=Mn){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)&&Rn("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=wt){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 Pt(e=>[e.k,e],this.items)}keys(){return Pt(e=>e.k,this.items)}values(){return Pt(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=Ae(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=Ae(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 $=Ot(Kn()),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=Ae(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=Ae(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=Ot(Vn()),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=Ae(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=Ae(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 $r(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 yt=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?Ae(e.min):void 0,n=e.max?Ae(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],B=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=B?S.calculatedOut:this.calculateDelta0Y(P.amountIn,p,o),v=S.amountOut,q=B?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:B,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(B,G);r.push({...s,assetInDecimals:u.decimalsIn,assetOutDecimals:u.decimalsOut,amountIn:p,calculatedOut:B,amountOut:S,spotPrice:E,tradeFeePct:F,tradeFeeRange:L,priceImpactPct:v.toNumber(),errors:k,toHuman(){return{...s,amountIn:pe(p,u.decimalsIn),calculatedOut:pe(B,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 B=>await this.toSellSwaps("1",B,r)),l=await Promise.all(s),u=this.findBestSellRoute(l),p=u.map(B=>B.spotPrice.shiftedBy(-1*B.assetOutDecimals)).reduce((B,F)=>B.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],B=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=B?S.calculatedIn:this.calculateDelta0X(P.amountOut,p,o),v=S.amountIn,q=B?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:B,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;B.isZero()?v=-100:v=ct(G,B).toNumber(),r.unshift({...s,assetInDecimals:u.decimalsIn,assetOutDecimals:u.decimalsOut,amountOut:p,calculatedIn:B,amountIn:S,spotPrice:E,tradeFeePct:F,tradeFeeRange:L,priceImpactPct:v,errors:k,toHuman(){return{...s,amountOut:pe(p,u.decimalsOut),calculatedIn:pe(B,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});
|
|
1
|
+
"use strict";var jn=Object.create;var St=Object.defineProperty;var Zn=Object.getOwnPropertyDescriptor;var Qn=Object.getOwnPropertyNames;var er=Object.getPrototypeOf,tr=Object.prototype.hasOwnProperty;var vt=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),nr=(s,e)=>{for(var t in e)St(s,t,{get:e[t],enumerable:!0})},Sn=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Qn(e))!tr.call(s,r)&&r!==t&&St(s,r,{get:()=>e[r],enumerable:!(n=Zn(e,r))||n.enumerable});return s};var Ot=(s,e,t)=>(t=s!=null?jn(er(s)):{},Sn(e||!s||!s.__esModule?St(t,"default",{value:s,enumerable:!0}):t,s)),rr=s=>Sn(St({},"__esModule",{value:!0}),s);var Bn=vt((fo,Je)=>{var ar={},R,{TextEncoder:lr,TextDecoder:cr}=require("util"),re=0,At=null;function Ft(){return(At===null||At.byteLength===0)&&(At=new Uint8Array(R.memory.buffer)),At}var kt=new lr("utf-8"),ur=typeof kt.encodeInto=="function"?function(s,e){return kt.encodeInto(s,e)}:function(s,e){let t=kt.encode(s);return e.set(t),{read:s.length,written:t.length}};function ae(s,e,t){if(t===void 0){let l=kt.encode(s),u=e(l.length,1)>>>0;return Ft().subarray(u,u+l.length).set(l),re=l.length,u}let n=s.length,r=e(n,1)>>>0,o=Ft(),i=0;for(;i<n;i++){let l=s.charCodeAt(i);if(l>127)break;o[r+i]=l}if(i!==n){i!==0&&(s=s.slice(i)),r=t(r,n,n=i+s.length*3,1)>>>0;let l=Ft().subarray(r+i,r+n),u=ur(s,l);i+=u.written}return re=i,r}var Nt=null;function Me(){return(Nt===null||Nt.byteLength===0)&&(Nt=new Int32Array(R.memory.buffer)),Nt}var Tn=new cr("utf-8",{ignoreBOM:!0,fatal:!0});Tn.decode();function pt(s,e){return s=s>>>0,Tn.decode(Ft().subarray(s,s+e))}Je.exports.calculate_pool_trade_fee=function(s,e,t){let n,r;try{let l=R.__wbindgen_add_to_stack_pointer(-16),u=ae(s,R.__wbindgen_malloc,R.__wbindgen_realloc),p=re;R.calculate_pool_trade_fee(l,u,p,e,t);var o=Me()[l/4+0],i=Me()[l/4+1];return n=o,r=i,pt(o,i)}finally{R.__wbindgen_add_to_stack_pointer(16),R.__wbindgen_free(n,r,1)}};Je.exports.get_spot_price=function(s,e,t,n,r){let o,i;try{let p=R.__wbindgen_add_to_stack_pointer(-16),P=ae(s,R.__wbindgen_malloc,R.__wbindgen_realloc),v=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,S=ae(r,R.__wbindgen_malloc,R.__wbindgen_realloc),C=re;R.get_spot_price(p,P,v,T,F,k,L,E,G,S,C);var l=Me()[p/4+0],u=Me()[p/4+1];return o=l,i=u,pt(l,u)}finally{R.__wbindgen_add_to_stack_pointer(16),R.__wbindgen_free(o,i,1)}};Je.exports.calculate_out_given_in=function(s,e,t,n,r){let o,i;try{let p=R.__wbindgen_add_to_stack_pointer(-16),P=ae(s,R.__wbindgen_malloc,R.__wbindgen_realloc),v=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,S=ae(r,R.__wbindgen_malloc,R.__wbindgen_realloc),C=re;R.calculate_out_given_in(p,P,v,T,F,k,L,E,G,S,C);var l=Me()[p/4+0],u=Me()[p/4+1];return o=l,i=u,pt(l,u)}finally{R.__wbindgen_add_to_stack_pointer(16),R.__wbindgen_free(o,i,1)}};Je.exports.calculate_in_given_out=function(s,e,t,n,r){let o,i;try{let p=R.__wbindgen_add_to_stack_pointer(-16),P=ae(s,R.__wbindgen_malloc,R.__wbindgen_realloc),v=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,S=ae(r,R.__wbindgen_malloc,R.__wbindgen_realloc),C=re;R.calculate_in_given_out(p,P,v,T,F,k,L,E,G,S,C);var l=Me()[p/4+0],u=Me()[p/4+1];return o=l,i=u,pt(l,u)}finally{R.__wbindgen_add_to_stack_pointer(16),R.__wbindgen_free(o,i,1)}};Je.exports.calculate_linear_weights=function(s,e,t,n,r){let o,i;try{let p=R.__wbindgen_add_to_stack_pointer(-16),P=ae(s,R.__wbindgen_malloc,R.__wbindgen_realloc),v=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,S=ae(r,R.__wbindgen_malloc,R.__wbindgen_realloc),C=re;R.calculate_linear_weights(p,P,v,T,F,k,L,E,G,S,C);var l=Me()[p/4+0],u=Me()[p/4+1];return o=l,i=u,pt(l,u)}finally{R.__wbindgen_add_to_stack_pointer(16),R.__wbindgen_free(o,i,1)}};var _r=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),dr=require("fs").readFileSync(_r),pr=new WebAssembly.Module(dr),mr=new WebAssembly.Instance(pr,ar);R=mr.exports;Je.exports.__wasm=R});var kn=vt((Vi,ke)=>{var gr={},O,{TextEncoder:fr,TextDecoder:hr}=require("util"),U=0,Dt=null;function ft(){return(Dt===null||Dt.byteLength===0)&&(Dt=new Uint8Array(O.memory.buffer)),Dt}var qt=new fr("utf-8"),br=typeof qt.encodeInto=="function"?function(s,e){return qt.encodeInto(s,e)}:function(s,e){let t=qt.encode(s);return e.set(t),{read:s.length,written:t.length}};function X(s,e,t){if(t===void 0){let l=qt.encode(s),u=e(l.length,1)>>>0;return ft().subarray(u,u+l.length).set(l),U=l.length,u}let n=s.length,r=e(n,1)>>>0,o=ft(),i=0;for(;i<n;i++){let l=s.charCodeAt(i);if(l>127)break;o[r+i]=l}if(i!==n){i!==0&&(s=s.slice(i)),r=t(r,n,n=i+s.length*3,1)>>>0;let l=ft().subarray(r+i,r+n),u=br(s,l);i+=u.written}return U=i,r}var Gt=null;function _e(){return(Gt===null||Gt.byteLength===0)&&(Gt=new Int32Array(O.memory.buffer)),Gt}var Fn=new hr("utf-8",{ignoreBOM:!0,fatal:!0});Fn.decode();function ze(s,e){return s=s>>>0,Fn.decode(ft().subarray(s,s+e))}ke.exports.calculate_pool_trade_fee=function(s,e,t){let n,r;try{let l=O.__wbindgen_add_to_stack_pointer(-16),u=X(s,O.__wbindgen_malloc,O.__wbindgen_realloc),p=U;O.calculate_pool_trade_fee(l,u,p,e,t);var o=_e()[l/4+0],i=_e()[l/4+1];return n=o,r=i,ze(o,i)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(n,r,1)}};ke.exports.calculate_out_given_in=function(s,e,t,n,r,o){let i,l;try{let P=O.__wbindgen_add_to_stack_pointer(-16),v=X(s,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),S=U;O.calculate_out_given_in(P,v,T,e,t,F,k,L,E,G,S);var u=_e()[P/4+0],p=_e()[P/4+1];return i=u,l=p,ze(u,p)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(i,l,1)}};ke.exports.calculate_in_given_out=function(s,e,t,n,r,o){let i,l;try{let P=O.__wbindgen_add_to_stack_pointer(-16),v=X(s,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),S=U;O.calculate_in_given_out(P,v,T,e,t,F,k,L,E,G,S);var u=_e()[P/4+0],p=_e()[P/4+1];return i=u,l=p,ze(u,p)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(i,l,1)}};ke.exports.calculate_amplification=function(s,e,t,n,r){let o,i;try{let p=O.__wbindgen_add_to_stack_pointer(-16),P=X(s,O.__wbindgen_malloc,O.__wbindgen_realloc),v=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,S=X(r,O.__wbindgen_malloc,O.__wbindgen_realloc),C=U;O.calculate_amplification(p,P,v,T,F,k,L,E,G,S,C);var l=_e()[p/4+0],u=_e()[p/4+1];return o=l,i=u,ze(l,u)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(o,i,1)}};ke.exports.calculate_shares=function(s,e,t,n,r){let o,i;try{let p=O.__wbindgen_add_to_stack_pointer(-16),P=X(s,O.__wbindgen_malloc,O.__wbindgen_realloc),v=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,S=X(r,O.__wbindgen_malloc,O.__wbindgen_realloc),C=U;O.calculate_shares(p,P,v,T,F,k,L,E,G,S,C);var l=_e()[p/4+0],u=_e()[p/4+1];return o=l,i=u,ze(l,u)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(o,i,1)}};ke.exports.calculate_shares_for_amount=function(s,e,t,n,r,o){let i,l;try{let P=O.__wbindgen_add_to_stack_pointer(-16),v=X(s,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),S=U,C=X(o,O.__wbindgen_malloc,O.__wbindgen_realloc),j=U;O.calculate_shares_for_amount(P,v,T,e,F,k,L,E,G,S,C,j);var u=_e()[P/4+0],p=_e()[P/4+1];return i=u,l=p,ze(u,p)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(i,l,1)}};ke.exports.calculate_add_one_asset=function(s,e,t,n,r,o){let i,l;try{let P=O.__wbindgen_add_to_stack_pointer(-16),v=X(s,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),S=U,C=X(o,O.__wbindgen_malloc,O.__wbindgen_realloc),j=U;O.calculate_add_one_asset(P,v,T,F,k,t,L,E,G,S,C,j);var u=_e()[P/4+0],p=_e()[P/4+1];return i=u,l=p,ze(u,p)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(i,l,1)}};function wr(s,e){return s=s>>>0,ft().subarray(s/1,s/1+e)}ke.exports.pool_account_name=function(s){try{let r=O.__wbindgen_add_to_stack_pointer(-16);O.pool_account_name(r,s);var e=_e()[r/4+0],t=_e()[r/4+1],n=wr(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(s,e,t,n,r,o){let i,l;try{let P=O.__wbindgen_add_to_stack_pointer(-16),v=X(s,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),S=U,C=X(o,O.__wbindgen_malloc,O.__wbindgen_realloc),j=U;O.calculate_liquidity_out_one_asset(P,v,T,F,k,t,L,E,G,S,C,j);var u=_e()[P/4+0],p=_e()[P/4+1];return i=u,l=p,ze(u,p)}finally{O.__wbindgen_add_to_stack_pointer(16),O.__wbindgen_free(i,l,1)}};var Pr=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),yr=require("fs").readFileSync(Pr),xr=new WebAssembly.Module(yr),Sr=new WebAssembly.Instance(xr,gr);O=Sr.exports;ke.exports.__wasm=O});var Kn=vt((Ba,oe)=>{var Nr={},c,{TextEncoder:Fr,TextDecoder:kr}=require("util"),B=0,Jt=null;function jt(){return(Jt===null||Jt.byteLength===0)&&(Jt=new Uint8Array(c.memory.buffer)),Jt}var Zt=new Fr("utf-8"),Er=typeof Zt.encodeInto=="function"?function(s,e){return Zt.encodeInto(s,e)}:function(s,e){let t=Zt.encode(s);return e.set(t),{read:s.length,written:t.length}};function A(s,e,t){if(t===void 0){let l=Zt.encode(s),u=e(l.length)>>>0;return jt().subarray(u,u+l.length).set(l),B=l.length,u}let n=s.length,r=e(n)>>>0,o=jt(),i=0;for(;i<n;i++){let l=s.charCodeAt(i);if(l>127)break;o[r+i]=l}if(i!==n){i!==0&&(s=s.slice(i)),r=t(r,n,n=i+s.length*3)>>>0;let l=jt().subarray(r+i,r+n),u=Er(s,l);i+=u.written}return B=i,r}var Vt=null;function J(){return(Vt===null||Vt.byteLength===0)&&(Vt=new Int32Array(c.memory.buffer)),Vt}var Yn=new kr("utf-8",{ignoreBOM:!0,fatal:!0});Yn.decode();function fe(s,e){return s=s>>>0,Yn.decode(jt().subarray(s,s+e))}oe.exports.calculate_shares=function(s,e,t,n){let r,o;try{let u=c.__wbindgen_add_to_stack_pointer(-16),p=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),P=B,v=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),T=B,F=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B;c.calculate_shares(u,p,P,v,T,F,k,L,E);var i=J()[u/4+0],l=J()[u/4+1];return r=i,o=l,fe(i,l)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(r,o)}};oe.exports.calculate_withdrawal_fee=function(s,e,t){let n,r;try{let l=c.__wbindgen_add_to_stack_pointer(-16),u=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),p=B,P=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),v=B,T=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),F=B;c.calculate_withdrawal_fee(l,u,p,P,v,T,F);var o=J()[l/4+0],i=J()[l/4+1];return n=o,r=i,fe(o,i)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(n,r)}};oe.exports.calculate_liquidity_out=function(s,e,t,n,r,o,i,l){let u,p;try{let T=c.__wbindgen_add_to_stack_pointer(-16),F=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B,G=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),S=B,C=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),j=B,te=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),V=B,H=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),a=B,_=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),d=B,b=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),g=B;c.calculate_liquidity_out(T,F,k,L,E,G,S,C,j,te,V,H,a,_,d,b,g);var P=J()[T/4+0],v=J()[T/4+1];return u=P,p=v,fe(P,v)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(u,p)}};oe.exports.calculate_liquidity_lrna_out=function(s,e,t,n,r,o,i,l){let u,p;try{let T=c.__wbindgen_add_to_stack_pointer(-16),F=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B,G=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),S=B,C=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),j=B,te=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),V=B,H=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),a=B,_=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),d=B,b=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),g=B;c.calculate_liquidity_lrna_out(T,F,k,L,E,G,S,C,j,te,V,H,a,_,d,b,g);var P=J()[T/4+0],v=J()[T/4+1];return u=P,p=v,fe(P,v)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(u,p)}};oe.exports.recalculate_asset_fee=function(s,e,t,n,r,o,i,l,u){let p,P;try{let F=c.__wbindgen_add_to_stack_pointer(-16),k=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,S=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),C=B,j=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=B,V=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=B,a=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=B,d=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),b=B,g=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=B,y=A(u,c.__wbindgen_malloc,c.__wbindgen_realloc),m=B;c.recalculate_asset_fee(F,k,L,E,G,S,C,j,te,V,H,a,_,d,b,g,h,y,m);var v=J()[F/4+0],T=J()[F/4+1];return p=v,P=T,fe(v,T)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(p,P)}};oe.exports.recalculate_protocol_fee=function(s,e,t,n,r,o,i,l,u){let p,P;try{let F=c.__wbindgen_add_to_stack_pointer(-16),k=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,S=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),C=B,j=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=B,V=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=B,a=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=B,d=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),b=B,g=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=B,y=A(u,c.__wbindgen_malloc,c.__wbindgen_realloc),m=B;c.recalculate_protocol_fee(F,k,L,E,G,S,C,j,te,V,H,a,_,d,b,g,h,y,m);var v=J()[F/4+0],T=J()[F/4+1];return p=v,P=T,fe(v,T)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(p,P)}};oe.exports.calculate_out_given_in=function(s,e,t,n,r,o,i,l,u){let p,P;try{let F=c.__wbindgen_add_to_stack_pointer(-16),k=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,S=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),C=B,j=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=B,V=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=B,a=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=B,d=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),b=B,g=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=B,y=A(u,c.__wbindgen_malloc,c.__wbindgen_realloc),m=B;c.calculate_out_given_in(F,k,L,E,G,S,C,j,te,V,H,a,_,d,b,g,h,y,m);var v=J()[F/4+0],T=J()[F/4+1];return p=v,P=T,fe(v,T)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(p,P)}};oe.exports.calculate_out_given_lrna_in=function(s,e,t,n,r){let o,i;try{let p=c.__wbindgen_add_to_stack_pointer(-16),P=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),v=B,T=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),F=B,k=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,S=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),C=B;c.calculate_out_given_lrna_in(p,P,v,T,F,k,L,E,G,S,C);var l=J()[p/4+0],u=J()[p/4+1];return o=l,i=u,fe(l,u)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(o,i)}};oe.exports.calculate_in_given_out=function(s,e,t,n,r,o,i,l,u){let p,P;try{let F=c.__wbindgen_add_to_stack_pointer(-16),k=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,S=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),C=B,j=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),te=B,V=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),H=B,a=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),_=B,d=A(i,c.__wbindgen_malloc,c.__wbindgen_realloc),b=B,g=A(l,c.__wbindgen_malloc,c.__wbindgen_realloc),h=B,y=A(u,c.__wbindgen_malloc,c.__wbindgen_realloc),m=B;c.calculate_in_given_out(F,k,L,E,G,S,C,j,te,V,H,a,_,d,b,g,h,y,m);var v=J()[F/4+0],T=J()[F/4+1];return p=v,P=T,fe(v,T)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(p,P)}};oe.exports.calculate_lrna_in_given_out=function(s,e,t,n,r){let o,i;try{let p=c.__wbindgen_add_to_stack_pointer(-16),P=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),v=B,T=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),F=B,k=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),L=B,E=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),G=B,S=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),C=B;c.calculate_lrna_in_given_out(p,P,v,T,F,k,L,E,G,S,C);var l=J()[p/4+0],u=J()[p/4+1];return o=l,i=u,fe(l,u)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(o,i)}};oe.exports.calculate_spot_price=function(s,e,t,n){let r,o;try{let u=c.__wbindgen_add_to_stack_pointer(-16),p=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),P=B,v=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),T=B,F=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B;c.calculate_spot_price(u,p,P,v,T,F,k,L,E);var i=J()[u/4+0],l=J()[u/4+1];return r=i,o=l,fe(i,l)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(r,o)}};oe.exports.calculate_lrna_spot_price=function(s,e){let t,n;try{let i=c.__wbindgen_add_to_stack_pointer(-16),l=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),u=B,p=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),P=B;c.calculate_lrna_spot_price(i,l,u,p,P);var r=J()[i/4+0],o=J()[i/4+1];return t=r,n=o,fe(r,o)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(t,n)}};oe.exports.calculate_cap_difference=function(s,e,t,n){let r,o;try{let u=c.__wbindgen_add_to_stack_pointer(-16),p=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),P=B,v=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),T=B,F=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B;c.calculate_cap_difference(u,p,P,v,T,F,k,L,E);var i=J()[u/4+0],l=J()[u/4+1];return r=i,o=l,fe(i,l)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(r,o)}};oe.exports.verify_asset_cap=function(s,e,t,n){let r=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),o=B,i=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),l=B,u=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),p=B,P=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),v=B;return c.verify_asset_cap(r,o,i,l,u,p,P,v)!==0};oe.exports.calculate_tvl_cap_difference=function(s,e,t,n,r,o){let i,l;try{let P=c.__wbindgen_add_to_stack_pointer(-16),v=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),T=B,F=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B,G=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),S=B,C=A(r,c.__wbindgen_malloc,c.__wbindgen_realloc),j=B,te=A(o,c.__wbindgen_malloc,c.__wbindgen_realloc),V=B;c.calculate_tvl_cap_difference(P,v,T,F,k,L,E,G,S,C,j,te,V);var u=J()[P/4+0],p=J()[P/4+1];return i=u,l=p,fe(u,p)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(i,l)}};oe.exports.calculate_liquidity_hub_in=function(s,e,t,n){let r,o;try{let u=c.__wbindgen_add_to_stack_pointer(-16),p=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),P=B,v=A(e,c.__wbindgen_malloc,c.__wbindgen_realloc),T=B,F=A(t,c.__wbindgen_malloc,c.__wbindgen_realloc),k=B,L=A(n,c.__wbindgen_malloc,c.__wbindgen_realloc),E=B;c.calculate_liquidity_hub_in(u,p,P,v,T,F,k,L,E);var i=J()[u/4+0],l=J()[u/4+1];return r=i,o=l,fe(i,l)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(r,o)}};oe.exports.is_sell_allowed=function(s){return c.is_sell_allowed(s)!==0};oe.exports.is_buy_allowed=function(s){return c.is_buy_allowed(s)!==0};oe.exports.is_add_liquidity_allowed=function(s){return c.is_add_liquidity_allowed(s)!==0};oe.exports.is_remove_liquidity_allowed=function(s){return c.is_remove_liquidity_allowed(s)!==0};oe.exports.calculate_pool_trade_fee=function(s,e,t){let n,r;try{let l=c.__wbindgen_add_to_stack_pointer(-16),u=A(s,c.__wbindgen_malloc,c.__wbindgen_realloc),p=B;c.calculate_pool_trade_fee(l,u,p,e,t);var o=J()[l/4+0],i=J()[l/4+1];return n=o,r=i,fe(o,i)}finally{c.__wbindgen_add_to_stack_pointer(16),c.__wbindgen_free(n,r)}};var Rr=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),Lr=require("fs").readFileSync(Rr),Mr=new WebAssembly.Module(Lr),Dr=new WebAssembly.Instance(Mr,Nr);c=Dr.exports;oe.exports.__wasm=c});var Vn=vt((sl,Ce)=>{var Gr={},N,{TextEncoder:qr,TextDecoder:Cr}=require("util"),Q=0,Qt=null;function tn(){return(Qt===null||Qt.buffer!==N.memory.buffer)&&(Qt=new Uint8Array(N.memory.buffer)),Qt}var nn=new qr("utf-8"),Hr=typeof nn.encodeInto=="function"?function(s,e){return nn.encodeInto(s,e)}:function(s,e){let t=nn.encode(s);return e.set(t),{read:s.length,written:t.length}};function ee(s,e,t){if(t===void 0){let l=nn.encode(s),u=e(l.length);return tn().subarray(u,u+l.length).set(l),Q=l.length,u}let n=s.length,r=e(n),o=tn(),i=0;for(;i<n;i++){let l=s.charCodeAt(i);if(l>127)break;o[r+i]=l}if(i!==n){i!==0&&(s=s.slice(i)),r=t(r,n,n=i+s.length*3);let l=tn().subarray(r+i,r+n),u=Hr(s,l);i+=u.written}return Q=i,r}var en=null;function he(){return(en===null||en.buffer!==N.memory.buffer)&&(en=new Int32Array(N.memory.buffer)),en}var Jn=new Cr("utf-8",{ignoreBOM:!0,fatal:!0});Jn.decode();function Ye(s,e){return Jn.decode(tn().subarray(s,s+e))}Ce.exports.calculate_pool_trade_fee=function(s,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),i=ee(s,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q;N.calculate_pool_trade_fee(o,i,l,e,t);var n=he()[o/4+0],r=he()[o/4+1];return Ye(n,r)}finally{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};Ce.exports.get_spot_price=function(s,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),i=ee(s,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q,u=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),p=Q,P=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),v=Q;N.get_spot_price(o,i,l,u,p,P,v);var n=he()[o/4+0],r=he()[o/4+1];return Ye(n,r)}finally{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};Ce.exports.calculate_out_given_in=function(s,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),i=ee(s,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q,u=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),p=Q,P=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),v=Q;N.calculate_out_given_in(o,i,l,u,p,P,v);var n=he()[o/4+0],r=he()[o/4+1];return Ye(n,r)}finally{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};Ce.exports.calculate_in_given_out=function(s,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),i=ee(s,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q,u=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),p=Q,P=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),v=Q;N.calculate_in_given_out(o,i,l,u,p,P,v);var n=he()[o/4+0],r=he()[o/4+1];return Ye(n,r)}finally{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};Ce.exports.calculate_liquidity_in=function(s,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),i=ee(s,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q,u=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),p=Q,P=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),v=Q;N.calculate_liquidity_in(o,i,l,u,p,P,v);var n=he()[o/4+0],r=he()[o/4+1];return Ye(n,r)}finally{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};Ce.exports.calculate_shares=function(s,e,t){try{let o=N.__wbindgen_add_to_stack_pointer(-16),i=ee(s,N.__wbindgen_malloc,N.__wbindgen_realloc),l=Q,u=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),p=Q,P=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),v=Q;N.calculate_shares(o,i,l,u,p,P,v);var n=he()[o/4+0],r=he()[o/4+1];return Ye(n,r)}finally{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(n,r)}};Ce.exports.calculate_liquidity_out_asset_a=function(s,e,t,n){try{let i=N.__wbindgen_add_to_stack_pointer(-16),l=ee(s,N.__wbindgen_malloc,N.__wbindgen_realloc),u=Q,p=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),P=Q,v=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),T=Q,F=ee(n,N.__wbindgen_malloc,N.__wbindgen_realloc),k=Q;N.calculate_liquidity_out_asset_a(i,l,u,p,P,v,T,F,k);var r=he()[i/4+0],o=he()[i/4+1];return Ye(r,o)}finally{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(r,o)}};Ce.exports.calculate_liquidity_out_asset_b=function(s,e,t,n){try{let i=N.__wbindgen_add_to_stack_pointer(-16),l=ee(s,N.__wbindgen_malloc,N.__wbindgen_realloc),u=Q,p=ee(e,N.__wbindgen_malloc,N.__wbindgen_realloc),P=Q,v=ee(t,N.__wbindgen_malloc,N.__wbindgen_realloc),T=Q,F=ee(n,N.__wbindgen_malloc,N.__wbindgen_realloc),k=Q;N.calculate_liquidity_out_asset_b(i,l,u,p,P,v,T,F,k);var r=he()[i/4+0],o=he()[i/4+1];return Ye(r,o)}finally{N.__wbindgen_add_to_stack_pointer(16),N.__wbindgen_free(r,o)}};var Wr=require("path").join(__dirname,"hydra_dx_wasm_bg.wasm"),Ur=require("fs").readFileSync(Wr),zr=new WebAssembly.Module(Ur),Xr=new WebAssembly.Instance(zr,Gr);N=Xr.exports;Ce.exports.__wasm=N});var Yr={};nr(Yr,{AssetClient:()=>et,AssetNotFound:()=>pn,BASILISK_PARACHAIN_ID:()=>Po,BalanceClient:()=>tt,BigNumber:()=>Le,CachingPoolService:()=>Kt,DECIMAL_PLACES:()=>In,DENOMINATOR:()=>_n,HYDRADX_PARACHAIN_ID:()=>wo,HYDRADX_SS58_PREFIX:()=>gt,INFINITY:()=>sr,LbpMath:()=>Be,LbpPool:()=>Xe,ONE:()=>xe,OmniMath:()=>pe,OmniPool:()=>$e,PoolConfigNotFound:()=>dn,PoolError:()=>Ze,PoolFactory:()=>lt,PoolNotFound:()=>bt,PoolService:()=>rt,PoolType:()=>Te,ProviderConfigNotFound:()=>fn,RUNTIME_DECIMALS:()=>mt,RouteNotFound:()=>nt,Router:()=>Ve,SYSTEM_ASSET_DECIMALS:()=>bo,SYSTEM_ASSET_ID:()=>Qe,StorageConfigNotFound:()=>mn,SubscriptionNotSupported:()=>gn,TradeRouter:()=>yt,TradeType:()=>un,XykMath:()=>He,XykPool:()=>Ke,ZERO:()=>z,bnum:()=>D,calculateBuyFee:()=>xn,calculateDiffToAvg:()=>$r,calculateDiffToRef:()=>ct,calculateSellFee:()=>yn,scale:()=>ue});module.exports=rr(Yr);var It=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 or=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 It,i=[];for(i.push([t,""]),o.enqueue(i);o.size()>0;){let l=o.dequeue();if(l==null||l.length>or)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 v=[...l];v.push(P),o.enqueue(v)}})}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,i,l]of t){let u=parseInt(i),p=parseInt(l);r[u].push([p,o])}return r}};function sn(s){let e={};for(let t of s){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 i=[t.address,t.tokens[r].id,t.tokens[o].id];e[t.tokens[r].id].push(i)}}}return e}var dt=class{getProposals(e,t,n){let r=sn(n),o=Object.keys(r),i=o.map(P=>r[P]).flat(),l=new _t,u=l.buildAndPopulateGraph(o,i),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 i=n[o],l=n[o+1];if(l==null)break;r.push(this.toEdge(i,l))}t.push(r)}return t}toEdge(e,t){return[t[1],e[0].toString(),t[0].toString()]}};var ir=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,an=Math.ceil,Re=Math.floor,Pe="[BigNumber Error] ",vn=Pe+"Number primitive has more than 15 significant digits: ",Ne=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(s){var e,t,n,r=S.prototype={constructor:S,toString:null,valueOf:null},o=new S(1),i=20,l=4,u=-7,p=21,P=-1e7,v=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 S(a,_){var d,b,g,h,y,m,f,x,w=this;if(!(w instanceof S))return new S(a,_);if(_==null){if(a&&a._isBigNumber===!0){w.s=a.s,!a.c||a.e>v?w.c=w.e=null:a.e<P?w.c=[w.e=0]:(w.e=a.e,w.c=a.c.slice());return}if((m=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>v?w.c=w.e=null:(w.e=h,w.c=[a]);return}x=String(a)}else{if(!ir.test(x=String(a)))return n(w,x,m);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 S(a),V(w,i+w.e+1,l);if(x=String(a),m=typeof a=="number"){if(a*0!=0)return n(w,x,m,_);if(w.s=1/a<0?(x=x.slice(1),-1):1,S.DEBUG&&x.replace(/^0\.0*|\./,"").length>15)throw Error(vn+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(!g&&(x==x.toUpperCase()&&(x=x.toLowerCase())||x==x.toLowerCase()&&(x=x.toUpperCase()))){g=!0,y=-1,h=0;continue}return n(w,String(a),m,_)}m=!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,m&&S.DEBUG&&f>15&&(a>ln||a!==Re(a)))throw Error(vn+w.s*a);if((h=h-y-1)>v)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]}S.clone=On,S.ROUND_UP=0,S.ROUND_DOWN=1,S.ROUND_CEIL=2,S.ROUND_FLOOR=3,S.ROUND_HALF_UP=4,S.ROUND_HALF_DOWN=5,S.ROUND_HALF_EVEN=6,S.ROUND_HALF_CEIL=7,S.ROUND_HALF_FLOOR=8,S.EUCLID=9,S.config=S.set=function(a){var _,d;if(a!=null)if(typeof a=="object"){if(a.hasOwnProperty(_="DECIMAL_PLACES")&&(d=a[_],ne(d,0,ce,_),i=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],v=d[1];else if(ne(d,-ce,ce,_),d)P=-(v=d<0?-d:d);else throw Error(Pe+_+" 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(Pe+"crypto unavailable");else T=d;else throw Error(Pe+_+" 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(Pe+_+" 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(Pe+_+" invalid: "+d)}else throw Error(Pe+"Object expected: "+a);return{DECIMAL_PLACES:i,ROUNDING_MODE:l,EXPONENTIAL_AT:[u,p],RANGE:[P,v],CRYPTO:T,MODULO_MODE:F,POW_PRECISION:k,FORMAT:L,ALPHABET:E}},S.isBigNumber=function(a){if(!a||a._isBigNumber!==!0)return!1;if(!S.DEBUG)return!0;var _,d,b=a.c,g=a.e,h=a.s;e:if({}.toString.call(b)=="[object Array]"){if((h===1||h===-1)&&g>=-ce&&g<=ce&&g===Re(g)){if(b[0]===0){if(g===0&&b.length===1)return!0;break e}if(_=(g+1)%W,_<1&&(_+=W),String(b[0]).length==_){for(_=0;_<b.length;_++)if(d=b[_],d<0||d>=Ne||d!==Re(d))break e;if(d!==0)return!0}}}else if(b===null&&g===null&&(h===null||h===1||h===-1))return!0;throw Error(Pe+"Invalid BigNumber: "+a)},S.maximum=S.max=function(){return j(arguments,r.lt)},S.minimum=S.min=function(){return j(arguments,r.gt)},S.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,g,h,y,m,f=0,x=[],w=new S(o);if(d==null?d=i:ne(d,0,ce),y=an(d/W),T)if(crypto.getRandomValues){for(b=crypto.getRandomValues(new Uint32Array(y*=2));f<y;)m=b[f]*131072+(b[f+1]>>>11),m>=9e15?(g=crypto.getRandomValues(new Uint32Array(2)),b[f]=g[0],b[f+1]=g[1]):(x.push(m%1e14),f+=2);f=y/2}else if(crypto.randomBytes){for(b=crypto.randomBytes(y*=7);f<y;)m=(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],m>=9e15?crypto.randomBytes(7).copy(b,f):(x.push(m%1e14),f+=7);f=y/7}else throw T=!1,Error(Pe+"crypto unavailable");if(!T)for(;f<y;)m=_(),m<9e15&&(x[f++]=m%1e14);for(y=x[--f],d%=W,y&&d&&(m=cn[W-d],x[f]=Re(y/m)*m);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,m=x[0];m>=10;m/=10,f++);f<W&&(h-=W-f)}return w.e=h,w.c=x,w}}(),S.sum=function(){for(var a=1,_=arguments,d=new S(_[0]);a<_.length;)d=d.plus(_[a++]);return d},t=function(){var a="0123456789";function _(d,b,g,h){for(var y,m=[0],f,x=0,w=d.length;x<w;){for(f=m.length;f--;m[f]*=b);for(m[0]+=h.indexOf(d.charAt(x++)),y=0;y<m.length;y++)m[y]>g-1&&(m[y+1]==null&&(m[y+1]=0),m[y+1]+=m[y]/g|0,m[y]%=g)}return m.reverse()}return function(d,b,g,h,y){var m,f,x,w,I,M,q,K,ie=d.indexOf("."),le=i,Y=l;for(ie>=0&&(w=k,k=0,d=d.replace(".",""),K=new S(b),M=K.pow(d.length-ie),k=w,K.c=_(We(Oe(M.c),M.e,"0"),10,g,a),K.e=K.c.length),q=_(d,b,g,y?(m=E,a):(m=a,E)),x=w=q.length;q[--w]==0;q.pop());if(!q[0])return m.charAt(0);if(ie<0?--x:(M.c=q,M.e=x,M.s=h,M=e(M,K,le,Y,g),q=M.c,I=M.r,x=M.e),f=x+le+1,ie=q[f],w=g/2,I=I||f<0||q[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&&q[f-1]&1||Y==(M.s<0?8:7)),f<1||!q[0])d=I?We(m.charAt(1),-le,m.charAt(0)):m.charAt(0);else{if(q.length=f,I)for(--g;++q[--f]>g;)q[f]=0,f||(++x,q=[1].concat(q));for(w=q.length;!q[--w];);for(ie=0,d="";ie<=w;d+=m.charAt(q[ie++]));d=We(d,x,m.charAt(0))}return d}}(),e=function(){function a(b,g,h){var y,m,f,x,w=0,I=b.length,M=g%Ue,q=g/Ue|0;for(b=b.slice();I--;)f=b[I]%Ue,x=b[I]/Ue|0,y=q*f+x*M,m=M*f+y%Ue*Ue+w,w=(m/h|0)+(y/Ue|0)+q*x,b[I]=m%h;return w&&(b=[w].concat(b)),b}function _(b,g,h,y){var m,f;if(h!=y)f=h>y?1:-1;else for(m=f=0;m<h;m++)if(b[m]!=g[m]){f=b[m]>g[m]?1:-1;break}return f}function d(b,g,h,y){for(var m=0;h--;)b[h]-=m,m=b[h]<g[h]?1:0,b[h]=m*y+b[h]-g[h];for(;!b[0]&&b.length>1;b.splice(0,1));}return function(b,g,h,y,m){var f,x,w,I,M,q,K,ie,le,Y,Z,ge,xt,rn,on,Ee,ut,ve=b.s==g.s?1:-1,we=b.c,se=g.c;if(!we||!we[0]||!se||!se[0])return new S(!b.s||!g.s||(we?se&&we[0]==se[0]:!se)?NaN:we&&we[0]==0||!se?ve*0:ve/0);for(ie=new S(ve),le=ie.c=[],x=b.e-g.e,ve=h+x+1,m||(m=Ne,x=Ie(b.e/W)-Ie(g.e/W),ve=ve/W|0),w=0;se[w]==(we[w]||0);w++);if(se[w]>(we[w]||0)&&x--,ve<0)le.push(1),I=!0;else{for(rn=we.length,Ee=se.length,w=0,ve+=2,M=Re(m/(se[0]+1)),M>1&&(se=a(se,M,m),we=a(we,M,m),Ee=se.length,rn=we.length),xt=Ee,Y=we.slice(0,Ee),Z=Y.length;Z<Ee;Y[Z++]=0);ut=se.slice(),ut=[0].concat(ut),on=se[0],se[1]>=m/2&&on++;do{if(M=0,f=_(se,Y,Ee,Z),f<0){if(ge=Y[0],Ee!=Z&&(ge=ge*m+(Y[1]||0)),M=Re(ge/on),M>1)for(M>=m&&(M=m-1),q=a(se,M,m),K=q.length,Z=Y.length;_(q,Y,K,Z)==1;)M--,d(q,Ee<K?ut:se,K,m),K=q.length,f=1;else M==0&&(f=M=1),q=se.slice(),K=q.length;if(K<Z&&(q=[0].concat(q)),d(Y,q,Z,m),Z=Y.length,f==-1)for(;_(se,Y,Ee,Z)<1;)M++,d(Y,Ee<Z?ut:se,Z,m),Z=Y.length}else f===0&&(M++,Y=[0]);le[w++]=M,Y[0]?Y[Z++]=we[xt]||0:(Y=[we[xt]],Z=1)}while((xt++<rn||Y[0]!=null)&&ve--);I=Y[0]!=null,le[0]||le.splice(0,1)}if(m==Ne){for(w=1,ve=le[0];ve>=10;ve/=10,w++);V(ie,h+(ie.e=w+x*W-1)+1,y,I)}else ie.e=x,ie.r=+I;return ie}}();function C(a,_,d,b){var g,h,y,m,f;if(d==null?d=l:ne(d,0,8),!a.c)return a.toString();if(g=a.c[0],y=a.e,_==null)f=Oe(a.c),f=b==1||b==2&&(y<=u||y>=p)?Bt(f,y):We(f,y,"0");else if(a=V(new S(a),_,d),h=a.e,f=Oe(a.c),m=f.length,b==1||b==2&&(_<=h||h<=u)){for(;m<_;f+="0",m++);f=Bt(f,h)}else if(_-=y,f=We(f,h,"0"),h+1>m){if(--_>0)for(f+=".";_--;f+="0");}else if(_+=h-m,_>0)for(h+1==m&&(f+=".");_--;f+="0");return a.s<0&&g?"-"+f:f}function j(a,_){for(var d,b=1,g=new S(a[0]);b<a.length;b++)if(d=new S(a[b]),d.s)_.call(g,d)&&(g=d);else{g=d;break}return g}function te(a,_,d){for(var b=1,g=_.length;!_[--g];_.pop());for(g=_[0];g>=10;g/=10,b++);return(d=b+d*W-1)>v?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)$/,g=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(h,y,m,f){var x,w=m?y:y.replace(g,"");if(b.test(w))h.s=isNaN(w)?null:w<0?-1:1;else{if(!m&&(w=w.replace(a,function(I,M,q){return x=(q=q.toLowerCase())=="x"?16:q=="b"?2:8,!f||f==x?M:I}),f&&(x=f,w=w.replace(_,"$1").replace(d,"0.$1")),y!=w))return new S(w,x);if(S.DEBUG)throw Error(Pe+"Not a"+(f?" base "+f:"")+" number: "+y);h.s=null}h.c=h.e=null}}();function V(a,_,d,b){var g,h,y,m,f,x,w,I=a.c,M=cn;if(I){e:{for(g=1,m=I[0];m>=10;m/=10,g++);if(h=_-g,h<0)h+=W,y=_,f=I[x=0],w=f/M[g-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,g=1,h%=W,y=h-W+1}else break e;else{for(f=m=I[x],g=1;m>=10;m/=10,g++);h%=W,y=h-W+g,w=y<0?0:f/M[g-y-1]%10|0}if(b=b||_<0||I[x+1]!=null||(y<0?f:f%M[g-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[g-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,m=1,x--):(I.length=x+1,m=M[W-h],I[x]=y>0?Re(f/M[g-y]%M[y])*m:0),b)for(;;)if(x==0){for(h=1,y=I[0];y>=10;y/=10,h++);for(y=I[0]+=m,m=1;y>=10;y/=10,m++);h!=m&&(a.e++,I[0]==Ne&&(I[0]=1));break}else{if(I[x]+=m,I[x]!=Ne)break;I[x--]=0,m=1}for(h=I.length;I[--h]===0;I.pop());}a.e>v?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?Bt(_,d):We(_,d,"0"),a.s<0?"-"+_:_)}return r.absoluteValue=r.abs=function(){var a=new S(this);return a.s<0&&(a.s=1),a},r.comparedTo=function(a,_){return je(this,new S(a,_))},r.decimalPlaces=r.dp=function(a,_){var d,b,g,h=this;if(a!=null)return ne(a,0,ce),_==null?_=l:ne(_,0,8),V(new S(h),a+h.e+1,_);if(!(d=h.c))return null;if(b=((g=d.length-1)-Ie(this.e/W))*W,g=d[g])for(;g%10==0;g/=10,b--);return b<0&&(b=0),b},r.dividedBy=r.div=function(a,_){return e(this,new S(a,_),i,l)},r.dividedToIntegerBy=r.idiv=function(a,_){return e(this,new S(a,_),0,1)},r.exponentiatedBy=r.pow=function(a,_){var d,b,g,h,y,m,f,x,w,I=this;if(a=new S(a),a.c&&!a.isInteger())throw Error(Pe+"Exponent not an integer: "+H(a));if(_!=null&&(_=new S(_)),m=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 S(Math.pow(+H(I),m?a.s*(2-Tt(a)):+H(a))),_?w.mod(_):w;if(f=a.s<0,_){if(_.c?!_.c[0]:!_.s)return new S(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||m&&I.c[1]>=24e7:I.c[0]<8e13||m&&I.c[0]<=9999975e7)))return h=I.s<0&&Tt(a)?-0:0,I.e>-1&&(h=1/h),new S(f?1/h:h);k&&(h=an(k/W+2))}for(m?(d=new S(.5),f&&(a.s=1),x=Tt(a)):(g=Math.abs(+H(a)),x=g%2),w=new S(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(g){if(g=Re(g/2),g===0)break;x=g%2}else if(a=a.times(d),V(a,a.e+1,1),a.e>14)x=Tt(a);else{if(g=+H(a),g===0)break;x=g%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 S(this);return a==null?a=l:ne(a,0,8),V(_,_.e+1,a)},r.isEqualTo=r.eq=function(a,_){return je(this,new S(a,_))===0},r.isFinite=function(){return!!this.c},r.isGreaterThan=r.gt=function(a,_){return je(this,new S(a,_))>0},r.isGreaterThanOrEqualTo=r.gte=function(a,_){return(_=je(this,new S(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 S(a,_))<0},r.isLessThanOrEqualTo=r.lte=function(a,_){return(_=je(this,new S(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,g,h,y=this,m=y.s;if(a=new S(a,_),_=a.s,!m||!_)return new S(NaN);if(m!=_)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 S(I?y:NaN);if(!w[0]||!I[0])return I[0]?(a.s=-_,a):new S(w[0]?y:l==3?-0:0)}if(f=Ie(f),x=Ie(x),w=w.slice(),m=f-x){for((h=m<0)?(m=-m,g=w):(x=f,g=I),g.reverse(),_=m;_--;g.push(0));g.reverse()}else for(b=(h=(m=w.length)<(_=I.length))?m:_,m=_=0;_<b;_++)if(w[_]!=I[_]){h=w[_]<I[_];break}if(h&&(g=w,w=I,I=g,a.s=-a.s),_=(b=I.length)-(d=w.length),_>0)for(;_--;w[d++]=0);for(_=Ne-1;b>m;){if(w[--b]<I[b]){for(d=b;d&&!w[--d];w[d]=_);--w[d],w[b]+=Ne}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,g=this;return a=new S(a,_),!g.c||!a.s||a.c&&!a.c[0]?new S(NaN):!a.c||g.c&&!g.c[0]?new S(g):(F==9?(b=a.s,a.s=1,d=e(g,a,0,3),a.s=b,d.s*=b):d=e(g,a,0,F),a=g.minus(d.times(a)),!a.c[0]&&F==1&&(a.s=g.s),a)},r.multipliedBy=r.times=function(a,_){var d,b,g,h,y,m,f,x,w,I,M,q,K,ie,le,Y=this,Z=Y.c,ge=(a=new S(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,g=f,f=I,I=g),g=f+I,K=[];g--;K.push(0));for(ie=Ne,le=Ue,g=I;--g>=0;){for(d=0,M=ge[g]%le,q=ge[g]/le|0,y=f,h=g+y;h>g;)x=Z[--y]%le,w=Z[y]/le|0,m=q*x+w*M,x=M*x+m%le*le+K[h]+d,d=(x/ie|0)+(m/le|0)+q*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 S(this);return a.s=-a.s||null,a},r.plus=function(a,_){var d,b=this,g=b.s;if(a=new S(a,_),_=a.s,!g||!_)return new S(NaN);if(g!=_)return a.s=-_,b.minus(a);var h=b.e/W,y=a.e/W,m=b.c,f=a.c;if(!h||!y){if(!m||!f)return new S(g/0);if(!m[0]||!f[0])return f[0]?a:new S(m[0]?b:g*0)}if(h=Ie(h),y=Ie(y),m=m.slice(),g=h-y){for(g>0?(y=h,d=f):(g=-g,d=m),d.reverse();g--;d.push(0));d.reverse()}for(g=m.length,_=f.length,g-_<0&&(d=f,f=m,m=d,_=g),g=0;_;)g=(m[--_]=m[_]+f[_]+g)/Ne|0,m[_]=Ne===m[_]?0:m[_]%Ne;return g&&(m=[g].concat(m),++y),te(a,m,y)},r.precision=r.sd=function(a,_){var d,b,g,h=this;if(a!=null&&a!==!!a)return ne(a,1,ce),_==null?_=l:ne(_,0,8),V(new S(h),a,_);if(!(d=h.c))return null;if(g=d.length-1,b=g*W+1,g=d[g]){for(;g%10==0;g/=10,b--);for(g=d[0];g>=10;g/=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,g,h=this,y=h.c,m=h.s,f=h.e,x=i+4,w=new S("0.5");if(m!==1||!y||!y[0])return new S(!m||m<0&&(!y||y[0])?NaN:y?h:1/0);if(m=Math.sqrt(+H(h)),m==0||m==1/0?(_=Oe(y),(_.length+f)%2==0&&(_+="0"),m=Math.sqrt(+_),f=Ie((f+1)/2)-(f<0||f%2),m==1/0?_="5e"+f:(_=m.toExponential(),_=_.slice(0,_.indexOf("e")+1)+f),d=new S(_)):d=new S(m+""),d.c[0]){for(f=d.e,m=f+x,m<3&&(m=0);;)if(g=d,d=w.times(g.plus(e(h,g,x,1))),Oe(g.c).slice(0,m)===(_=Oe(d.c)).slice(0,m))if(d.e<f&&--m,_=_.slice(m-3,m+1),_=="9999"||!b&&_=="4999"){if(!b&&(V(g,g.e+i+2,0),g.times(g).eq(h))){d=g;break}x+=4,m+=4,b=1}else{(!+_||!+_.slice(1)&&_.charAt(0)=="5")&&(V(d,d.e+i+2,1),a=!d.times(d).eq(h));break}}return V(d,d.e+i+1,l,a)},r.toExponential=function(a,_){return a!=null&&(ne(a,0,ce),a++),C(this,a,_,1)},r.toFixed=function(a,_){return a!=null&&(ne(a,0,ce),a=a+this.e+1),C(this,a,_)},r.toFormat=function(a,_,d){var b,g=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(Pe+"Argument not an object: "+d);if(b=g.toFixed(a,_),g.c){var h,y=b.split("."),m=+d.groupSize,f=+d.secondaryGroupSize,x=d.groupSeparator||"",w=y[0],I=y[1],M=g.s<0,q=M?w.slice(1):w,K=q.length;if(f&&(h=m,m=f,f=h,K-=h),m>0&&K>0){for(h=K%m||m,w=q.substr(0,h);h<K;h+=m)w+=x+q.substr(h,m);f>0&&(w+=x+q.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,g,h,y,m,f,x,w,I,M,q=this,K=q.c;if(a!=null&&(m=new S(a),!m.isInteger()&&(m.c||m.s!==1)||m.lt(o)))throw Error(Pe+"Argument "+(m.isInteger()?"out of range: ":"not an integer: ")+H(m));if(!K)return new S(q);for(_=new S(o),x=d=new S(o),b=f=new S(o),M=Oe(K),h=_.e=M.length-q.e-1,_.c[0]=cn[(y=h%W)<0?W+y:y],a=!a||m.comparedTo(_)>0?h>0?_:x:m,y=v,v=1/0,m=new S(M),f.c[0]=0;w=e(m,_,0,1),g=d.plus(w.times(b)),g.comparedTo(a)!=1;)d=b,b=g,x=f.plus(w.times(g=x)),f=g,_=m.minus(w.times(g=_)),m=g;return g=e(a.minus(d),b,0,1),f=f.plus(g.times(x)),d=d.plus(g.times(b)),f.s=x.s=q.s,h=h*2,I=e(x,b,h,l).minus(q).abs().comparedTo(e(f,d,h,l).minus(q).abs())<1?[x,b]:[f,d],v=y,I},r.toNumber=function(){return+H(this)},r.toPrecision=function(a,_){return a!=null&&ne(a,1,ce),C(this,a,_,2)},r.toString=function(a){var _,d=this,b=d.s,g=d.e;return g===null?b?(_="Infinity",b<0&&(_="-"+_)):_="NaN":(a==null?_=g<=u||g>=p?Bt(Oe(d.c),g):We(Oe(d.c),g,"0"):a===10&&G?(d=V(new S(d),i+g+1,l),_=We(Oe(d.c),d.e,"0")):(ne(a,2,E.length,"Base"),_=t(We(Oe(d.c),g,"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,s!=null&&S.set(s),S}function Ie(s){var e=s|0;return s>0||s===e?e:e-1}function Oe(s){for(var e,t,n=1,r=s.length,o=s[0]+"";n<r;){for(e=s[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(s,e){var t,n,r=s.c,o=e.c,i=s.s,l=e.s,u=s.e,p=e.e;if(!i||!l)return null;if(t=r&&!r[0],n=o&&!o[0],t||n)return t?n?0:-l:i;if(i!=l)return i;if(t=i<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,i=0;i<l;i++)if(r[i]!=o[i])return r[i]>o[i]^t?1:-1;return u==p?0:u>p^t?1:-1}function ne(s,e,t,n){if(s<e||s>t||s!==Re(s))throw Error(Pe+(n||"Argument")+(typeof s=="number"?s<e||s>t?" out of range: ":" not an integer: ":" not a primitive number: ")+String(s))}function Tt(s){var e=s.c.length-1;return Ie(s.e/W)==e&&s.c[e]%2!=0}function Bt(s,e){return(s.length>1?s.charAt(0)+"."+s.slice(1):s)+(e<0?"e":"e+")+e}function We(s,e,t){var n,r;if(e<0){for(r=t+".";++e;r+=t);s=r+s}else if(n=s.length,++e>n){for(r=t,e-=n;--e;r+=t);s+=r}else e<n&&(s=s.slice(0,e)+"."+s.slice(e));return s}var Le=On();var In=12;Le.config({EXPONENTIAL_AT:[-100,100],ROUNDING_MODE:4,DECIMAL_PLACES:In});var z=D(0),xe=D(1),sr=D("Infinity");function ue(s,e){let t=new Le(e.toString()),n=new Le(10).pow(t);return s.times(n)}function D(s){return new Le(s.toString())}var Te=(r=>(r.XYK="Xyk",r.LBP="Lbp",r.Stable="Stableswap",r.Omni="Omnipool",r))(Te||{}),Ze=(o=>(o.UnknownError="UnknownError",o.InsufficientTradingAmount="InsufficientTradingAmount",o.MaxInRatioExceeded="MaxInRatioExceeded",o.MaxOutRatioExceeded="MaxOutRatioExceeded",o.TradeNotAllowed="TradeNotAllowed",o))(Ze||{}),un=(t=>(t.Buy="Buy",t.Sell="Sell",t))(un||{});var De=Ot(Bn()),Be=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 mt=18,Qe="0",bo=12,wo=2034,gt=63,Po=2090,_n=1e3;var xo=require("@polkadot/types/lookup");var So=require("@polkadot/api-base/types/consts");var vo=require("@polkadot/api-base/types/errors");var Oo=require("@polkadot/api-base/types/events");var Io=require("@polkadot/api-base/types/storage");var To=require("@polkadot/api-base/types/submittable");var Bo=require("@polkadot/rpc-core/types/jsonrpc");var Ao=require("@polkadot/api-base/types/calls");var Do=require("@polkadot/types/types/registry");var Ho=require("@polkadot/types/lookup");var Wo=require("@polkadot/api-base/types/consts");var Uo=require("@polkadot/api-base/types/errors");var zo=require("@polkadot/api-base/types/events");var Xo=require("@polkadot/api-base/types/storage");var $o=require("@polkadot/api-base/types/submittable");var Yo=require("@polkadot/rpc-core/types/jsonrpc");var Ko=require("@polkadot/api-base/types/calls");var ni=require("@polkadot/types/types/registry");var Et=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 Et{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(),i=r.toString(),l=o.toNumber();return t(e,i,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(i=>i.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){let r=(await Promise.all(t.map(async i=>[i,await this.getTokenMetadata(i)]))).reduce((i,l)=>({...i,[l[1].symbol]:l[0]}),{}),{name:o}=await this.getTokenDetail(e);return{symbol:o,decimals:18,icon:Object.keys(r).join("/"),meta:r}}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 i=this.api.consts.balances.existentialDeposit;return{name:this.chainToken,assetType:"Token",existentialDeposit:i.toString()}}let t=await this.api.query.assetRegistry.assets(e),{name:n,assetType:r,existentialDeposit:o}=t.unwrap();return{name:n.toHuman(),assetType:r.toHuman(),existentialDeposit:o.toString()}}async getBondDetail(e,t,n){let{assetType:r,existentialDeposit:o}=await this.getTokenDetail(e),{icon:i}=await this.getBondMetadata(e,t),l=new Intl.DateTimeFormat("en-GB");return{name:[i,"Bond",l.format(n)].join(" "),assetType:r,existentialDeposit:o}}async getAssetDetail(e){return(await Promise.all([this.tryBonds(e,this.getBondDetail.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),i=new Le(n),l=o.gt(i)?o:i;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),i=await this.getAssetMetadata(r);return{id:r,balance:o.amount.toString(),decimals:i.decimals,symbol:i.symbol,icon:i.icon,meta:i.meta}});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 Rt=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),i=r[1].unwrap(),l=i.assets.map(F=>F.toString()),u=await this.getPoolTokens(o,l),p=await this.getLinearWeight(i,e),P=D(p),v=this.MAX_FINAL_WEIGHT.minus(D(P)),T=u[0].id;return this.poolsData.set(o,i),{address:o,type:"Lbp",fee:i.fee.toJSON(),repayFeeApply:await this.isRepayFeeApplied(T,i),tokens:[{...u[0],weight:P},{...u[1],weight:v}],...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),i=await this.getLinearWeight(r,e),l=D(i),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 Be.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 An=require("@polkadot/util-crypto"),Nn=require("@polkadot/util");function me(s,e){return s.shiftedBy(-1*e).toString()}function Ae(s){return s[0]/s[1]*100}function ye(s){return s[0]/s[1]}function Fe(s){return[s/1e3,1e3]}var Lt=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),i=await this.getPoolTokenState(t,o,e);return{address:r,type:"Omnipool",hubAssetId:e,tokens:i,...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=await this.getPoolTokenState(t,n,e);return{...this.pools[0],tokens:r}}async getPoolTokenState(e,t,n){let r=t.map(async(o,i)=>{if(n===o.id){let p=await this.api.query.omnipool.hubAssetTradability();return{...o,tradeable:p.bits.toNumber()}}let u=e[i][1].unwrap();return{...o,hubReserves:D(u.hubReserve.toString()),shares:D(u.shares.toString()),tradeable:u.tradable.bits.toNumber()}});return Promise.all(r)}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,i=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(i),max:Fe(l)}}else return{assetFee:this.getAssetFee(),protocolFee:this.getProtocolFee(),min:Fe(i),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,An.encodeAddress)((0,Nn.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 Mt=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),i=await this.getPoolTokens(r,o);return{address:r,type:"Xyk",tokens:i,...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 En=require("@polkadot/util"),ht=require("@polkadot/util-crypto");var de=Ot(kn()),Se=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,i){return(0,de.calculate_in_given_out)(e,t,n,r,o,i)}static calculateAddOneAsset(e,t,n,r,o,i){return(0,de.calculate_add_one_asset)(e,t,n,r,o,i)}static calculateSharesForAmount(e,t,n,r,o,i){return(0,de.calculate_shares_for_amount)(e,t,n,r,o,i)}static calculateOutGivenIn(e,t,n,r,o,i){return(0,de.calculate_out_given_in)(e,t,n,r,o,i)}static calculateLiquidityOutOneAsset(e,t,n,r,o,i){return(0,de.calculate_liquidity_out_one_asset)(e,t,n,r,o,i)}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),i=r[1].unwrap(),l=this.getPoolAddress(o),u=await this.getPoolTokens(l,i.assets.map(F=>F.toString())),p=await this.getPoolTokenState(u,o);if((await this.api.query.omnipool.assets(o)).isSome){let F=this.getOmniPoolAddress(),k=await this.getPoolTokens(F,[o]);p.push(...k)}let v=await this.getAmplification(i,e),T=await this.getTotalIssueance(o);return this.poolsData.set(o,i),{id:o,address:l,type:"Stableswap",amplification:v,fee:Fe(i.fee.toNumber()),totalIssuance:T,tokens:p,...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),i=await this.getTotalIssueance(n.id);return{...n,amplification:o,totalIssuance:i,tokens:await this.syncTokens(n)}});return Promise.all(t)}async syncTokens(e){let t=e.tokens.find(o=>o.id===e.id),n=await this.syncPoolTokens(e.address,e.tokens.filter(o=>o!==t)),r=await this.getPoolTokenState(n,e.id);if(t){let o=this.getOmniPoolAddress(),i=await this.syncPoolTokens(o,[t]);r.push(...i)}return r}async getPoolTokenState(e,t){let n=e.map(async(r,o)=>{let i=await this.api.query.stableswap.assetTradability(t,r.id);return i.bits?{...r,tradeable:i.bits.toNumber()}:r});return Promise.all(n)}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 Se.calculateAmplification(e.initialAmplification.toString(),e.finalAmplification.toString(),e.initialBlock.toString(),e.finalBlock.toString(),t.toString())}getPoolAddress(e){let t=Number(e),n=Se.getPoolAddress(t);return(0,ht.encodeAddress)((0,ht.blake2AsHex)(n),63)}getOmniPoolAddress(){return(0,ht.encodeAddress)((0,En.stringToU8a)("modlomnipool".padEnd(32,"\0")),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 bt=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"}},mn=class extends Error{constructor(e){super(),this.message=`Storage missing ${e}`,this.name="StorageConfigNotFound"}},gn=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 Mt(this.api),this.omniClient=new Lt(this.api),this.lbpClient=new Rt(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 bt(t.type)}}isDirectOmnipoolTrade(e){return e.length==1&&e[0].pool=="Omnipool"}buildBuyTx(e,t,n,r,o){let i;this.isDirectOmnipoolTrade(o)?i=this.api.tx.omnipool.buy(t,e,n.toFixed(),r.toFixed()):i=this.api.tx.router.buy(e,t,n.toFixed(),r.toFixed(),this.buildRoute(o));let l=()=>i;return{hex:i.toHex(),name:"RouterBuy",get:l}}buildSellTx(e,t,n,r,o){let i;this.isDirectOmnipoolTrade(o)?i=this.api.tx.omnipool.sell(e,t,n.toFixed(),r.toFixed()):i=this.api.tx.router.sell(e,t,n.toFixed(),r.toFixed(),this.buildRoute(o));let l=()=>i;return{hex:i.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 wt=(s,e)=>s===e?0:s==null?e==null?0:-1:e==null?s==null?0:1:typeof s.compare=="function"?s.compare(e):typeof e.compare=="function"?-e.compare(s):s<e?-1:s>e?1:0;var Ht=(s,e=t=>t!==void 0?": "+t:"")=>class extends Error{constructor(t){super(s(t)+e(t))}};var vr=Ht(()=>"illegal argument(s)"),Rn=s=>{throw new vr(s)};var Or=Ht(()=>"index out of bounds"),hn=s=>{throw new Or(s)},Wt=(s,e,t)=>(s<e||s>=t)&&hn(s);var Ln=23283064365386963e-26,Ut=class{float(e=1){return this.int()*Ln*e}norm(e=1){return(this.int()*Ln-.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}},Mn=new wn;var Dn=s=>s!=null&&typeof s!="function"&&s.length!==void 0;var Gn=Object.getPrototypeOf({}),zt="function",qn="string",ot=(s,e)=>{let t;if(s===e)return!0;if(s!=null){if(typeof s.equiv===zt)return s.equiv(e)}else return s==e;if(e!=null){if(typeof e.equiv===zt)return e.equiv(s)}else return s==e;return typeof s===qn||typeof e===qn?!1:(t=Object.getPrototypeOf(s),(t==null||t===Gn)&&(t=Object.getPrototypeOf(e),t==null||t===Gn)?Ar(s,e):typeof s!==zt&&s.length!==void 0&&typeof e!==zt&&e.length!==void 0?Ir(s,e):s instanceof Set&&e instanceof Set?Tr(s,e):s instanceof Map&&e instanceof Map?Br(s,e):s instanceof Date&&e instanceof Date?s.getTime()===e.getTime():s instanceof RegExp&&e instanceof RegExp?s.toString()===e.toString():s!==s&&e!==e)},Ir=(s,e,t=ot)=>{let n=s.length;if(n===e.length)for(;n-- >0&&t(s[n],e[n]););return n<0},Tr=(s,e,t=ot)=>s.size===e.size&&t([...s.keys()].sort(),[...e.keys()].sort()),Br=(s,e,t=ot)=>s.size===e.size&&t([...s].sort(),[...e].sort()),Ar=(s,e,t=ot)=>{if(Object.keys(s).length!==Object.keys(e).length)return!1;for(let n in s)if(!e.hasOwnProperty(n)||!t(s[n],e[n]))return!1;return!0};var Cn=(s,e)=>s!=null&&typeof s[e]=="function";var Hn=s=>Cn(s,"xform")?s.xform():s;var Xt=Symbol(),Pn=()=>{};var Wn=s=>s!=null&&typeof s[Symbol.iterator]=="function";var $t=class{constructor(e){this.value=e}deref(){return this.value}};var Yt=s=>s instanceof $t;var Un=s=>s instanceof $t?s.deref():s;function*zn(s,e){let t=Hn(s)([Pn,Pn,(n,r)=>r])[2];for(let n of e){let r=t(Xt,n);if(Yt(r)){r=Un(r.deref()),r!==Xt&&(yield r);return}r!==Xt&&(yield r)}}var Xn=(s,e)=>[s[0],s[1],e];function Pt(s,e){return Wn(e)?zn(Pt(s),e):t=>{let n=t[2];return Xn(t,(r,o)=>n(r,s(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 $n("next",this._head)}reverseIterator(){return $n("prev",this.tail)}clear(){this.release()}compare(e,t=wt){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,i=0;for(;n-- >0&&i===0;)i=t(r.value,o.value),r=r.next,o=o.next;return i}}concat(...e){let t=this.copy();for(let n of e)t.into(n);return t}equiv(e){if(!(e instanceof it||Dn(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||wt;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*$n(s,e){for(;e;)yield e.value,e=e[s]}var qe=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 qe(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 qe}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 qe,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=i=>({first(){return i.value},next(){return i!==r&&i.next?o(i.next):void 0}});return n?o(n):void 0}shuffle(e,t=Mn){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)&&Rn("invalid indices: ${from} / ${to}");let o=new qe,i=this.nthCell(n);for(;i&&++n<=r;)o.push(i.value),i=i.next;return o}sort(e=wt){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,i=0;for(let u=0;u<t&&(i++,o=o.next,!!o);u++);let l=t;for(;i>0||l>0&&o;){let u;i===0?(u=o,o=o.next,l--):!o||l===0||e(n.value,o.value)<=0?(u=n,n=n.next,i--):(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 qe;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 i of n)this.insertBefore(r,i);else for(let i of n)this.push(i);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 qe,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 Pt(e=>[e.k,e],this.items)}keys(){return Pt(e=>e.k,this.items)}values(){return Pt(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,i,l){this.type="Lbp",this.address=e,this.tokens=t,this.maxInRatio=n,this.maxOutRatio=r,this.minTradingLimit=o,this.fee=i,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 i=D(r.balance),l=D(o.balance);return{assetIn:e,assetOut:t,balanceIn:i,balanceOut:l,decimalsIn:r.decimals,decimalsOut:o.decimals,weightIn:r.weight,weightOut:o.weight}}validateAndBuy(e,t,n){let r=this.tokens[0].id,o=[];t.isLessThan(this.minTradingLimit)&&o.push("InsufficientTradingAmount");let i=e.balanceOut.div(this.maxOutRatio);if(t.isGreaterThan(i)&&o.push("MaxOutRatioExceeded"),r===e.assetOut){let l=this.calculateTradeFee(t,n),u=Ae(this.repayFeeApply?n.repayFee:n.exchangeFee),p=t.plus(l),P=this.calculateInGivenOut(e,p),v=e.balanceIn.div(this.maxInRatio);return P.isGreaterThan(v)&&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 i=e.balanceIn.div(this.maxInRatio);if(t.isGreaterThan(i)&&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=Ae(this.repayFeeApply?n.repayFee:n.exchangeFee),P=l.minus(u),v=e.balanceOut.div(this.maxOutRatio);return P.isGreaterThan(v)&&o.push("MaxOutRatioExceeded"),{amountIn:t,calculatedOut:l,amountOut:P,feePct:p,errors:o}}}calculateInGivenOut(e,t){let n=Be.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=Be.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=Be.getSpotPrice(e.balanceOut.toString(),e.balanceIn.toString(),e.weightOut.toString(),e.weightIn.toString(),ue(xe,e.decimalsOut).toString());return D(t)}spotPriceOutGivenIn(e){let t=Be.getSpotPrice(e.balanceIn.toString(),e.balanceOut.toString(),e.weightIn.toString(),e.weightOut.toString(),ue(xe,e.decimalsIn).toString());return D(t)}calculateTradeFee(e,t){let n=Be.calculatePoolTradeFee(e.toString(),this.repayFeeApply?t.repayFee[0]:t.exchangeFee[0],this.repayFeeApply?t.repayFee[1]:t.exchangeFee[1]);return D(n)}};var $=Ot(Kn()),pe=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,i,l,u,p){return(0,$.calculate_in_given_out)(e,t,n,r,o,i,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,i,l,u,p){return(0,$.calculate_out_given_in)(e,t,n,r,o,i,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,i,l,u){return(0,$.calculate_liquidity_out)(e,t,n,r,o,i,l,u)}static calculateLiquidityLRNAOut(e,t,n,r,o,i,l,u){return(0,$.calculate_liquidity_lrna_out)(e,t,n,r,o,i,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,i){this.type="Omnipool",this.address=e,this.tokens=t,this.maxInRatio=n,this.maxOutRatio=r,this.minTradingLimit=o,this.hubAssetId=i}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 i=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:i,balanceOut:l,tradeableIn:r.tradeable,tradeableOut:o.tradeable}}validateAndBuy(e,t,n){let r=this.calculateInGivenOut(e,t),o=this.calculateInGivenOut(e,t,n),i=o.minus(r),l=r===z?z:i.div(r).multipliedBy(100).decimalPlaces(2),u=[];pe.isBuyAllowed(e.tradeableOut)||u.push("TradeNotAllowed"),t.isLessThan(this.minTradingLimit)&&u.push("InsufficientTradingAmount");let P=e.balanceOut.div(this.maxOutRatio);t.isGreaterThan(P)&&u.push("MaxOutRatioExceeded");let v=e.balanceIn.div(this.maxInRatio);return o.isGreaterThan(v)&&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=[];pe.isSellAllowed(e.tradeableIn)||u.push("TradeNotAllowed"),t.isLessThan(this.minTradingLimit)&&u.push("InsufficientTradingAmount");let P=e.balanceIn.div(this.maxInRatio);t.isGreaterThan(P)&&u.push("MaxInRatioExceeded");let v=e.balanceOut.div(this.maxOutRatio);return o.isGreaterThan(v)&&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=pe.calculateInGivenOut(e.balanceIn.toString(),e.hubReservesIn.toString(),e.sharesIn.toString(),e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),n?ye(n.assetFee).toString():z.toString(),n?ye(n.protocolFee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateLrnaInGivenOut(e,t,n){let r=pe.calculateLrnaInGivenOut(e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),n?ye(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=pe.calculateOutGivenIn(e.balanceIn.toString(),e.hubReservesIn.toString(),e.sharesIn.toString(),e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),n?ye(n.assetFee).toString():z.toString(),n?ye(n.protocolFee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateOutGivenLrnaIn(e,t,n){let r=pe.calculateOutGivenLrnaIn(e.balanceOut.toString(),e.hubReservesOut.toString(),e.sharesOut.toString(),t.toFixed(0),n?ye(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=pe.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=pe.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=pe.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=pe.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,i,l,u,p){this.type="Stableswap",this.address=e,this.tokens=t,this.maxInRatio=n,this.maxOutRatio=r,this.minTradingLimit=o,this.amplification=i,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 i=D(r.balance),l=D(o.balance);return{assetIn:e,assetOut:t,balanceIn:i,balanceOut:l,decimalsIn:r.decimals,decimalsOut:o.decimals,tradeableIn:r.tradeable,tradeableOut:o.tradeable}}validateAndBuy(e,t,n){let r=this.calculateInGivenOut(e,t),o=this.calculateInGivenOut(e,t,n),i=Ae(n.fee),l=[];return pe.isSellAllowed(e.tradeableIn)||l.push("TradeNotAllowed"),t.isLessThan(this.minTradingLimit)&&l.push("InsufficientTradingAmount"),{amountIn:o,calculatedIn:r,amountOut:t,feePct:i,errors:l}}validateAndSell(e,t,n){let r=this.calculateOutGivenIn(e,t),o=this.calculateOutGivenIn(e,t,n),i=Ae(n.fee),l=[];return pe.isBuyAllowed(e.tradeableOut)||l.push("TradeNotAllowed"),t.isLessThan(this.minTradingLimit)&&l.push("InsufficientTradingAmount"),{amountIn:t,calculatedOut:r,amountOut:o,feePct:i,errors:l}}calculateIn(e,t,n){let r=Se.calculateInGivenOut(this.getReserves(),Number(e.assetIn),Number(e.assetOut),t.toFixed(0),this.amplification,n?ye(n.fee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateAddOneAsset(e,t,n){let r=Se.calculateAddOneAsset(this.getReserves(),t.toFixed(0),Number(e.assetIn),this.amplification,this.totalIssuance,n?ye(n.fee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateSharesForAmount(e,t,n){let r=Se.calculateSharesForAmount(this.getReserves(),Number(e.assetOut),t.toFixed(0),this.amplification,this.totalIssuance,n?ye(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(xe,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=Se.calculateOutGivenIn(this.getReserves(),Number(e.assetIn),Number(e.assetOut),t.toFixed(0),this.amplification,n?ye(n.fee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateWithdrawOneAsset(e,t,n){let r=Se.calculateLiquidityOutOneAsset(this.getReserves(),t.toFixed(0),Number(e.assetOut),this.amplification,this.totalIssuance,n?ye(n.fee).toString():z.toString()),o=D(r);return o.isNegative()?z:o}calculateShares(e,t,n){let r=Se.calculateShares(this.getReserves(),this.getAssets(e.assetIn,t),this.amplification,this.totalIssuance,n?ye(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(xe,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=Se.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 be=Ot(Vn()),He=class{static getSpotPrice(e,t,n){return(0,be.get_spot_price)(e,t,n)}static calculateInGivenOut(e,t,n){return(0,be.calculate_in_given_out)(e,t,n)}static calculateOutGivenIn(e,t,n){return(0,be.calculate_out_given_in)(e,t,n)}static calculatePoolTradeFee(e,t,n){return(0,be.calculate_pool_trade_fee)(e,t,n)}static calculateLiquidityIn(e,t,n){return(0,be.calculate_liquidity_in)(e,t,n)}static calculateShares(e,t,n){return(0,be.calculate_shares)(e,t,n)}static calculateLiquidityOutAssetA(e,t,n,r){return(0,be.calculate_liquidity_out_asset_a)(e,t,n,r)}static calculateLiquidityOutAssetB(e,t,n,r){return(0,be.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 i=D(r.balance),l=D(o.balance);return{assetIn:e,assetOut:t,decimalsIn:r.decimals,decimalsOut:o.decimals,balanceIn:i,balanceOut:l}}validateAndBuy(e,t,n){let r=this.calculateInGivenOut(e,t),o=this.calculateTradeFee(r,n),i=Ae(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:i,errors:u}}validateAndSell(e,t,n){let r=this.calculateOutGivenIn(e,t),o=this.calculateTradeFee(r,n),i=Ae(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:i,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(xe,e.decimalsOut).toString());return D(t)}spotPriceOutGivenIn(e){let t=He.getSpotPrice(e.balanceIn.toString(),e.balanceOut.toString(),ue(xe,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),i=this.getPaths(e,null,r,t).map(l=>l[l.length-1].assetOut);return this.toPoolAssets([...new Set(i)],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:i,meta:l})=>({id:r,symbol:o,icon:i,meta:l}))).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 i=t.get(n);return{poolAddress:n,poolId:i?.id,pool:i?.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,meta:r?.meta}})}};function $r(s,e){return s.minus(e).abs().div(s.plus(e).div(2)).multipliedBy(100).decimalPlaces(2)}function ct(s,e){return s.minus(e).div(e).multipliedBy(100).decimalPlaces(2)}function yn(s,e){return xe.minus(e.div(s)).multipliedBy(100).decimalPlaces(2)}function xn(s,e){return e.div(s).minus(xe).multipliedBy(100).decimalPlaces(2)}var yt=class extends Ve{isDirectTrade(e){return e.length==1}findBestSellRoute(e){let t=e.sort((n,r)=>{let o=n[n.length-1].amountOut,i=r[r.length-1].amountOut;return o.isGreaterThan(i)?-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,i)=>o+i),r=e.map(o=>o.tradeFeeRange?.[1]??o.tradeFeePct).reduce((o,i)=>o+i);return[n,r]}}getPoolFeeRange(e){let t=e.min?Ae(e.min):void 0,n=e.max?Ae(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),i=super.getPaths(e,t,o,r);if(i.length===0)throw new nt(e,t);let l=i.map(async H=>await this.toSellSwaps(n,H,o)),u=await Promise.all(l),p=this.findBestSellRoute(u),P=p[0],v=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,v.assetOutDecimals).decimalPlaces(0,1),L=P.amountIn.shiftedBy(-1*P.assetInDecimals).multipliedBy(k),E=ct(v.calculatedOut,L),G=T?v.calculatedOut:this.calculateDelta0Y(P.amountIn,p,o),S=v.amountOut,C=T?v.tradeFeePct:yn(G,S).toNumber(),j=G.minus(S),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:v.amountOut,spotPrice:k,tradeFee:j,tradeFeePct:C,tradeFeeRange:te,priceImpactPct:E.toNumber(),swaps:p,toTx:V,toHuman(){return{type:"Sell",amountIn:me(P.amountIn,P.assetInDecimals),amountOut:me(v.amountOut,v.assetOutDecimals),spotPrice:me(k,v.assetOutDecimals),tradeFee:me(j,v.assetOutDecimals),tradeFeePct:C,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 i=t[o],l=n.get(i.poolAddress);if(l==null)throw new Error("Pool does not exit");let u=l.parsePair(i.assetIn,i.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 i=t[o],l=n.get(i.poolAddress);if(l==null)throw new Error("Pool does not exit");let u=l.parsePair(i.assetIn,i.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:v,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),S=ct(T,G);r.push({...i,assetInDecimals:u.decimalsIn,assetOutDecimals:u.decimalsOut,amountIn:p,calculatedOut:T,amountOut:v,spotPrice:E,tradeFeePct:F,tradeFeeRange:L,priceImpactPct:S.toNumber(),errors:k,toHuman(){return{...i,amountIn:me(p,u.decimalsIn),calculatedOut:me(T,u.decimalsOut),amountOut:me(v,u.decimalsOut),spotPrice:me(E,u.decimalsOut),tradeFeePct:F,tradeFeeRange:L,priceImpactPct:S.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 i=o.map(async T=>await this.toSellSwaps("1",T,r)),l=await Promise.all(i),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,i=r[0].amountIn;return o.isGreaterThan(i)?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),i=super.getPaths(e,t,o,r);if(i.length===0)throw new nt(e,t);let l=i.map(async H=>await this.toBuySwaps(n,H,o)),u=await Promise.all(l),p=this.findBestBuyRoute(u),P=p[p.length-1],v=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,v.assetInDecimals).decimalPlaces(0,1),L=P.amountOut.shiftedBy(-1*P.assetOutDecimals).multipliedBy(k),E;v.calculatedIn.isZero()?E=-100:E=ct(L,v.calculatedIn).toNumber();let G=T?v.calculatedIn:this.calculateDelta0X(P.amountOut,p,o),S=v.amountIn,C=T?v.tradeFeePct:xn(G,S),j=S.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:v.amountIn,spotPrice:k,tradeFee:j,tradeFeePct:C,tradeFeeRange:te,priceImpactPct:E,swaps:p,toTx:V,toHuman(){return{type:"Buy",amountOut:me(P.amountOut,P.assetOutDecimals),amountIn:me(v.amountIn,v.assetInDecimals),spotPrice:me(k,v.assetInDecimals),tradeFee:me(j,v.assetInDecimals),tradeFeePct:C,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 i=t[o],l=n.get(i.poolAddress);if(l==null)throw new Error("Pool does not exit");let u=l.parsePair(i.assetIn,i.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 i=t[o],l=n.get(i.poolAddress);if(l==null)throw new Error("Pool does not exit");let u=l.parsePair(i.assetIn,i.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:v,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),S;T.isZero()?S=-100:S=ct(G,T).toNumber(),r.unshift({...i,assetInDecimals:u.decimalsIn,assetOutDecimals:u.decimalsOut,amountOut:p,calculatedIn:T,amountIn:v,spotPrice:E,tradeFeePct:F,tradeFeeRange:L,priceImpactPct:S,errors:k,toHuman(){return{...i,amountOut:me(p,u.decimalsOut),calculatedIn:me(T,u.decimalsIn),amountIn:me(v,u.decimalsIn),spotPrice:me(E,u.decimalsIn),tradeFeePct:F,tradeFeeRange:L,priceImpactPct:S,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});
|