@msafe/sui-app-store 0.0.302 → 0.0.304

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var Zp=Object.create;var $n=Object.defineProperty;var td=Object.getOwnPropertyDescriptor;var ed=Object.getOwnPropertyNames;var nd=Object.getPrototypeOf,od=Object.prototype.hasOwnProperty;var ad=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),Gr=(i,e)=>{for(var t in e)$n(i,t,{get:e[t],enumerable:!0})},uc=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ed(e))!od.call(i,o)&&o!==t&&$n(i,o,{get:()=>e[o],enumerable:!(n=td(e,o))||n.enumerable});return i};var Ut=(i,e,t)=>(t=i!=null?Zp(nd(i)):{},uc(e||!i||!i.__esModule?$n(t,"default",{value:i,enumerable:!0}):t,i)),id=i=>uc($n({},"__esModule",{value:!0}),i);var gp=ad((hp,qs)=>{"use strict";(function(i,e){"use strict";function t(y,r){if(!y)throw new Error(r||"Assertion failed")}function n(y,r){y.super_=r;var u=function(){};u.prototype=r.prototype,y.prototype=new u,y.prototype.constructor=y}function o(y,r,u){if(o.isBN(y))return y;this.negative=0,this.words=null,this.length=0,this.red=null,y!==null&&((r==="le"||r==="be")&&(u=r,r=10),this._init(y||0,r||10,u||"be"))}typeof i=="object"?i.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=require("buffer").Buffer}catch{}o.isBN=function(r){return r instanceof o?!0:r!==null&&typeof r=="object"&&r.constructor.wordSize===o.wordSize&&Array.isArray(r.words)},o.max=function(r,u){return r.cmp(u)>0?r:u},o.min=function(r,u){return r.cmp(u)<0?r:u},o.prototype._init=function(r,u,m){if(typeof r=="number")return this._initNumber(r,u,m);if(typeof r=="object")return this._initArray(r,u,m);u==="hex"&&(u=16),t(u===(u|0)&&u>=2&&u<=36),r=r.toString().replace(/\s+/g,"");var p=0;r[0]==="-"&&(p++,this.negative=1),p<r.length&&(u===16?this._parseHex(r,p,m):(this._parseBase(r,u,p),m==="le"&&this._initArray(this.toArray(),u,m)))},o.prototype._initNumber=function(r,u,m){r<0&&(this.negative=1,r=-r),r<67108864?(this.words=[r&67108863],this.length=1):r<4503599627370496?(this.words=[r&67108863,r/67108864&67108863],this.length=2):(t(r<9007199254740992),this.words=[r&67108863,r/67108864&67108863,1],this.length=3),m==="le"&&this._initArray(this.toArray(),u,m)},o.prototype._initArray=function(r,u,m){if(t(typeof r.length=="number"),r.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(r.length/3),this.words=new Array(this.length);for(var p=0;p<this.length;p++)this.words[p]=0;var h,S,I=0;if(m==="be")for(p=r.length-1,h=0;p>=0;p-=3)S=r[p]|r[p-1]<<8|r[p-2]<<16,this.words[h]|=S<<I&67108863,this.words[h+1]=S>>>26-I&67108863,I+=24,I>=26&&(I-=26,h++);else if(m==="le")for(p=0,h=0;p<r.length;p+=3)S=r[p]|r[p+1]<<8|r[p+2]<<16,this.words[h]|=S<<I&67108863,this.words[h+1]=S>>>26-I&67108863,I+=24,I>=26&&(I-=26,h++);return this._strip()};function s(y,r){var u=y.charCodeAt(r);if(u>=48&&u<=57)return u-48;if(u>=65&&u<=70)return u-55;if(u>=97&&u<=102)return u-87;t(!1,"Invalid character in "+y)}function l(y,r,u){var m=s(y,u);return u-1>=r&&(m|=s(y,u-1)<<4),m}o.prototype._parseHex=function(r,u,m){this.length=Math.ceil((r.length-u)/6),this.words=new Array(this.length);for(var p=0;p<this.length;p++)this.words[p]=0;var h=0,S=0,I;if(m==="be")for(p=r.length-1;p>=u;p-=2)I=l(r,u,p)<<h,this.words[S]|=I&67108863,h>=18?(h-=18,S+=1,this.words[S]|=I>>>26):h+=8;else{var f=r.length-u;for(p=f%2===0?u+1:u;p<r.length;p+=2)I=l(r,u,p)<<h,this.words[S]|=I&67108863,h>=18?(h-=18,S+=1,this.words[S]|=I>>>26):h+=8}this._strip()};function d(y,r,u,m){for(var p=0,h=0,S=Math.min(y.length,u),I=r;I<S;I++){var f=y.charCodeAt(I)-48;p*=m,f>=49?h=f-49+10:f>=17?h=f-17+10:h=f,t(f>=0&&h<m,"Invalid character"),p+=h}return p}o.prototype._parseBase=function(r,u,m){this.words=[0],this.length=1;for(var p=0,h=1;h<=67108863;h*=u)p++;p--,h=h/u|0;for(var S=r.length-m,I=S%p,f=Math.min(S,S-I)+m,c=0,g=m;g<f;g+=p)c=d(r,g,g+p,u),this.imuln(h),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(I!==0){var v=1;for(c=d(r,g,r.length,u),g=0;g<I;g++)v*=u;this.imuln(v),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}this._strip()},o.prototype.copy=function(r){r.words=new Array(this.length);for(var u=0;u<this.length;u++)r.words[u]=this.words[u];r.length=this.length,r.negative=this.negative,r.red=this.red};function b(y,r){y.words=r.words,y.length=r.length,y.negative=r.negative,y.red=r.red}if(o.prototype._move=function(r){b(r,this)},o.prototype.clone=function(){var r=new o(null);return this.copy(r),r},o.prototype._expand=function(r){for(;this.length<r;)this.words[this.length++]=0;return this},o.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},o.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=T}catch{o.prototype.inspect=T}else o.prototype.inspect=T;function T(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var w=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],k=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],x=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(r,u){r=r||10,u=u|0||1;var m;if(r===16||r==="hex"){m="";for(var p=0,h=0,S=0;S<this.length;S++){var I=this.words[S],f=((I<<p|h)&16777215).toString(16);h=I>>>24-p&16777215,p+=2,p>=26&&(p-=26,S--),h!==0||S!==this.length-1?m=w[6-f.length]+f+m:m=f+m}for(h!==0&&(m=h.toString(16)+m);m.length%u!==0;)m="0"+m;return this.negative!==0&&(m="-"+m),m}if(r===(r|0)&&r>=2&&r<=36){var c=k[r],g=x[r];m="";var v=this.clone();for(v.negative=0;!v.isZero();){var M=v.modrn(g).toString(r);v=v.idivn(g),v.isZero()?m=M+m:m=w[c-M.length]+M+m}for(this.isZero()&&(m="0"+m);m.length%u!==0;)m="0"+m;return this.negative!==0&&(m="-"+m),m}t(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var r=this.words[0];return this.length===2?r+=this.words[1]*67108864:this.length===3&&this.words[2]===1?r+=4503599627370496+this.words[1]*67108864:this.length>2&&t(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-r:r},o.prototype.toJSON=function(){return this.toString(16,2)},a&&(o.prototype.toBuffer=function(r,u){return this.toArrayLike(a,r,u)}),o.prototype.toArray=function(r,u){return this.toArrayLike(Array,r,u)};var D=function(r,u){return r.allocUnsafe?r.allocUnsafe(u):new r(u)};o.prototype.toArrayLike=function(r,u,m){this._strip();var p=this.byteLength(),h=m||Math.max(1,p);t(p<=h,"byte array longer than desired length"),t(h>0,"Requested array length <= 0");var S=D(r,h),I=u==="le"?"LE":"BE";return this["_toArrayLike"+I](S,p),S},o.prototype._toArrayLikeLE=function(r,u){for(var m=0,p=0,h=0,S=0;h<this.length;h++){var I=this.words[h]<<S|p;r[m++]=I&255,m<r.length&&(r[m++]=I>>8&255),m<r.length&&(r[m++]=I>>16&255),S===6?(m<r.length&&(r[m++]=I>>24&255),p=0,S=0):(p=I>>>24,S+=2)}if(m<r.length)for(r[m++]=p;m<r.length;)r[m++]=0},o.prototype._toArrayLikeBE=function(r,u){for(var m=r.length-1,p=0,h=0,S=0;h<this.length;h++){var I=this.words[h]<<S|p;r[m--]=I&255,m>=0&&(r[m--]=I>>8&255),m>=0&&(r[m--]=I>>16&255),S===6?(m>=0&&(r[m--]=I>>24&255),p=0,S=0):(p=I>>>24,S+=2)}if(m>=0)for(r[m--]=p;m>=0;)r[m--]=0},Math.clz32?o.prototype._countBits=function(r){return 32-Math.clz32(r)}:o.prototype._countBits=function(r){var u=r,m=0;return u>=4096&&(m+=13,u>>>=13),u>=64&&(m+=7,u>>>=7),u>=8&&(m+=4,u>>>=4),u>=2&&(m+=2,u>>>=2),m+u},o.prototype._zeroBits=function(r){if(r===0)return 26;var u=r,m=0;return(u&8191)===0&&(m+=13,u>>>=13),(u&127)===0&&(m+=7,u>>>=7),(u&15)===0&&(m+=4,u>>>=4),(u&3)===0&&(m+=2,u>>>=2),(u&1)===0&&m++,m},o.prototype.bitLength=function(){var r=this.words[this.length-1],u=this._countBits(r);return(this.length-1)*26+u};function P(y){for(var r=new Array(y.bitLength()),u=0;u<r.length;u++){var m=u/26|0,p=u%26;r[u]=y.words[m]>>>p&1}return r}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var r=0,u=0;u<this.length;u++){var m=this._zeroBits(this.words[u]);if(r+=m,m!==26)break}return r},o.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},o.prototype.toTwos=function(r){return this.negative!==0?this.abs().inotn(r).iaddn(1):this.clone()},o.prototype.fromTwos=function(r){return this.testn(r-1)?this.notn(r).iaddn(1).ineg():this.clone()},o.prototype.isNeg=function(){return this.negative!==0},o.prototype.neg=function(){return this.clone().ineg()},o.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},o.prototype.iuor=function(r){for(;this.length<r.length;)this.words[this.length++]=0;for(var u=0;u<r.length;u++)this.words[u]=this.words[u]|r.words[u];return this._strip()},o.prototype.ior=function(r){return t((this.negative|r.negative)===0),this.iuor(r)},o.prototype.or=function(r){return this.length>r.length?this.clone().ior(r):r.clone().ior(this)},o.prototype.uor=function(r){return this.length>r.length?this.clone().iuor(r):r.clone().iuor(this)},o.prototype.iuand=function(r){var u;this.length>r.length?u=r:u=this;for(var m=0;m<u.length;m++)this.words[m]=this.words[m]&r.words[m];return this.length=u.length,this._strip()},o.prototype.iand=function(r){return t((this.negative|r.negative)===0),this.iuand(r)},o.prototype.and=function(r){return this.length>r.length?this.clone().iand(r):r.clone().iand(this)},o.prototype.uand=function(r){return this.length>r.length?this.clone().iuand(r):r.clone().iuand(this)},o.prototype.iuxor=function(r){var u,m;this.length>r.length?(u=this,m=r):(u=r,m=this);for(var p=0;p<m.length;p++)this.words[p]=u.words[p]^m.words[p];if(this!==u)for(;p<u.length;p++)this.words[p]=u.words[p];return this.length=u.length,this._strip()},o.prototype.ixor=function(r){return t((this.negative|r.negative)===0),this.iuxor(r)},o.prototype.xor=function(r){return this.length>r.length?this.clone().ixor(r):r.clone().ixor(this)},o.prototype.uxor=function(r){return this.length>r.length?this.clone().iuxor(r):r.clone().iuxor(this)},o.prototype.inotn=function(r){t(typeof r=="number"&&r>=0);var u=Math.ceil(r/26)|0,m=r%26;this._expand(u),m>0&&u--;for(var p=0;p<u;p++)this.words[p]=~this.words[p]&67108863;return m>0&&(this.words[p]=~this.words[p]&67108863>>26-m),this._strip()},o.prototype.notn=function(r){return this.clone().inotn(r)},o.prototype.setn=function(r,u){t(typeof r=="number"&&r>=0);var m=r/26|0,p=r%26;return this._expand(m+1),u?this.words[m]=this.words[m]|1<<p:this.words[m]=this.words[m]&~(1<<p),this._strip()},o.prototype.iadd=function(r){var u;if(this.negative!==0&&r.negative===0)return this.negative=0,u=this.isub(r),this.negative^=1,this._normSign();if(this.negative===0&&r.negative!==0)return r.negative=0,u=this.isub(r),r.negative=1,u._normSign();var m,p;this.length>r.length?(m=this,p=r):(m=r,p=this);for(var h=0,S=0;S<p.length;S++)u=(m.words[S]|0)+(p.words[S]|0)+h,this.words[S]=u&67108863,h=u>>>26;for(;h!==0&&S<m.length;S++)u=(m.words[S]|0)+h,this.words[S]=u&67108863,h=u>>>26;if(this.length=m.length,h!==0)this.words[this.length]=h,this.length++;else if(m!==this)for(;S<m.length;S++)this.words[S]=m.words[S];return this},o.prototype.add=function(r){var u;return r.negative!==0&&this.negative===0?(r.negative=0,u=this.sub(r),r.negative^=1,u):r.negative===0&&this.negative!==0?(this.negative=0,u=r.sub(this),this.negative=1,u):this.length>r.length?this.clone().iadd(r):r.clone().iadd(this)},o.prototype.isub=function(r){if(r.negative!==0){r.negative=0;var u=this.iadd(r);return r.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(r),this.negative=1,this._normSign();var m=this.cmp(r);if(m===0)return this.negative=0,this.length=1,this.words[0]=0,this;var p,h;m>0?(p=this,h=r):(p=r,h=this);for(var S=0,I=0;I<h.length;I++)u=(p.words[I]|0)-(h.words[I]|0)+S,S=u>>26,this.words[I]=u&67108863;for(;S!==0&&I<p.length;I++)u=(p.words[I]|0)+S,S=u>>26,this.words[I]=u&67108863;if(S===0&&I<p.length&&p!==this)for(;I<p.length;I++)this.words[I]=p.words[I];return this.length=Math.max(this.length,I),p!==this&&(this.negative=1),this._strip()},o.prototype.sub=function(r){return this.clone().isub(r)};function q(y,r,u){u.negative=r.negative^y.negative;var m=y.length+r.length|0;u.length=m,m=m-1|0;var p=y.words[0]|0,h=r.words[0]|0,S=p*h,I=S&67108863,f=S/67108864|0;u.words[0]=I;for(var c=1;c<m;c++){for(var g=f>>>26,v=f&67108863,M=Math.min(c,r.length-1),O=Math.max(0,c-y.length+1);O<=M;O++){var B=c-O|0;p=y.words[B]|0,h=r.words[O]|0,S=p*h+v,g+=S/67108864|0,v=S&67108863}u.words[c]=v|0,f=g|0}return f!==0?u.words[c]=f|0:u.length--,u._strip()}var $=function(r,u,m){var p=r.words,h=u.words,S=m.words,I=0,f,c,g,v=p[0]|0,M=v&8191,O=v>>>13,B=p[1]|0,W=B&8191,j=B>>>13,ue=p[2]|0,U=ue&8191,K=ue>>>13,Xs=p[3]|0,X=Xs&8191,z=Xs>>>13,zs=p[4]|0,G=zs&8191,Q=zs>>>13,Gs=p[5]|0,J=Gs&8191,Y=Gs>>>13,Qs=p[6]|0,Z=Qs&8191,tt=Qs>>>13,Js=p[7]|0,et=Js&8191,nt=Js>>>13,Ys=p[8]|0,ot=Ys&8191,at=Ys>>>13,Zs=p[9]|0,it=Zs&8191,rt=Zs>>>13,tc=h[0]|0,st=tc&8191,ct=tc>>>13,ec=h[1]|0,lt=ec&8191,ut=ec>>>13,nc=h[2]|0,mt=nc&8191,pt=nc>>>13,oc=h[3]|0,dt=oc&8191,ft=oc>>>13,ac=h[4]|0,ht=ac&8191,gt=ac>>>13,ic=h[5]|0,yt=ic&8191,bt=ic>>>13,rc=h[6]|0,St=rc&8191,Tt=rc>>>13,sc=h[7]|0,It=sc&8191,wt=sc>>>13,cc=h[8]|0,Ct=cc&8191,kt=cc>>>13,lc=h[9]|0,xt=lc&8191,Dt=lc>>>13;m.negative=r.negative^u.negative,m.length=19,f=Math.imul(M,st),c=Math.imul(M,ct),c=c+Math.imul(O,st)|0,g=Math.imul(O,ct);var Or=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Or>>>26)|0,Or&=67108863,f=Math.imul(W,st),c=Math.imul(W,ct),c=c+Math.imul(j,st)|0,g=Math.imul(j,ct),f=f+Math.imul(M,lt)|0,c=c+Math.imul(M,ut)|0,c=c+Math.imul(O,lt)|0,g=g+Math.imul(O,ut)|0;var Pr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Pr>>>26)|0,Pr&=67108863,f=Math.imul(U,st),c=Math.imul(U,ct),c=c+Math.imul(K,st)|0,g=Math.imul(K,ct),f=f+Math.imul(W,lt)|0,c=c+Math.imul(W,ut)|0,c=c+Math.imul(j,lt)|0,g=g+Math.imul(j,ut)|0,f=f+Math.imul(M,mt)|0,c=c+Math.imul(M,pt)|0,c=c+Math.imul(O,mt)|0,g=g+Math.imul(O,pt)|0;var Rr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Rr>>>26)|0,Rr&=67108863,f=Math.imul(X,st),c=Math.imul(X,ct),c=c+Math.imul(z,st)|0,g=Math.imul(z,ct),f=f+Math.imul(U,lt)|0,c=c+Math.imul(U,ut)|0,c=c+Math.imul(K,lt)|0,g=g+Math.imul(K,ut)|0,f=f+Math.imul(W,mt)|0,c=c+Math.imul(W,pt)|0,c=c+Math.imul(j,mt)|0,g=g+Math.imul(j,pt)|0,f=f+Math.imul(M,dt)|0,c=c+Math.imul(M,ft)|0,c=c+Math.imul(O,dt)|0,g=g+Math.imul(O,ft)|0;var Br=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Br>>>26)|0,Br&=67108863,f=Math.imul(G,st),c=Math.imul(G,ct),c=c+Math.imul(Q,st)|0,g=Math.imul(Q,ct),f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,ut)|0,c=c+Math.imul(z,lt)|0,g=g+Math.imul(z,ut)|0,f=f+Math.imul(U,mt)|0,c=c+Math.imul(U,pt)|0,c=c+Math.imul(K,mt)|0,g=g+Math.imul(K,pt)|0,f=f+Math.imul(W,dt)|0,c=c+Math.imul(W,ft)|0,c=c+Math.imul(j,dt)|0,g=g+Math.imul(j,ft)|0,f=f+Math.imul(M,ht)|0,c=c+Math.imul(M,gt)|0,c=c+Math.imul(O,ht)|0,g=g+Math.imul(O,gt)|0;var Er=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Er>>>26)|0,Er&=67108863,f=Math.imul(J,st),c=Math.imul(J,ct),c=c+Math.imul(Y,st)|0,g=Math.imul(Y,ct),f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,ut)|0,c=c+Math.imul(Q,lt)|0,g=g+Math.imul(Q,ut)|0,f=f+Math.imul(X,mt)|0,c=c+Math.imul(X,pt)|0,c=c+Math.imul(z,mt)|0,g=g+Math.imul(z,pt)|0,f=f+Math.imul(U,dt)|0,c=c+Math.imul(U,ft)|0,c=c+Math.imul(K,dt)|0,g=g+Math.imul(K,ft)|0,f=f+Math.imul(W,ht)|0,c=c+Math.imul(W,gt)|0,c=c+Math.imul(j,ht)|0,g=g+Math.imul(j,gt)|0,f=f+Math.imul(M,yt)|0,c=c+Math.imul(M,bt)|0,c=c+Math.imul(O,yt)|0,g=g+Math.imul(O,bt)|0;var Nr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Nr>>>26)|0,Nr&=67108863,f=Math.imul(Z,st),c=Math.imul(Z,ct),c=c+Math.imul(tt,st)|0,g=Math.imul(tt,ct),f=f+Math.imul(J,lt)|0,c=c+Math.imul(J,ut)|0,c=c+Math.imul(Y,lt)|0,g=g+Math.imul(Y,ut)|0,f=f+Math.imul(G,mt)|0,c=c+Math.imul(G,pt)|0,c=c+Math.imul(Q,mt)|0,g=g+Math.imul(Q,pt)|0,f=f+Math.imul(X,dt)|0,c=c+Math.imul(X,ft)|0,c=c+Math.imul(z,dt)|0,g=g+Math.imul(z,ft)|0,f=f+Math.imul(U,ht)|0,c=c+Math.imul(U,gt)|0,c=c+Math.imul(K,ht)|0,g=g+Math.imul(K,gt)|0,f=f+Math.imul(W,yt)|0,c=c+Math.imul(W,bt)|0,c=c+Math.imul(j,yt)|0,g=g+Math.imul(j,bt)|0,f=f+Math.imul(M,St)|0,c=c+Math.imul(M,Tt)|0,c=c+Math.imul(O,St)|0,g=g+Math.imul(O,Tt)|0;var Wr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,f=Math.imul(et,st),c=Math.imul(et,ct),c=c+Math.imul(nt,st)|0,g=Math.imul(nt,ct),f=f+Math.imul(Z,lt)|0,c=c+Math.imul(Z,ut)|0,c=c+Math.imul(tt,lt)|0,g=g+Math.imul(tt,ut)|0,f=f+Math.imul(J,mt)|0,c=c+Math.imul(J,pt)|0,c=c+Math.imul(Y,mt)|0,g=g+Math.imul(Y,pt)|0,f=f+Math.imul(G,dt)|0,c=c+Math.imul(G,ft)|0,c=c+Math.imul(Q,dt)|0,g=g+Math.imul(Q,ft)|0,f=f+Math.imul(X,ht)|0,c=c+Math.imul(X,gt)|0,c=c+Math.imul(z,ht)|0,g=g+Math.imul(z,gt)|0,f=f+Math.imul(U,yt)|0,c=c+Math.imul(U,bt)|0,c=c+Math.imul(K,yt)|0,g=g+Math.imul(K,bt)|0,f=f+Math.imul(W,St)|0,c=c+Math.imul(W,Tt)|0,c=c+Math.imul(j,St)|0,g=g+Math.imul(j,Tt)|0,f=f+Math.imul(M,It)|0,c=c+Math.imul(M,wt)|0,c=c+Math.imul(O,It)|0,g=g+Math.imul(O,wt)|0;var _r=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(_r>>>26)|0,_r&=67108863,f=Math.imul(ot,st),c=Math.imul(ot,ct),c=c+Math.imul(at,st)|0,g=Math.imul(at,ct),f=f+Math.imul(et,lt)|0,c=c+Math.imul(et,ut)|0,c=c+Math.imul(nt,lt)|0,g=g+Math.imul(nt,ut)|0,f=f+Math.imul(Z,mt)|0,c=c+Math.imul(Z,pt)|0,c=c+Math.imul(tt,mt)|0,g=g+Math.imul(tt,pt)|0,f=f+Math.imul(J,dt)|0,c=c+Math.imul(J,ft)|0,c=c+Math.imul(Y,dt)|0,g=g+Math.imul(Y,ft)|0,f=f+Math.imul(G,ht)|0,c=c+Math.imul(G,gt)|0,c=c+Math.imul(Q,ht)|0,g=g+Math.imul(Q,gt)|0,f=f+Math.imul(X,yt)|0,c=c+Math.imul(X,bt)|0,c=c+Math.imul(z,yt)|0,g=g+Math.imul(z,bt)|0,f=f+Math.imul(U,St)|0,c=c+Math.imul(U,Tt)|0,c=c+Math.imul(K,St)|0,g=g+Math.imul(K,Tt)|0,f=f+Math.imul(W,It)|0,c=c+Math.imul(W,wt)|0,c=c+Math.imul(j,It)|0,g=g+Math.imul(j,wt)|0,f=f+Math.imul(M,Ct)|0,c=c+Math.imul(M,kt)|0,c=c+Math.imul(O,Ct)|0,g=g+Math.imul(O,kt)|0;var Lr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Lr>>>26)|0,Lr&=67108863,f=Math.imul(it,st),c=Math.imul(it,ct),c=c+Math.imul(rt,st)|0,g=Math.imul(rt,ct),f=f+Math.imul(ot,lt)|0,c=c+Math.imul(ot,ut)|0,c=c+Math.imul(at,lt)|0,g=g+Math.imul(at,ut)|0,f=f+Math.imul(et,mt)|0,c=c+Math.imul(et,pt)|0,c=c+Math.imul(nt,mt)|0,g=g+Math.imul(nt,pt)|0,f=f+Math.imul(Z,dt)|0,c=c+Math.imul(Z,ft)|0,c=c+Math.imul(tt,dt)|0,g=g+Math.imul(tt,ft)|0,f=f+Math.imul(J,ht)|0,c=c+Math.imul(J,gt)|0,c=c+Math.imul(Y,ht)|0,g=g+Math.imul(Y,gt)|0,f=f+Math.imul(G,yt)|0,c=c+Math.imul(G,bt)|0,c=c+Math.imul(Q,yt)|0,g=g+Math.imul(Q,bt)|0,f=f+Math.imul(X,St)|0,c=c+Math.imul(X,Tt)|0,c=c+Math.imul(z,St)|0,g=g+Math.imul(z,Tt)|0,f=f+Math.imul(U,It)|0,c=c+Math.imul(U,wt)|0,c=c+Math.imul(K,It)|0,g=g+Math.imul(K,wt)|0,f=f+Math.imul(W,Ct)|0,c=c+Math.imul(W,kt)|0,c=c+Math.imul(j,Ct)|0,g=g+Math.imul(j,kt)|0,f=f+Math.imul(M,xt)|0,c=c+Math.imul(M,Dt)|0,c=c+Math.imul(O,xt)|0,g=g+Math.imul(O,Dt)|0;var jr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(jr>>>26)|0,jr&=67108863,f=Math.imul(it,lt),c=Math.imul(it,ut),c=c+Math.imul(rt,lt)|0,g=Math.imul(rt,ut),f=f+Math.imul(ot,mt)|0,c=c+Math.imul(ot,pt)|0,c=c+Math.imul(at,mt)|0,g=g+Math.imul(at,pt)|0,f=f+Math.imul(et,dt)|0,c=c+Math.imul(et,ft)|0,c=c+Math.imul(nt,dt)|0,g=g+Math.imul(nt,ft)|0,f=f+Math.imul(Z,ht)|0,c=c+Math.imul(Z,gt)|0,c=c+Math.imul(tt,ht)|0,g=g+Math.imul(tt,gt)|0,f=f+Math.imul(J,yt)|0,c=c+Math.imul(J,bt)|0,c=c+Math.imul(Y,yt)|0,g=g+Math.imul(Y,bt)|0,f=f+Math.imul(G,St)|0,c=c+Math.imul(G,Tt)|0,c=c+Math.imul(Q,St)|0,g=g+Math.imul(Q,Tt)|0,f=f+Math.imul(X,It)|0,c=c+Math.imul(X,wt)|0,c=c+Math.imul(z,It)|0,g=g+Math.imul(z,wt)|0,f=f+Math.imul(U,Ct)|0,c=c+Math.imul(U,kt)|0,c=c+Math.imul(K,Ct)|0,g=g+Math.imul(K,kt)|0,f=f+Math.imul(W,xt)|0,c=c+Math.imul(W,Dt)|0,c=c+Math.imul(j,xt)|0,g=g+Math.imul(j,Dt)|0;var Ur=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Ur>>>26)|0,Ur&=67108863,f=Math.imul(it,mt),c=Math.imul(it,pt),c=c+Math.imul(rt,mt)|0,g=Math.imul(rt,pt),f=f+Math.imul(ot,dt)|0,c=c+Math.imul(ot,ft)|0,c=c+Math.imul(at,dt)|0,g=g+Math.imul(at,ft)|0,f=f+Math.imul(et,ht)|0,c=c+Math.imul(et,gt)|0,c=c+Math.imul(nt,ht)|0,g=g+Math.imul(nt,gt)|0,f=f+Math.imul(Z,yt)|0,c=c+Math.imul(Z,bt)|0,c=c+Math.imul(tt,yt)|0,g=g+Math.imul(tt,bt)|0,f=f+Math.imul(J,St)|0,c=c+Math.imul(J,Tt)|0,c=c+Math.imul(Y,St)|0,g=g+Math.imul(Y,Tt)|0,f=f+Math.imul(G,It)|0,c=c+Math.imul(G,wt)|0,c=c+Math.imul(Q,It)|0,g=g+Math.imul(Q,wt)|0,f=f+Math.imul(X,Ct)|0,c=c+Math.imul(X,kt)|0,c=c+Math.imul(z,Ct)|0,g=g+Math.imul(z,kt)|0,f=f+Math.imul(U,xt)|0,c=c+Math.imul(U,Dt)|0,c=c+Math.imul(K,xt)|0,g=g+Math.imul(K,Dt)|0;var qr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(qr>>>26)|0,qr&=67108863,f=Math.imul(it,dt),c=Math.imul(it,ft),c=c+Math.imul(rt,dt)|0,g=Math.imul(rt,ft),f=f+Math.imul(ot,ht)|0,c=c+Math.imul(ot,gt)|0,c=c+Math.imul(at,ht)|0,g=g+Math.imul(at,gt)|0,f=f+Math.imul(et,yt)|0,c=c+Math.imul(et,bt)|0,c=c+Math.imul(nt,yt)|0,g=g+Math.imul(nt,bt)|0,f=f+Math.imul(Z,St)|0,c=c+Math.imul(Z,Tt)|0,c=c+Math.imul(tt,St)|0,g=g+Math.imul(tt,Tt)|0,f=f+Math.imul(J,It)|0,c=c+Math.imul(J,wt)|0,c=c+Math.imul(Y,It)|0,g=g+Math.imul(Y,wt)|0,f=f+Math.imul(G,Ct)|0,c=c+Math.imul(G,kt)|0,c=c+Math.imul(Q,Ct)|0,g=g+Math.imul(Q,kt)|0,f=f+Math.imul(X,xt)|0,c=c+Math.imul(X,Dt)|0,c=c+Math.imul(z,xt)|0,g=g+Math.imul(z,Dt)|0;var Fr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,f=Math.imul(it,ht),c=Math.imul(it,gt),c=c+Math.imul(rt,ht)|0,g=Math.imul(rt,gt),f=f+Math.imul(ot,yt)|0,c=c+Math.imul(ot,bt)|0,c=c+Math.imul(at,yt)|0,g=g+Math.imul(at,bt)|0,f=f+Math.imul(et,St)|0,c=c+Math.imul(et,Tt)|0,c=c+Math.imul(nt,St)|0,g=g+Math.imul(nt,Tt)|0,f=f+Math.imul(Z,It)|0,c=c+Math.imul(Z,wt)|0,c=c+Math.imul(tt,It)|0,g=g+Math.imul(tt,wt)|0,f=f+Math.imul(J,Ct)|0,c=c+Math.imul(J,kt)|0,c=c+Math.imul(Y,Ct)|0,g=g+Math.imul(Y,kt)|0,f=f+Math.imul(G,xt)|0,c=c+Math.imul(G,Dt)|0,c=c+Math.imul(Q,xt)|0,g=g+Math.imul(Q,Dt)|0;var Kr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,f=Math.imul(it,yt),c=Math.imul(it,bt),c=c+Math.imul(rt,yt)|0,g=Math.imul(rt,bt),f=f+Math.imul(ot,St)|0,c=c+Math.imul(ot,Tt)|0,c=c+Math.imul(at,St)|0,g=g+Math.imul(at,Tt)|0,f=f+Math.imul(et,It)|0,c=c+Math.imul(et,wt)|0,c=c+Math.imul(nt,It)|0,g=g+Math.imul(nt,wt)|0,f=f+Math.imul(Z,Ct)|0,c=c+Math.imul(Z,kt)|0,c=c+Math.imul(tt,Ct)|0,g=g+Math.imul(tt,kt)|0,f=f+Math.imul(J,xt)|0,c=c+Math.imul(J,Dt)|0,c=c+Math.imul(Y,xt)|0,g=g+Math.imul(Y,Dt)|0;var $r=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+($r>>>26)|0,$r&=67108863,f=Math.imul(it,St),c=Math.imul(it,Tt),c=c+Math.imul(rt,St)|0,g=Math.imul(rt,Tt),f=f+Math.imul(ot,It)|0,c=c+Math.imul(ot,wt)|0,c=c+Math.imul(at,It)|0,g=g+Math.imul(at,wt)|0,f=f+Math.imul(et,Ct)|0,c=c+Math.imul(et,kt)|0,c=c+Math.imul(nt,Ct)|0,g=g+Math.imul(nt,kt)|0,f=f+Math.imul(Z,xt)|0,c=c+Math.imul(Z,Dt)|0,c=c+Math.imul(tt,xt)|0,g=g+Math.imul(tt,Dt)|0;var Vr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,f=Math.imul(it,It),c=Math.imul(it,wt),c=c+Math.imul(rt,It)|0,g=Math.imul(rt,wt),f=f+Math.imul(ot,Ct)|0,c=c+Math.imul(ot,kt)|0,c=c+Math.imul(at,Ct)|0,g=g+Math.imul(at,kt)|0,f=f+Math.imul(et,xt)|0,c=c+Math.imul(et,Dt)|0,c=c+Math.imul(nt,xt)|0,g=g+Math.imul(nt,Dt)|0;var Hr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,f=Math.imul(it,Ct),c=Math.imul(it,kt),c=c+Math.imul(rt,Ct)|0,g=Math.imul(rt,kt),f=f+Math.imul(ot,xt)|0,c=c+Math.imul(ot,Dt)|0,c=c+Math.imul(at,xt)|0,g=g+Math.imul(at,Dt)|0;var Xr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Xr>>>26)|0,Xr&=67108863,f=Math.imul(it,xt),c=Math.imul(it,Dt),c=c+Math.imul(rt,xt)|0,g=Math.imul(rt,Dt);var zr=(I+f|0)+((c&8191)<<13)|0;return I=(g+(c>>>13)|0)+(zr>>>26)|0,zr&=67108863,S[0]=Or,S[1]=Pr,S[2]=Rr,S[3]=Br,S[4]=Er,S[5]=Nr,S[6]=Wr,S[7]=_r,S[8]=Lr,S[9]=jr,S[10]=Ur,S[11]=qr,S[12]=Fr,S[13]=Kr,S[14]=$r,S[15]=Vr,S[16]=Hr,S[17]=Xr,S[18]=zr,I!==0&&(S[19]=I,m.length++),m};Math.imul||($=q);function Et(y,r,u){u.negative=r.negative^y.negative,u.length=y.length+r.length;for(var m=0,p=0,h=0;h<u.length-1;h++){var S=p;p=0;for(var I=m&67108863,f=Math.min(h,r.length-1),c=Math.max(0,h-y.length+1);c<=f;c++){var g=h-c,v=y.words[g]|0,M=r.words[c]|0,O=v*M,B=O&67108863;S=S+(O/67108864|0)|0,B=B+I|0,I=B&67108863,S=S+(B>>>26)|0,p+=S>>>26,S&=67108863}u.words[h]=I,m=S,S=p}return m!==0?u.words[h]=m:u.length--,u._strip()}function Wt(y,r,u){return Et(y,r,u)}o.prototype.mulTo=function(r,u){var m,p=this.length+r.length;return this.length===10&&r.length===10?m=$(this,r,u):p<63?m=q(this,r,u):p<1024?m=Et(this,r,u):m=Wt(this,r,u),m};function Pt(y,r){this.x=y,this.y=r}Pt.prototype.makeRBT=function(r){for(var u=new Array(r),m=o.prototype._countBits(r)-1,p=0;p<r;p++)u[p]=this.revBin(p,m,r);return u},Pt.prototype.revBin=function(r,u,m){if(r===0||r===m-1)return r;for(var p=0,h=0;h<u;h++)p|=(r&1)<<u-h-1,r>>=1;return p},Pt.prototype.permute=function(r,u,m,p,h,S){for(var I=0;I<S;I++)p[I]=u[r[I]],h[I]=m[r[I]]},Pt.prototype.transform=function(r,u,m,p,h,S){this.permute(S,r,u,m,p,h);for(var I=1;I<h;I<<=1)for(var f=I<<1,c=Math.cos(2*Math.PI/f),g=Math.sin(2*Math.PI/f),v=0;v<h;v+=f)for(var M=c,O=g,B=0;B<I;B++){var W=m[v+B],j=p[v+B],ue=m[v+B+I],U=p[v+B+I],K=M*ue-O*U;U=M*U+O*ue,ue=K,m[v+B]=W+ue,p[v+B]=j+U,m[v+B+I]=W-ue,p[v+B+I]=j-U,B!==f&&(K=c*M-g*O,O=c*O+g*M,M=K)}},Pt.prototype.guessLen13b=function(r,u){var m=Math.max(u,r)|1,p=m&1,h=0;for(m=m/2|0;m;m=m>>>1)h++;return 1<<h+1+p},Pt.prototype.conjugate=function(r,u,m){if(!(m<=1))for(var p=0;p<m/2;p++){var h=r[p];r[p]=r[m-p-1],r[m-p-1]=h,h=u[p],u[p]=-u[m-p-1],u[m-p-1]=-h}},Pt.prototype.normalize13b=function(r,u){for(var m=0,p=0;p<u/2;p++){var h=Math.round(r[2*p+1]/u)*8192+Math.round(r[2*p]/u)+m;r[p]=h&67108863,h<67108864?m=0:m=h/67108864|0}return r},Pt.prototype.convert13b=function(r,u,m,p){for(var h=0,S=0;S<u;S++)h=h+(r[S]|0),m[2*S]=h&8191,h=h>>>13,m[2*S+1]=h&8191,h=h>>>13;for(S=2*u;S<p;++S)m[S]=0;t(h===0),t((h&-8192)===0)},Pt.prototype.stub=function(r){for(var u=new Array(r),m=0;m<r;m++)u[m]=0;return u},Pt.prototype.mulp=function(r,u,m){var p=2*this.guessLen13b(r.length,u.length),h=this.makeRBT(p),S=this.stub(p),I=new Array(p),f=new Array(p),c=new Array(p),g=new Array(p),v=new Array(p),M=new Array(p),O=m.words;O.length=p,this.convert13b(r.words,r.length,I,p),this.convert13b(u.words,u.length,g,p),this.transform(I,S,f,c,p,h),this.transform(g,S,v,M,p,h);for(var B=0;B<p;B++){var W=f[B]*v[B]-c[B]*M[B];c[B]=f[B]*M[B]+c[B]*v[B],f[B]=W}return this.conjugate(f,c,p),this.transform(f,c,O,S,p,h),this.conjugate(O,S,p),this.normalize13b(O,p),m.negative=r.negative^u.negative,m.length=r.length+u.length,m._strip()},o.prototype.mul=function(r){var u=new o(null);return u.words=new Array(this.length+r.length),this.mulTo(r,u)},o.prototype.mulf=function(r){var u=new o(null);return u.words=new Array(this.length+r.length),Wt(this,r,u)},o.prototype.imul=function(r){return this.clone().mulTo(r,this)},o.prototype.imuln=function(r){var u=r<0;u&&(r=-r),t(typeof r=="number"),t(r<67108864);for(var m=0,p=0;p<this.length;p++){var h=(this.words[p]|0)*r,S=(h&67108863)+(m&67108863);m>>=26,m+=h/67108864|0,m+=S>>>26,this.words[p]=S&67108863}return m!==0&&(this.words[p]=m,this.length++),this.length=r===0?1:this.length,u?this.ineg():this},o.prototype.muln=function(r){return this.clone().imuln(r)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(r){var u=P(r);if(u.length===0)return new o(1);for(var m=this,p=0;p<u.length&&u[p]===0;p++,m=m.sqr());if(++p<u.length)for(var h=m.sqr();p<u.length;p++,h=h.sqr())u[p]!==0&&(m=m.mul(h));return m},o.prototype.iushln=function(r){t(typeof r=="number"&&r>=0);var u=r%26,m=(r-u)/26,p=67108863>>>26-u<<26-u,h;if(u!==0){var S=0;for(h=0;h<this.length;h++){var I=this.words[h]&p,f=(this.words[h]|0)-I<<u;this.words[h]=f|S,S=I>>>26-u}S&&(this.words[h]=S,this.length++)}if(m!==0){for(h=this.length-1;h>=0;h--)this.words[h+m]=this.words[h];for(h=0;h<m;h++)this.words[h]=0;this.length+=m}return this._strip()},o.prototype.ishln=function(r){return t(this.negative===0),this.iushln(r)},o.prototype.iushrn=function(r,u,m){t(typeof r=="number"&&r>=0);var p;u?p=(u-u%26)/26:p=0;var h=r%26,S=Math.min((r-h)/26,this.length),I=67108863^67108863>>>h<<h,f=m;if(p-=S,p=Math.max(0,p),f){for(var c=0;c<S;c++)f.words[c]=this.words[c];f.length=S}if(S!==0)if(this.length>S)for(this.length-=S,c=0;c<this.length;c++)this.words[c]=this.words[c+S];else this.words[0]=0,this.length=1;var g=0;for(c=this.length-1;c>=0&&(g!==0||c>=p);c--){var v=this.words[c]|0;this.words[c]=g<<26-h|v>>>h,g=v&I}return f&&g!==0&&(f.words[f.length++]=g),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(r,u,m){return t(this.negative===0),this.iushrn(r,u,m)},o.prototype.shln=function(r){return this.clone().ishln(r)},o.prototype.ushln=function(r){return this.clone().iushln(r)},o.prototype.shrn=function(r){return this.clone().ishrn(r)},o.prototype.ushrn=function(r){return this.clone().iushrn(r)},o.prototype.testn=function(r){t(typeof r=="number"&&r>=0);var u=r%26,m=(r-u)/26,p=1<<u;if(this.length<=m)return!1;var h=this.words[m];return!!(h&p)},o.prototype.imaskn=function(r){t(typeof r=="number"&&r>=0);var u=r%26,m=(r-u)/26;if(t(this.negative===0,"imaskn works only with positive numbers"),this.length<=m)return this;if(u!==0&&m++,this.length=Math.min(m,this.length),u!==0){var p=67108863^67108863>>>u<<u;this.words[this.length-1]&=p}return this._strip()},o.prototype.maskn=function(r){return this.clone().imaskn(r)},o.prototype.iaddn=function(r){return t(typeof r=="number"),t(r<67108864),r<0?this.isubn(-r):this.negative!==0?this.length===1&&(this.words[0]|0)<=r?(this.words[0]=r-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(r),this.negative=1,this):this._iaddn(r)},o.prototype._iaddn=function(r){this.words[0]+=r;for(var u=0;u<this.length&&this.words[u]>=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},o.prototype.isubn=function(r){if(t(typeof r=="number"),t(r<67108864),r<0)return this.iaddn(-r);if(this.negative!==0)return this.negative=0,this.iaddn(r),this.negative=1,this;if(this.words[0]-=r,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u<this.length&&this.words[u]<0;u++)this.words[u]+=67108864,this.words[u+1]-=1;return this._strip()},o.prototype.addn=function(r){return this.clone().iaddn(r)},o.prototype.subn=function(r){return this.clone().isubn(r)},o.prototype.iabs=function(){return this.negative=0,this},o.prototype.abs=function(){return this.clone().iabs()},o.prototype._ishlnsubmul=function(r,u,m){var p=r.length+m,h;this._expand(p);var S,I=0;for(h=0;h<r.length;h++){S=(this.words[h+m]|0)+I;var f=(r.words[h]|0)*u;S-=f&67108863,I=(S>>26)-(f/67108864|0),this.words[h+m]=S&67108863}for(;h<this.length-m;h++)S=(this.words[h+m]|0)+I,I=S>>26,this.words[h+m]=S&67108863;if(I===0)return this._strip();for(t(I===-1),I=0,h=0;h<this.length;h++)S=-(this.words[h]|0)+I,I=S>>26,this.words[h]=S&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(r,u){var m=this.length-r.length,p=this.clone(),h=r,S=h.words[h.length-1]|0,I=this._countBits(S);m=26-I,m!==0&&(h=h.ushln(m),p.iushln(m),S=h.words[h.length-1]|0);var f=p.length-h.length,c;if(u!=="mod"){c=new o(null),c.length=f+1,c.words=new Array(c.length);for(var g=0;g<c.length;g++)c.words[g]=0}var v=p.clone()._ishlnsubmul(h,1,f);v.negative===0&&(p=v,c&&(c.words[f]=1));for(var M=f-1;M>=0;M--){var O=(p.words[h.length+M]|0)*67108864+(p.words[h.length+M-1]|0);for(O=Math.min(O/S|0,67108863),p._ishlnsubmul(h,O,M);p.negative!==0;)O--,p.negative=0,p._ishlnsubmul(h,1,M),p.isZero()||(p.negative^=1);c&&(c.words[M]=O)}return c&&c._strip(),p._strip(),u!=="div"&&m!==0&&p.iushrn(m),{div:c||null,mod:p}},o.prototype.divmod=function(r,u,m){if(t(!r.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var p,h,S;return this.negative!==0&&r.negative===0?(S=this.neg().divmod(r,u),u!=="mod"&&(p=S.div.neg()),u!=="div"&&(h=S.mod.neg(),m&&h.negative!==0&&h.iadd(r)),{div:p,mod:h}):this.negative===0&&r.negative!==0?(S=this.divmod(r.neg(),u),u!=="mod"&&(p=S.div.neg()),{div:p,mod:S.mod}):(this.negative&r.negative)!==0?(S=this.neg().divmod(r.neg(),u),u!=="div"&&(h=S.mod.neg(),m&&h.negative!==0&&h.isub(r)),{div:S.div,mod:h}):r.length>this.length||this.cmp(r)<0?{div:new o(0),mod:this}:r.length===1?u==="div"?{div:this.divn(r.words[0]),mod:null}:u==="mod"?{div:null,mod:new o(this.modrn(r.words[0]))}:{div:this.divn(r.words[0]),mod:new o(this.modrn(r.words[0]))}:this._wordDiv(r,u)},o.prototype.div=function(r){return this.divmod(r,"div",!1).div},o.prototype.mod=function(r){return this.divmod(r,"mod",!1).mod},o.prototype.umod=function(r){return this.divmod(r,"mod",!0).mod},o.prototype.divRound=function(r){var u=this.divmod(r);if(u.mod.isZero())return u.div;var m=u.div.negative!==0?u.mod.isub(r):u.mod,p=r.ushrn(1),h=r.andln(1),S=m.cmp(p);return S<0||h===1&&S===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},o.prototype.modrn=function(r){var u=r<0;u&&(r=-r),t(r<=67108863);for(var m=(1<<26)%r,p=0,h=this.length-1;h>=0;h--)p=(m*p+(this.words[h]|0))%r;return u?-p:p},o.prototype.modn=function(r){return this.modrn(r)},o.prototype.idivn=function(r){var u=r<0;u&&(r=-r),t(r<=67108863);for(var m=0,p=this.length-1;p>=0;p--){var h=(this.words[p]|0)+m*67108864;this.words[p]=h/r|0,m=h%r}return this._strip(),u?this.ineg():this},o.prototype.divn=function(r){return this.clone().idivn(r)},o.prototype.egcd=function(r){t(r.negative===0),t(!r.isZero());var u=this,m=r.clone();u.negative!==0?u=u.umod(r):u=u.clone();for(var p=new o(1),h=new o(0),S=new o(0),I=new o(1),f=0;u.isEven()&&m.isEven();)u.iushrn(1),m.iushrn(1),++f;for(var c=m.clone(),g=u.clone();!u.isZero();){for(var v=0,M=1;(u.words[0]&M)===0&&v<26;++v,M<<=1);if(v>0)for(u.iushrn(v);v-- >0;)(p.isOdd()||h.isOdd())&&(p.iadd(c),h.isub(g)),p.iushrn(1),h.iushrn(1);for(var O=0,B=1;(m.words[0]&B)===0&&O<26;++O,B<<=1);if(O>0)for(m.iushrn(O);O-- >0;)(S.isOdd()||I.isOdd())&&(S.iadd(c),I.isub(g)),S.iushrn(1),I.iushrn(1);u.cmp(m)>=0?(u.isub(m),p.isub(S),h.isub(I)):(m.isub(u),S.isub(p),I.isub(h))}return{a:S,b:I,gcd:m.iushln(f)}},o.prototype._invmp=function(r){t(r.negative===0),t(!r.isZero());var u=this,m=r.clone();u.negative!==0?u=u.umod(r):u=u.clone();for(var p=new o(1),h=new o(0),S=m.clone();u.cmpn(1)>0&&m.cmpn(1)>0;){for(var I=0,f=1;(u.words[0]&f)===0&&I<26;++I,f<<=1);if(I>0)for(u.iushrn(I);I-- >0;)p.isOdd()&&p.iadd(S),p.iushrn(1);for(var c=0,g=1;(m.words[0]&g)===0&&c<26;++c,g<<=1);if(c>0)for(m.iushrn(c);c-- >0;)h.isOdd()&&h.iadd(S),h.iushrn(1);u.cmp(m)>=0?(u.isub(m),p.isub(h)):(m.isub(u),h.isub(p))}var v;return u.cmpn(1)===0?v=p:v=h,v.cmpn(0)<0&&v.iadd(r),v},o.prototype.gcd=function(r){if(this.isZero())return r.abs();if(r.isZero())return this.abs();var u=this.clone(),m=r.clone();u.negative=0,m.negative=0;for(var p=0;u.isEven()&&m.isEven();p++)u.iushrn(1),m.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;m.isEven();)m.iushrn(1);var h=u.cmp(m);if(h<0){var S=u;u=m,m=S}else if(h===0||m.cmpn(1)===0)break;u.isub(m)}while(!0);return m.iushln(p)},o.prototype.invm=function(r){return this.egcd(r).a.umod(r)},o.prototype.isEven=function(){return(this.words[0]&1)===0},o.prototype.isOdd=function(){return(this.words[0]&1)===1},o.prototype.andln=function(r){return this.words[0]&r},o.prototype.bincn=function(r){t(typeof r=="number");var u=r%26,m=(r-u)/26,p=1<<u;if(this.length<=m)return this._expand(m+1),this.words[m]|=p,this;for(var h=p,S=m;h!==0&&S<this.length;S++){var I=this.words[S]|0;I+=h,h=I>>>26,I&=67108863,this.words[S]=I}return h!==0&&(this.words[S]=h,this.length++),this},o.prototype.isZero=function(){return this.length===1&&this.words[0]===0},o.prototype.cmpn=function(r){var u=r<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this._strip();var m;if(this.length>1)m=1;else{u&&(r=-r),t(r<=67108863,"Number is too big");var p=this.words[0]|0;m=p===r?0:p<r?-1:1}return this.negative!==0?-m|0:m},o.prototype.cmp=function(r){if(this.negative!==0&&r.negative===0)return-1;if(this.negative===0&&r.negative!==0)return 1;var u=this.ucmp(r);return this.negative!==0?-u|0:u},o.prototype.ucmp=function(r){if(this.length>r.length)return 1;if(this.length<r.length)return-1;for(var u=0,m=this.length-1;m>=0;m--){var p=this.words[m]|0,h=r.words[m]|0;if(p!==h){p<h?u=-1:p>h&&(u=1);break}}return u},o.prototype.gtn=function(r){return this.cmpn(r)===1},o.prototype.gt=function(r){return this.cmp(r)===1},o.prototype.gten=function(r){return this.cmpn(r)>=0},o.prototype.gte=function(r){return this.cmp(r)>=0},o.prototype.ltn=function(r){return this.cmpn(r)===-1},o.prototype.lt=function(r){return this.cmp(r)===-1},o.prototype.lten=function(r){return this.cmpn(r)<=0},o.prototype.lte=function(r){return this.cmp(r)<=0},o.prototype.eqn=function(r){return this.cmpn(r)===0},o.prototype.eq=function(r){return this.cmp(r)===0},o.red=function(r){return new V(r)},o.prototype.toRed=function(r){return t(!this.red,"Already a number in reduction context"),t(this.negative===0,"red works only with positives"),r.convertTo(this)._forceRed(r)},o.prototype.fromRed=function(){return t(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(r){return this.red=r,this},o.prototype.forceRed=function(r){return t(!this.red,"Already a number in reduction context"),this._forceRed(r)},o.prototype.redAdd=function(r){return t(this.red,"redAdd works only with red numbers"),this.red.add(this,r)},o.prototype.redIAdd=function(r){return t(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,r)},o.prototype.redSub=function(r){return t(this.red,"redSub works only with red numbers"),this.red.sub(this,r)},o.prototype.redISub=function(r){return t(this.red,"redISub works only with red numbers"),this.red.isub(this,r)},o.prototype.redShl=function(r){return t(this.red,"redShl works only with red numbers"),this.red.shl(this,r)},o.prototype.redMul=function(r){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,r),this.red.mul(this,r)},o.prototype.redIMul=function(r){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,r),this.red.imul(this,r)},o.prototype.redSqr=function(){return t(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return t(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return t(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return t(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return t(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(r){return t(this.red&&!r.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,r)};var mn={k256:null,p224:null,p192:null,p25519:null};function _t(y,r){this.name=y,this.p=new o(r,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}_t.prototype._tmp=function(){var r=new o(null);return r.words=new Array(Math.ceil(this.n/13)),r},_t.prototype.ireduce=function(r){var u=r,m;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),m=u.bitLength();while(m>this.n);var p=m<this.n?-1:u.ucmp(this.p);return p===0?(u.words[0]=0,u.length=1):p>0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},_t.prototype.split=function(r,u){r.iushrn(this.n,0,u)},_t.prototype.imulK=function(r){return r.imul(this.k)};function Kn(){_t.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Kn,_t),Kn.prototype.split=function(r,u){for(var m=4194303,p=Math.min(r.length,9),h=0;h<p;h++)u.words[h]=r.words[h];if(u.length=p,r.length<=9){r.words[0]=0,r.length=1;return}var S=r.words[9];for(u.words[u.length++]=S&m,h=10;h<r.length;h++){var I=r.words[h]|0;r.words[h-10]=(I&m)<<4|S>>>22,S=I}S>>>=22,r.words[h-10]=S,S===0&&r.length>10?r.length-=10:r.length-=9},Kn.prototype.imulK=function(r){r.words[r.length]=0,r.words[r.length+1]=0,r.length+=2;for(var u=0,m=0;m<r.length;m++){var p=r.words[m]|0;u+=p*977,r.words[m]=u&67108863,u=p*64+(u/67108864|0)}return r.words[r.length-1]===0&&(r.length--,r.words[r.length-1]===0&&r.length--),r};function Vs(){_t.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(Vs,_t);function Hs(){_t.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(Hs,_t);function Mr(){_t.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(Mr,_t),Mr.prototype.imulK=function(r){for(var u=0,m=0;m<r.length;m++){var p=(r.words[m]|0)*19+u,h=p&67108863;p>>>=26,r.words[m]=h,u=p}return u!==0&&(r.words[r.length++]=u),r},o._prime=function(r){if(mn[r])return mn[r];var u;if(r==="k256")u=new Kn;else if(r==="p224")u=new Vs;else if(r==="p192")u=new Hs;else if(r==="p25519")u=new Mr;else throw new Error("Unknown prime "+r);return mn[r]=u,u};function V(y){if(typeof y=="string"){var r=o._prime(y);this.m=r.p,this.prime=r}else t(y.gtn(1),"modulus must be greater than 1"),this.m=y,this.prime=null}V.prototype._verify1=function(r){t(r.negative===0,"red works only with positives"),t(r.red,"red works only with red numbers")},V.prototype._verify2=function(r,u){t((r.negative|u.negative)===0,"red works only with positives"),t(r.red&&r.red===u.red,"red works only with red numbers")},V.prototype.imod=function(r){return this.prime?this.prime.ireduce(r)._forceRed(this):(b(r,r.umod(this.m)._forceRed(this)),r)},V.prototype.neg=function(r){return r.isZero()?r.clone():this.m.sub(r)._forceRed(this)},V.prototype.add=function(r,u){this._verify2(r,u);var m=r.add(u);return m.cmp(this.m)>=0&&m.isub(this.m),m._forceRed(this)},V.prototype.iadd=function(r,u){this._verify2(r,u);var m=r.iadd(u);return m.cmp(this.m)>=0&&m.isub(this.m),m},V.prototype.sub=function(r,u){this._verify2(r,u);var m=r.sub(u);return m.cmpn(0)<0&&m.iadd(this.m),m._forceRed(this)},V.prototype.isub=function(r,u){this._verify2(r,u);var m=r.isub(u);return m.cmpn(0)<0&&m.iadd(this.m),m},V.prototype.shl=function(r,u){return this._verify1(r),this.imod(r.ushln(u))},V.prototype.imul=function(r,u){return this._verify2(r,u),this.imod(r.imul(u))},V.prototype.mul=function(r,u){return this._verify2(r,u),this.imod(r.mul(u))},V.prototype.isqr=function(r){return this.imul(r,r.clone())},V.prototype.sqr=function(r){return this.mul(r,r)},V.prototype.sqrt=function(r){if(r.isZero())return r.clone();var u=this.m.andln(3);if(t(u%2===1),u===3){var m=this.m.add(new o(1)).iushrn(2);return this.pow(r,m)}for(var p=this.m.subn(1),h=0;!p.isZero()&&p.andln(1)===0;)h++,p.iushrn(1);t(!p.isZero());var S=new o(1).toRed(this),I=S.redNeg(),f=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);this.pow(c,f).cmp(I)!==0;)c.redIAdd(I);for(var g=this.pow(c,p),v=this.pow(r,p.addn(1).iushrn(1)),M=this.pow(r,p),O=h;M.cmp(S)!==0;){for(var B=M,W=0;B.cmp(S)!==0;W++)B=B.redSqr();t(W<O);var j=this.pow(g,new o(1).iushln(O-W-1));v=v.redMul(j),g=j.redSqr(),M=M.redMul(g),O=W}return v},V.prototype.invm=function(r){var u=r._invmp(this.m);return u.negative!==0?(u.negative=0,this.imod(u).redNeg()):this.imod(u)},V.prototype.pow=function(r,u){if(u.isZero())return new o(1).toRed(this);if(u.cmpn(1)===0)return r.clone();var m=4,p=new Array(1<<m);p[0]=new o(1).toRed(this),p[1]=r;for(var h=2;h<p.length;h++)p[h]=this.mul(p[h-1],r);var S=p[0],I=0,f=0,c=u.bitLength()%26;for(c===0&&(c=26),h=u.length-1;h>=0;h--){for(var g=u.words[h],v=c-1;v>=0;v--){var M=g>>v&1;if(S!==p[0]&&(S=this.sqr(S)),M===0&&I===0){f=0;continue}I<<=1,I|=M,f++,!(f!==m&&(h!==0||v!==0))&&(S=this.mul(S,p[I]),f=0,I=0)}c=26}return S},V.prototype.convertTo=function(r){var u=r.umod(this.m);return u===r?u.clone():u},V.prototype.convertFrom=function(r){var u=r.clone();return u.red=null,u},o.mont=function(r){return new Pe(r)};function Pe(y){V.call(this,y),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(Pe,V),Pe.prototype.convertTo=function(r){return this.imod(r.ushln(this.shift))},Pe.prototype.convertFrom=function(r){var u=this.imod(r.mul(this.rinv));return u.red=null,u},Pe.prototype.imul=function(r,u){if(r.isZero()||u.isZero())return r.words[0]=0,r.length=1,r;var m=r.imul(u),p=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=m.isub(p).iushrn(this.shift),S=h;return h.cmp(this.m)>=0?S=h.isub(this.m):h.cmpn(0)<0&&(S=h.iadd(this.m)),S._forceRed(this)},Pe.prototype.mul=function(r,u){if(r.isZero()||u.isZero())return new o(0)._forceRed(this);var m=r.mul(u),p=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=m.isub(p).iushrn(this.shift),S=h;return h.cmp(this.m)>=0?S=h.isub(this.m):h.cmpn(0)<0&&(S=h.iadd(this.m)),S._forceRed(this)},Pe.prototype.invm=function(r){var u=this.imod(r._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(typeof qs>"u"||qs,hp)});var gf={};Gr(gf,{appHelpers:()=>hf});module.exports=id(gf);var yc=require("@msafe/sui3-utils");var ae=require("@alphafi/alphafi-sdk"),Fe=require("@msafe/sui3-utils"),Jt=require("@mysten/bcs");var Vn=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isClaimRewardTransaction())return this.decodeClaimReward();let e=this.getLiquidityChangeEvent();if(!e)throw new Error("No liquidity change event found. Unable to decode transaction.");let t=e.parsedJson,n=t.pool_id,o=ae.poolIdPoolNameMap[n];if(console.log("Decoder event data - ",t),console.log("Decoder poolName - ",o),this.isWithdrawAlphaEvent(e))return this.decodeWithdrawAlpha(t);if(this.isWithdrawEvent(t))return this.decodeWithdraw(o);if(this.isDoubleAssetDepositEvent(t,o))return this.decodeDoubleAssetDeposit(o,t);if(this.isSingleAssetDepositEvent(t,o))return this.decodeSingleAssetDeposit(o,t);throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}get inputs(){return this.transaction.getData().inputs}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}getLiquidityChangeEvent(){return this.simResult.events.find(e=>this.isLiquidityChangeEventType(e.type))}isClaimRewardTransaction(){return!!this.getMoveCallCommand("get_user_rewards_all")}isLiquidityChangeEventType(e){return e.includes("LiquidityChangeEvent")||e.includes("LiquidityChangeNewNewEvent")||e.includes("WithdrawEventV2")}isWithdrawAlphaEvent(e){return e.type.includes("WithdrawEventV2")}isWithdrawEvent(e){return e.event_type===1}isDoubleAssetDepositEvent(e,t){return e.event_type===0&&ae.poolInfo[t].assetTypes.length===2}isSingleAssetDepositEvent(e,t){return e.event_type===0&&ae.poolInfo[t].assetTypes.length===1}extractXTokensAmount(){let e=this.inputs.find(o=>o.Pure!==void 0);if(!e||!e.Pure?.bytes)throw new Error("Unable to extract xTokensAmount from inputs");let{bytes:t}=e.Pure,n;return t.length===12?n=Jt.bcs.u64().parse((0,Jt.fromBase64)(t)):t.length===24?n=Jt.bcs.u128().parse((0,Jt.fromBase64)(t)):t.length===44?n=Jt.bcs.u256().parse((0,Jt.fromBase64)(t)):n=Jt.bcs.u64().parse((0,Jt.fromBase64)(t)),n}decodeDoubleAssetDeposit(e,t){let{amount_a:n,amount_b:o}=t,a=Number(n)>0;return console.log("Decoder.decodeDoubleAssetDeposit",n,o,a),{txType:Fe.TransactionType.Other,type:"depositDoubleAsset",intentionData:{poolName:e,amount:a?n:o,isAmountA:a}}}decodeSingleAssetDeposit(e,t){let{amount:n}=t;if(console.log("Decoder.decodeSingleAssetDeposit",n),this.getLiquidityChangeEvent().type.includes(":alphafi_navi_pool:")){let{coin:a}=ae.singleAssetPoolCoinMap[e],{expo:s}=ae.coinsList[a];n=Math.floor(Number(n)/10**(9-s)).toString()}return{txType:Fe.TransactionType.Other,type:"depositSingleAsset",intentionData:{poolName:e,amount:n}}}decodeWithdraw(e){let t=this.extractXTokensAmount();return console.log("Decoder.decodeWithdraw",t),{txType:Fe.TransactionType.Other,type:"withdraw",intentionData:{poolName:e,xTokensAmount:t}}}decodeWithdrawAlpha(e){let t=this.extractXTokensAmount(),{amount_withdrawn_from_locked:n}=e;return console.log("Decoder.decodeWithdrawAlpha",t,n),{txType:Fe.TransactionType.Other,type:"withdrawAlpha",intentionData:{withdrawFromLocked:Number(n)>0,xTokensAmount:t}}}decodeClaimReward(){return{txType:Fe.TransactionType.Other,type:"claimReward",intentionData:{}}}};var pc=require("@alphafi/alphafi-sdk");var mc=Ut(require("sort-keys-recursive")),C=class{constructor(e){this.data=e}serialize(){return JSON.stringify((0,mc.default)(this.data))}};var Hn=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t;return await(0,pc.claimRewardTxb)(n.address)}static fromData(t){return new i(t)}};var dc=require("@alphafi/alphafi-sdk");var Xn=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{poolName:o,amount:a,isAmountA:s}=this.data;return await(0,dc.depositDoubleAssetTxb)(o,n.address,a,s)}static fromData(t){return console.log("DepositDoubleAssetIntention.fromData",t),new i(t)}};var fc=require("@alphafi/alphafi-sdk");var zn=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{poolName:o,amount:a}=this.data;return await(0,fc.depositSingleAssetTxb)(o,n.address,a)}static fromData(t){return console.log("DepositSingleAssetIntention.fromData",t),new i(t)}};var hc=require("@alphafi/alphafi-sdk");var Gn=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{poolName:o,xTokensAmount:a}=this.data;return await(0,hc.withdrawTxb)(a,o,n.address)}static fromData(t){return console.log("WithdrawIntention.fromData",t),new i(t)}};var gc=require("@alphafi/alphafi-sdk");var Qn=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{withdrawFromLocked:o,xTokensAmount:a}=this.data;return await(0,gc.withdrawAlphaTxb)(a,o,n.address)}static fromData(t){return console.log("WithdrawAlphaIntention.fromData",t),new i(t)}};var Jn=class{application="alphafi";supportSDK="@mysten/sui";async deserialize(e){let{transaction:t,suiClient:n,account:o}=e,a=await n.devInspectTransactionBlock({sender:t.getData().sender,transactionBlock:t});console.log("AlphaFiHelper Sim result - ",a);let l=new Vn(t,a).decode();return{txType:yc.TransactionType.Other,txSubType:l.type,intentionData:l.intentionData}}async build(e){let{account:t}=e;console.log("AlphaFi build transaction type",e.txSubType);let n;switch(e.txSubType){case"depositSingleAsset":n=zn.fromData(e.intentionData);break;case"depositDoubleAsset":n=Xn.fromData(e.intentionData);break;case"withdraw":n=Gn.fromData(e.intentionData);break;case"withdrawAlpha":n=Qn.fromData(e.intentionData);break;case"claimReward":n=Hn.fromData(e.intentionData);break;default:throw new Error("not implemented")}return n.build({account:t})}};var Fc=require("@msafe/sui3-utils");var Lt=require("@msafe/sui3-utils"),Yn=require("@mysten/sui/bcs"),Zn=require("bucket-protocol-sdk");var to=class{constructor(e){this.transaction=e}decode(){if(this.isSBUCKDepositTransaction())return this.decodeSBUCKDeposit();if(this.isSBUCKUnstakeTransaction())return this.decodeSBUCKUnstake();if(this.isSBUCKWithdrawTransaction())return this.decodeSBUCKWithdraw();if(this.isSBUCKClaimTransaction())return this.decodeSBUCKClaim();if(this.isLockedClaimTransaction())return this.decodeLockedClaim();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayTransaction())return this.decodeRepay();if(this.isWithdrawTransaction())return this.decodeWithdraw();if(this.isCloseTransaction())return this.decodeClose();if(this.isTankDepositTransaction())return this.decodeTankDeposit();if(this.isTankWithdrawTransaction())return this.decodeTankWithdraw();if(this.isTankClaimTransaction())return this.decodeTankClaim();if(this.isPsmTransaction())return this.decodePsm();throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}get inputs(){return this.transaction.getData().inputs}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}getMoveCallModuleCommand(e,t){return this.commands.find(n=>n.$kind==="MoveCall"&&n.MoveCall.module===e&&n.MoveCall.function===t)}getMoveCallPackageModuleCommand(e,t,n){return this.commands.find(o=>o.$kind==="MoveCall"&&o.MoveCall.package===e&&o.MoveCall.module===t&&o.MoveCall.function===n)}getMoveCallModuleCommands(e,t){return this.commands.filter(n=>n.$kind==="MoveCall"&&n.MoveCall.module===e&&n.MoveCall.function===t)}getSplitCoinsCommands(){return this.commands.filter(e=>e.$kind==="SplitCoins")}getTransferCommands(){return this.commands.filter(e=>e.$kind==="TransferObjects")}isPsmTransaction(){return!!this.getMoveCallCommand("charge_reservoir")||!!this.getMoveCallCommand("discharge_reservoir")}isStrapNewTransaction(){return!!this.getMoveCallModuleCommand("strap","new")}isBorrowTransaction(){return!!this.getMoveCallModuleCommand("bucket_operations","high_top_up")||!!this.getMoveCallModuleCommand("bucket_operations","high_borrow")||!!this.getMoveCallModuleCommand("bucket_operations","high_borrow_with_strap")}isRepayTransaction(){return!!this.getMoveCallModuleCommand("bucket_operations","fully_repay")||!!this.getMoveCallModuleCommand("bucket_operations","fully_repay_with_strap")||!!this.getMoveCallModuleCommand("bucket_operations","repay_and_withdraw")||!!this.getMoveCallModuleCommand("bucket_operations","repay_and_withdraw_with_strap")}isWithdrawTransaction(){return!!this.getMoveCallModuleCommand("buck","withdraw")||!!this.getMoveCallModuleCommand("buck","withdraw_with_strap")}isCloseTransaction(){return!!this.getMoveCallModuleCommand("bucket_operations","destroy_empty_strap")}isTankDepositTransaction(){return!!this.getMoveCallModuleCommand("tank_operations","deposit")}isTankWithdrawTransaction(){return!!this.getMoveCallModuleCommand("tank_operations","withdraw")}isTankClaimTransaction(){return!!this.getMoveCallModuleCommand("tank_operations","claim")}isSBUCKDepositTransaction(){return!!this.getMoveCallModuleCommand("buck","buck_to_sbuck")}isSBUCKWithdrawTransaction(){return!!this.getMoveCallModuleCommand("buck","sbuck_to_buck")}isSBUCKStakeTransaction(){return!!this.getMoveCallPackageModuleCommand(Zn.SBUCK_FOUNTAIN_PACKAGE_ID,"fountain_core","stake")}isSBUCKUnstakeTransaction(){return!!this.getMoveCallPackageModuleCommand(Zn.SBUCK_FOUNTAIN_PACKAGE_ID,"fountain_core","force_unstake")}isSBUCKClaimTransaction(){return!!this.getMoveCallPackageModuleCommand(Zn.SBUCK_FOUNTAIN_PACKAGE_ID,"fountain_core","claim")}isLockedClaimTransaction(){return!!this.getMoveCallModuleCommand("proof_rule","claim")||!!this.getMoveCallModuleCommand("lst_proof_rule","claim")}isLstUnlockTransaction(){return!!this.getMoveCallModuleCommand("lst_proof_rule","unlock")}decodePsm(){let e,t,n="0",o=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];return o.$kind==="Input"&&(n=this.getPureInputU64(o.Input)),this.getMoveCallCommand("charge_reservoir")?([e]=this.getMoveCallCommand("charge_reservoir").MoveCall.typeArguments,t=!1):([e]=this.getMoveCallCommand("discharge_reservoir").MoveCall.typeArguments,t=!0),console.log("Decoder.decodePsm",e,n,t),{txType:Lt.TransactionType.Other,type:"psm",intentionData:{coinType:e,amount:n,buckToCoin:t}}}decodeBorrow(){let e="",t="0",n,o=this.getStrapId(),a="0",s=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];if(s.$kind==="Input"&&(a=this.getPureInputU64(s.Input)),this.getMoveCallCommand("high_top_up")){let l=this.getMoveCallCommand("high_top_up").MoveCall;[e]=l.typeArguments;let d=l.arguments[1];d.$kind==="Input"&&(t=this.getPureInputU64(d.Input));let b=l.arguments[3];if(b.$kind==="Input"){let T=this.getPureAddresses(b.Input);T.length===1&&([n]=T)}}else if(this.getMoveCallCommand("high_borrow")){let l=this.getMoveCallCommand("high_borrow").MoveCall;[e]=l.typeArguments;let d=l.arguments[4];d.$kind==="Input"&&(t=this.getPureInputU64(d.Input));let b=l.arguments[5];if(b.$kind==="Input"){let T=this.getPureAddresses(b.Input);T.length===1&&([n]=T)}}else if(this.getMoveCallCommand("high_borrow_with_strap")){let l=this.getMoveCallCommand("high_borrow_with_strap").MoveCall;[e]=l.typeArguments;let d=l.arguments[5];d.$kind==="Input"&&(t=this.getPureInputU64(d.Input));let b=l.arguments[6];if(b.$kind==="Input"){let T=this.getPureAddresses(b.Input);T.length===1&&([n]=T)}}return{txType:Lt.TransactionType.Other,type:"borrow",intentionData:{collateralType:e,collateralAmount:a,borrowAmount:t,insertionPlace:n,strapId:o}}}decodeRepay(){let e="",t="0",n="0",a,s=this.getStrapId();if(this.getMoveCallCommand("fully_repay"))[e]=this.getMoveCallCommand("fully_repay").MoveCall.typeArguments;else if(this.getMoveCallCommand("fully_repay_with_strap"))[e]=this.getMoveCallCommand("fully_repay_with_strap").MoveCall.typeArguments;else if(this.getMoveCallCommand("repay_and_withdraw")){let l=this.getMoveCallCommand("repay_and_withdraw").MoveCall;[e]=l.typeArguments;let d=l.arguments[4];d.$kind==="Input"&&(n=this.getPureInputU64(d.Input));let b=l.arguments[5];if(b.$kind==="Input"){let w=this.getPureAddresses(b.Input);w.length===1&&([a]=w)}let T=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];T.$kind==="Input"&&(t=this.getPureInputU64(T.Input))}else if(this.getMoveCallCommand("repay_and_withdraw_with_strap")){let l=this.getMoveCallCommand("repay_and_withdraw_with_strap").MoveCall;[e]=l.typeArguments;let d=l.arguments[5];d.$kind==="Input"&&(n=this.getPureInputU64(d.Input));let b=l.arguments[6];if(b.$kind==="Input"){let w=this.getPureAddresses(b.Input);w.length===1&&([a]=w)}let T=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];T.$kind==="Input"&&(t=this.getPureInputU64(T.Input))}return{txType:Lt.TransactionType.Other,type:"repay",intentionData:{collateralType:e,repayAmount:t,withdrawAmount:n,isSurplus:!1,insertionPlace:a,strapId:s}}}decodeWithdraw(){let e="",t="0",n,o=this.getStrapId();if(this.getMoveCallCommand("withdraw_with_strap")){let a=this.getMoveCallCommand("withdraw_with_strap").MoveCall;[e]=a.typeArguments;let s=a.arguments[4];s.$kind==="Input"&&(t=this.getPureInputU64(s.Input));let l=a.arguments[5];if(l.$kind==="Input"){let d=this.getPureAddresses(l.Input);d.length===1&&([n]=d)}}else if(this.getMoveCallCommand("withdraw")){let a=this.getMoveCallCommand("withdraw").MoveCall;[e]=a.typeArguments;let s=a.arguments[3];s.$kind==="Input"&&(t=this.getPureInputU64(s.Input));let l=a.arguments[4];if(l.$kind==="Input"){let d=this.getPureAddresses(l.Input);d.length===1&&([n]=d)}}return{txType:Lt.TransactionType.Other,type:"withdraw",intentionData:{collateralType:e,withdrawAmount:t,insertionPlace:n,strapId:o}}}decodeClose(){let e="",t=this.getStrapId();return this.getMoveCallCommand("destroy_empty_strap")&&([e]=this.getMoveCallCommand("destroy_empty_strap").MoveCall.typeArguments),{txType:Lt.TransactionType.Other,type:"close",intentionData:{collateralType:e,strapId:t}}}decodeSBUCKDeposit(){let t=this.getMoveCallCommand("into_balance").MoveCall.typeArguments[0],n="0",a=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];a.$kind==="Input"&&(n=this.getPureInputU64(a.Input));let s=this.isSBUCKStakeTransaction();return console.log("Decoder.decodeSBUCKDeposit",t,n,s),{txType:Lt.TransactionType.Other,type:"sbuck-deposit",intentionData:{coinType:t,amount:n,isStake:s}}}decodeSBUCKUnstake(){let e="0",t=this.isSBUCKStakeTransaction();if(t){let d=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];d.$kind==="Input"&&(e=this.getPureInputU64(d.Input))}let n=[],o=this.getMoveCallModuleCommands("proof_rule","unlock");if(o.length>0)for(let l=0;l<o.length;l++){let d=o[l];n.push("")}else{let l=this.getMoveCallModuleCommands("fountain_core","force_unstake");for(let d=0;d<l.length;d++){let T=l[d].MoveCall.arguments[2];if(T.$kind==="Input"){let{objectId:w}=this.inputs[T.Input].UnresolvedObject;n.push(w)}}}let a=this.isSBUCKWithdrawTransaction(),s={stakeProofs:n,amount:e,isStake:t,toBuck:a};return console.log("Decoder.decodeSBUCKUnstake",s),{txType:Lt.TransactionType.Other,type:"sbuck-unstake",intentionData:s}}decodeSBUCKWithdraw(){let e="0",n=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];return n.$kind==="Input"&&(e=this.getPureInputU64(n.Input)),console.log("Decoder.SBUCKWithdraw",e),{txType:Lt.TransactionType.Other,type:"sbuck-withdraw",intentionData:{amount:e}}}decodeSBUCKClaim(){let e=[],t=this.getMoveCallModuleCommands("fountain_core","claim");for(let n=0;n<t.length;n++){let a=t[n].MoveCall.arguments[2];if(a.$kind==="Input"){let{objectId:s}=this.inputs[a.Input].UnresolvedObject;e.push(s)}}return console.log("Decoder.decodeSBUCKClaim",e),{txType:Lt.TransactionType.Other,type:"sbuck-claim",intentionData:{stakeProofs:e}}}decodeTankDeposit(){let e="0",n=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];n.$kind==="Input"&&(e=this.getPureInputU64(n.Input));let a=this.getMoveCallModuleCommand("tank_operations","deposit").MoveCall.typeArguments[0];return console.log("Decoder.decodeTankDeposit",a,e),{txType:Lt.TransactionType.Other,type:"tank-deposit",intentionData:{coinType:a,amount:e}}}decodeTankWithdraw(){let e=this.getMoveCallModuleCommand("tank_operations","withdraw").MoveCall,t=e.typeArguments[0],n="0",o=e.arguments[5];return o.$kind==="Input"&&(n=this.getPureInputU64(o.Input)),console.log("Decoder.decodeTankWithdraw",t,n),{txType:Lt.TransactionType.Other,type:"tank-withdraw",intentionData:{coinType:t,amount:n}}}decodeTankClaim(){let t=this.getMoveCallModuleCommand("tank_operations","claim").MoveCall.typeArguments[0];return console.log("Decoder.decodeTankClaim",t),{txType:Lt.TransactionType.Other,type:"tank-claim",intentionData:{coinType:t}}}decodeLockedClaim(){let e="",t=0,n=this.getMoveCallModuleCommands("proof_rule","claim");for(let a=0;a<n.length;a++)[e]=n[a].MoveCall.typeArguments,t++;let o=this.getMoveCallModuleCommands("lst_proof_rule","claim");for(let a=0;a<o.length;a++)[e]=o[a].MoveCall.typeArguments,t++;return console.log("Decoder.decodeLockedClaim",e,t),{txType:Lt.TransactionType.Other,type:"lock-claim",intentionData:{coinType:e,proofCount:t}}}getCoinInput(e){if(this.inputs[e].$kind!=="Object")throw new Error("not Object argument")}getStrapId(){let e;if(this.isStrapNewTransaction()?e="new":this.isLstUnlockTransaction()&&(e="locked"),!e){let t=this.getMoveCallModuleCommand("fountain","unstake");if(t){let n=t.MoveCall.arguments[2];n.$kind==="Input"&&(e=this.inputs[n.Input].UnresolvedObject.objectId)}}return e}getPureInputU64(e){let t=this.inputs[e];if(t.$kind!=="Pure")throw new Error("not pure argument");return Yn.bcs.U64.fromBase64(t.Pure.bytes)}getPureAddresses(e){let t=this.inputs[e];if(t.$kind!=="Pure")throw new Error("not pure argument");return Yn.bcs.vector(Yn.bcs.Address).fromBase64(t.Pure.bytes)}};var wc=require("@msafe/sui3-utils");var Sc=require("@mysten/sui/transactions"),Tc=require("bucket-protocol-sdk");var bc=require("bucket-protocol-sdk"),Rt=(i,e)=>{let t=i==="sui:mainnet"?"mainnet":"testnet";return new bc.BucketClient(t,e.address)};var Ic=async(i,e,t)=>{let{coinType:n,amount:o,buckToCoin:a}=i,s=new Sc.Transaction,l=Rt(t,e);return await(0,Tc.buildPsmTx)(l,s,n,o,a,e.address),s};var eo=class i extends C{constructor(t){super(t);this.data=t}txType=wc.TransactionType.Other;txSubType="psm";async build(t){let{account:n,network:o}=t;return await Ic(this.data,n,o)}static fromData(t){return new i(t)}};var vc=require("@msafe/sui3-utils");var pn=require("@mysten/sui/transactions"),me=require("bucket-protocol-sdk");var Cc=async(i,e,t)=>{let{collateralType:n,collateralAmount:o,borrowAmount:a,insertionPlace:s,strapId:l}=i,d=new pn.Transaction,b=Rt(t,e);return await(0,me.buildBorrowTx)(b,d,n,o,a,e.address,s,l),d},kc=async(i,e,t)=>{let{collateralType:n,withdrawAmount:o,insertionPlace:a,strapId:s}=i,l=new pn.Transaction,d=Rt(t,e);return await(0,me.buildWithdrawTx)(d,l,n,o,e.address,a,s),l},xc=async(i,e,t)=>{let{collateralType:n,repayAmount:o,withdrawAmount:a,isSurplus:s,insertionPlace:l,strapId:d}=i,b=new pn.Transaction,T=Rt(t,e);return await(0,me.buildRepayTx)(T,b,n,o,a,e.address,s,l,d),b},Dc=async(i,e,t)=>{let{collateralType:n,recipient:o,strapId:a}=i,s=new pn.Transaction,l=Rt(t,e);return await(0,me.buildCloseTx)(l,s,n,o,a),s};var no=class i extends C{constructor(t){super(t);this.data=t}txType=vc.TransactionType.Other;txSubType="borrow";async build(t){let{account:n,network:o}=t;return await Cc(this.data,n,o)}static fromData(t){return new i(t)}};var Ac=require("@msafe/sui3-utils");var oo=class i extends C{constructor(t){super(t);this.data=t}txType=Ac.TransactionType.Other;txSubType="repay";async build(t){let{account:n,network:o}=t;return await xc(this.data,n,o)}static fromData(t){return new i(t)}};var Mc=require("@msafe/sui3-utils");var ao=class i extends C{constructor(t){super(t);this.data=t}txType=Mc.TransactionType.Other;txSubType="withdraw";async build(t){let{account:n,network:o}=t;return await kc(this.data,n,o)}static fromData(t){return new i(t)}};var Oc=require("@msafe/sui3-utils");var io=class i extends C{constructor(t){super(t);this.data=t}txType=Oc.TransactionType.Other;txSubType="close";async build(t){let{account:n,network:o}=t;return await Dc(this.data,n,o)}static fromData(t){return new i(t)}};var fn=require("@msafe/sui3-utils");var dn=require("@mysten/sui/transactions"),pe=require("bucket-protocol-sdk");var Pc=async(i,e,t)=>{let{coinType:n,amount:o,isStake:a}=i,s=new dn.Transaction,l=Rt(t,e);return await(0,pe.buildSBUCKDepositTx)(l,s,n,o,e.address,a),s},Rc=async(i,e,t)=>{let{stakeProofs:n,amount:o,isStake:a,toBuck:s}=i,l=new dn.Transaction,d=Rt(t,e);return await(0,pe.buildSBUCKUnstakeTx)(d,l,n,o,e.address,a,s),l},Bc=async(i,e,t)=>{let{amount:n}=i,o=new dn.Transaction,a=Rt(t,e);return await(0,pe.buildSBUCKWithdrawTx)(a,o,n,e.address),o},Ec=async(i,e,t)=>{let{stakeProofs:n}=i,o=new dn.Transaction,a=Rt(t,e);return await(0,pe.buildSBUCKClaimTx)(a,o,n,e.address),o};var ro=class i extends C{constructor(t){super(t);this.data=t}txType=fn.TransactionType.Other;txSubType="sbuck-deposit";async build(t){let{account:n,network:o}=t;return await Pc(this.data,n,o)}static fromData(t){return new i(t)}},so=class i extends C{constructor(t){super(t);this.data=t}txType=fn.TransactionType.Other;txSubType="sbuck-unstake";async build(t){let{account:n,network:o}=t;return await Rc(this.data,n,o)}static fromData(t){return new i(t)}},co=class i extends C{constructor(t){super(t);this.data=t}txType=fn.TransactionType.Other;txSubType="sbuck-withdraw";async build(t){let{account:n,network:o}=t;return await Bc(this.data,n,o)}static fromData(t){return new i(t)}},lo=class i extends C{constructor(t){super(t);this.data=t}txType=fn.TransactionType.Other;txSubType="sbuck-claim";async build(t){let{account:n,network:o}=t;return await Ec(this.data,n,o)}static fromData(t){return new i(t)}};var ho=require("@msafe/sui3-utils");var uo=require("@mysten/sui/transactions"),Ke=require("bucket-protocol-sdk");var Nc=async(i,e,t)=>{let{coinType:n,amount:o}=i,a=new uo.Transaction,s=Rt(t,e);return await(0,Ke.buildTankDepositTx)(s,a,n,o,e.address),a},Wc=async(i,e,t)=>{let{coinType:n,amount:o}=i,a=new uo.Transaction,s=Rt(t,e);return await(0,Ke.buildTankWithdrawTx)(s,a,n,o,e.address),a},_c=async(i,e,t)=>{let{coinType:n}=i,o=new uo.Transaction,a=Rt(t,e);return await(0,Ke.buildTankClaimTx)(a,o,n,e.address),o};var Lc=require("@mysten/sui/transactions"),jc=require("bucket-protocol-sdk");var Uc=async(i,e,t)=>{let{coinType:n,proofCount:o}=i,a=new Lc.Transaction,s=Rt(t,e);return await(0,jc.buildLockedClaimTx)(s,a,n,o,e.address),a};var mo=class i extends C{constructor(t){super(t);this.data=t}txType=ho.TransactionType.Other;txSubType="tank-deposit";async build(t){let{account:n,network:o}=t;return await Nc(this.data,n,o)}static fromData(t){return new i(t)}},po=class i extends C{constructor(t){super(t);this.data=t}txType=ho.TransactionType.Other;txSubType="tank-withdraw";async build(t){let{account:n,network:o}=t;return await Wc(this.data,n,o)}static fromData(t){return new i(t)}},fo=class i extends C{constructor(t){super(t);this.data=t}txType=ho.TransactionType.Other;txSubType="tank-claim";async build(t){let{account:n,network:o}=t;return await _c(this.data,n,o)}static fromData(t){return new i(t)}};var qc=require("@msafe/sui3-utils");var go=class i extends C{constructor(t){super(t);this.data=t}txType=qc.TransactionType.Other;txSubType="lock-claim";async build(t){let{account:n,network:o}=t;return await Uc(this.data,n,o)}static fromData(t){return new i(t)}};var yo=class{application="bucket";supportSDK="@mysten/sui";async deserialize(e){console.log("Bucket helper deserialize input: ",e);let{transaction:t}=e,o=new to(t).decode();return{txType:Fc.TransactionType.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n,network:o}=e,a;switch(e.txSubType){case"psm":a=eo.fromData(e.intentionData);break;case"borrow":a=no.fromData(e.intentionData);break;case"withdraw":a=ao.fromData(e.intentionData);break;case"repay":a=oo.fromData(e.intentionData);break;case"close":a=io.fromData(e.intentionData);break;case"tank-deposit":a=mo.fromData(e.intentionData);break;case"tank-withdraw":a=po.fromData(e.intentionData);break;case"tank-claim":a=fo.fromData(e.intentionData);break;case"sbuck-deposit":a=ro.fromData(e.intentionData);break;case"sbuck-unstake":a=so.fromData(e.intentionData);break;case"sbuck-withdraw":a=co.fromData(e.intentionData);break;case"sbuck-claim":a=lo.fromData(e.intentionData);break;case"lock-claim":a=go.fromData(e.intentionData);break;default:throw new Error("not implemented")}return a.build({suiClient:t,account:n,network:o})}};var Gl=require("@msafe/sui3-utils");var tl=require("@msafe/sui3-utils");var bo=require("@cetusprotocol/aggregator-sdk"),Kc=require("@cetusprotocol/farms-sdk"),$c=require("@cetusprotocol/sui-clmm-sdk"),Vc=require("@cetusprotocol/vaults-sdk"),Hc=require("@cetusprotocol/xcetus-sdk"),Re=require("@mysten/sui/client"),Yt=(i,e)=>{let t=$c.CetusClmmSDK.createSDK({env:"mainnet",sui_client:new Re.SuiClient({url:(0,Re.getFullnodeUrl)("mainnet")})});return t.setSenderAddress(e.address),t},qt=(i,e)=>{let t=Kc.CetusFarmsSDK.createSDK({env:"mainnet",sui_client:new Re.SuiClient({url:(0,Re.getFullnodeUrl)("mainnet")})});return t.setSenderAddress(e.address),t},sd="https://api-sui.cetus.zone/router_v2/find_routes",Xc=(i,e)=>{let t=new Re.SuiClient({url:"https://fullnode.mainnet.sui.io/"});return new bo.AggregatorClient({endpoint:sd,signer:e.address,client:t,env:bo.Env.Mainnet})},hn=(i,e)=>{let t=Vc.CetusVaultsSDK.createSDK({env:"mainnet"});return t.setSenderAddress(e.address),t},$e=(i,e)=>{let t=Hc.CetusXcetusSDK.createSDK({env:"mainnet"});return t.setSenderAddress(e.address),t};var zc=async(i,e,t)=>await Yt(t,e).Pool.createPoolPayload(i),Gc=async(i,e,t)=>await Yt(t,e).Position.createAddLiquidityFixTokenPayload(i?.parameter,i?.gasEstimateArg),Qc=async(i,e,t)=>await Yt(t,e).Position.createAddLiquidityFixTokenPayload(i?.parameter,i?.gasEstimateArg),Jc=async(i,e,t)=>await Yt(t,e).Position.closePositionPayload(i),Yc=async(i,e,t)=>await Yt(t,e).Position.removeLiquidityPayload(i),Zc=async(i,e,t)=>await Yt(t,e).Rewarder.collectRewarderPayload(i);var So=class i extends C{constructor(t){super(t);this.data=t}txType=tl.TransactionType.Other;txSubType="OpenAndAddLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await Gc(a,n,o)}static fromData(t){return new i(t)}};var el=require("@msafe/sui3-utils");var To=class i extends C{constructor(t){super(t);this.data=t}txType=el.TransactionType.Other;txSubType="ClaimFeeAndMining";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await Zc(a,n,o)}static fromData(t){return new i(t)}};var nl=require("@msafe/sui3-utils");var Io=class i extends C{constructor(t){super(t);this.data=t}txType=nl.TransactionType.Other;txSubType="CreatePool";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await zc(a,n,o)}static fromData(t){return new i(t)}};var ol=require("@msafe/sui3-utils");var wo=class i extends C{constructor(t){super(t);this.data=t}txType=ol.TransactionType.Other;txSubType="DecreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await Yc(a,n,o)}static fromData(t){return new i(t)}};var dl=require("@msafe/sui3-utils");var al=async(i,e,t)=>await qt(t,e).Farms.openPositionAddLiquidityStakePayload(i),il=async(i,e,t)=>await qt(t,e).Farms.addLiquidityFixCoinPayload(i),rl=async(i,e,t)=>await qt(t,e).Farms.removeLiquidityPayload(i),sl=async(i,e,t)=>await qt(t,e).Farms.removeLiquidityPayload(i),cl=async(i,e,t)=>await qt(t,e).Farms.claimFeeAndClmmReward(i),ll=async(i,e,t)=>await qt(t,e).Farms.harvestPayload(i),ul=async(i,e,t)=>{let n=qt(t,e),o=Object.values(i);return await n.Farms.batchHarvestPayload(o)},ml=async(i,e,t)=>await qt(t,e).Farms.depositPayload(i),pl=async(i,e,t)=>await qt(t,e).Farms.withdrawPayload(i);var Co=class i extends C{constructor(t){super(t);this.data=t}txType=dl.TransactionType.Other;txSubType="FarmingOpenAndAddLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await al(a,n,o)}static fromData(t){return new i(t)}};var fl=require("@msafe/sui3-utils");var ko=class i extends C{constructor(t){super(t);this.data=t}txType=fl.TransactionType.Other;txSubType="FarmingBatchHarvest";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await ul(a,n,o)}static fromData(t){return new i(t)}};var hl=require("@msafe/sui3-utils");var xo=class i extends C{constructor(t){super(t);this.data=t}txType=hl.TransactionType.Other;txSubType="FarmingClaimFeeAndReward";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await cl(a,n,o)}static fromData(t){return new i(t)}};var gl=require("@msafe/sui3-utils");var Do=class i extends C{constructor(t){super(t);this.data=t}txType=gl.TransactionType.Other;txSubType="FarmingDecreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await rl(a,n,o)}static fromData(t){return new i(t)}};var yl=require("@msafe/sui3-utils");var vo=class i extends C{constructor(t){super(t);this.data=t}txType=yl.TransactionType.Other;txSubType="FarmingHarvest";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await ll(a,n,o)}static fromData(t){return new i(t)}};var bl=require("@msafe/sui3-utils");var Ao=class i extends C{constructor(t){super(t);this.data=t}txType=bl.TransactionType.Other;txSubType="FarmingIncreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await il(a,n,o)}static fromData(t){return new i(t)}};var Sl=require("@msafe/sui3-utils");var Mo=class i extends C{constructor(t){super(t);this.data=t}txType=Sl.TransactionType.Other;txSubType="FarmingRemoveLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await sl(a,n,o)}static fromData(t){return new i(t)}};var Tl=require("@msafe/sui3-utils");var Oo=class i extends C{constructor(t){super(t);this.data=t}txType=Tl.TransactionType.Other;txSubType="FarmingStake";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await ml(a,n,o)}static fromData(t){return new i(t)}};var Il=require("@msafe/sui3-utils");var Po=class i extends C{constructor(t){super(t);this.data=t}txType=Il.TransactionType.Other;txSubType="FarmingUnstake";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await pl(a,n,o)}static fromData(t){return new i(t)}};var wl=require("@msafe/sui3-utils");var Ro=class i extends C{constructor(t){super(t);this.data=t}txType=wl.TransactionType.Other;txSubType="IncreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await Qc(a,n,o)}static fromData(t){return new i(t)}};var xl=require("@msafe/sui3-utils");var gn=require("@mysten/sui/transactions"),Bo=Ut(require("haedal-vault-sdk"));var cd=async(i,e,t)=>{let n=hn(t,e),o=new gn.Transaction;return o.setSender(e.address),n.Vest.buildRedeemPayload(i.params,o),o},ld=async(i,e,t)=>{let n=new Bo.default(Bo.vaults_mainnet);n.senderAddress=e.address;let o=new gn.Transaction;return o.setSender(e.address),await n?.Vest.buildRedeemPayload(i.params,o),o},Cl=(i,e,t)=>{let n=Yt(t,e),o=new gn.Transaction;return n?.Vest.buildRedeemPayload(i.params,o),o},ud=async(i,e,t)=>{let n=Yt(t,e),o=qt(t,e),a=new gn.Transaction,s=await o.Farms.withdrawReturnPayload(i.withdrawParams,a);return n.Vest.buildRedeemPayload(i.redeemParms.map(l=>({...l,clmm_position_id:s})),a),o.Farms.depositPayload({...i.depositParams,clmm_position_id:s},a),a},kl=async(i,e,t)=>i.type==="clmm"?Cl(i,e,t):i.type==="farms"?ud(i,e,t):i.type==="vaults"?cd(i,e,t):i.type==="haedalVaults"?ld(i,e,t):Cl(i,e,t);var Eo=class i extends C{constructor(t){super(t);this.data=t}txType=xl.TransactionType.Other;txSubType="PosVestingRedeem";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await kl(a,n,o)}static fromData(t){return new i(t)}};var Dl=require("@msafe/sui3-utils");var No=class i extends C{constructor(t){super(t);this.data=t}txType=Dl.TransactionType.Other;txSubType="RemoveLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await Jc(a,n,o)}static fromData(t){return new i(t)}};var Ol=require("@msafe/sui3-utils");var vl=require("@cetusprotocol/aggregator-sdk"),Al=require("@mysten/sui/transactions");var Ml=async(i,e,t)=>{let n=Xc(t,e),o=new Al.Transaction;return await n.fastRouterSwap({...i,router:(0,vl.restituteMsafeFastRouterSwapParams)(i.router),txb:o}),o};var Wo=class i extends C{constructor(t){super(t);this.data=t}txType=Ol.TransactionType.Other;txSubType="AggregatorSwap";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await Ml(a,n,o)}static fromData(t){return new i(t)}};var Bl=require("@msafe/sui3-utils");var Qr=require("@mysten/sui/transactions");var Pl=async(i,e,t)=>{let n=hn(t,e),o=new Qr.Transaction;return o.setSender(e.address),await n.Vaults.deposit(i,o),o},Rl=async(i,e,t)=>{let n=hn(t,e),o=new Qr.Transaction;return await n.Vaults.withdraw(i,o),o};var _o=class i extends C{constructor(t){super(t);this.data=t}txType=Bl.TransactionType.Other;txSubType="AddVaultsPosition";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await Pl(a,n,o)}static fromData(t){return new i(t)}};var El=require("@msafe/sui3-utils");var Lo=class i extends C{constructor(t){super(t);this.data=t}txType=El.TransactionType.Other;txSubType="RemoveVaultsPosition";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await Rl(a,n,o)}static fromData(t){return new i(t)}};var Ll=require("@msafe/sui3-utils");var Wl=require("@mysten/sui/transactions"),Nl={package_id:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",published_at:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",cetus_coin_type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS"},_l=async(i,e,t)=>{console.log("getVestingRedeemTxb txbParams: ",i),console.log("getVestingRedeemTxb account: ",e),console.log("getVestingRedeemTxb network: ",t);let{pool:n,nftId:o,periods:a,CLOCK_ADDRESS:s}=i,l=new Wl.Transaction;return a.forEach(d=>{l.moveCall({target:`${Nl.published_at}::router::redeem`,typeArguments:[Nl.cetus_coin_type],arguments:[l.object(n),l.object(o),l.pure(d),l.object(s)]})}),l};var jo=class i extends C{constructor(t){super(t);this.data=t}txType=Ll.TransactionType.Other;txSubType="VestingRedeem";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await _l(a,n,o)}static fromData(t){return new i(t)}};var $l=require("@msafe/sui3-utils");var jl=async(i,e,t)=>await $e(t,e).XCetusModule.convertPayload(i),Ul=async(i,e,t)=>await $e(t,e).XCetusModule.redeemLockPayload(i),ql=async(i,e,t)=>await $e(t,e).XCetusModule.redeemDividendV3Payload(i.veNftId,i.rewardList),Fl=async(i,e,t)=>await $e(t,e).XCetusModule.cancelRedeemPayload(i),Kl=async(i,e,t)=>await $e(t,e).XCetusModule.redeemPayload(i);var Uo=class i extends C{constructor(t){super(t);this.data=t}txType=$l.TransactionType.Other;txSubType="xCETUSCancelRedeem";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await Fl(a,n,o)}static fromData(t){return new i(t)}};var Vl=require("@msafe/sui3-utils");var qo=class i extends C{constructor(t){super(t);this.data=t}txType=Vl.TransactionType.Other;txSubType="xCETUSClaimStakingRwewards";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await ql(a,n,o)}static fromData(t){return new i(t)}};var Hl=require("@msafe/sui3-utils");var Fo=class i extends C{constructor(t){super(t);this.data=t}txType=Hl.TransactionType.Other;txSubType="xCETUSConvert";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await jl(a,n,o)}static fromData(t){return new i(t)}};var Xl=require("@msafe/sui3-utils");var Ko=class i extends C{constructor(t){super(t);this.data=t}txType=Xl.TransactionType.Other;txSubType="xCETUSRedeem";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await Kl(a,n,o)}static fromData(t){return new i(t)}};var zl=require("@msafe/sui3-utils");var $o=class i extends C{constructor(t){super(t);this.data=t}txType=zl.TransactionType.Other;txSubType="xCETUSRedeemLock";async build(t){let{account:n,network:o}=t,{txbParams:a}=this.data;return await Ul(a,n,o)}static fromData(t){return new i(t)}};var Vo=class{application="cetus";supportSDK="@mysten/sui";async deserialize(e){console.log("Cetus helper deserialize input: ",e);let{txbParams:t,action:n}=e;return{txType:Gl.TransactionType.Other,txSubType:n,intentionData:{txbParams:{...t},action:n}}}async build(e){let{suiClient:t,account:n,network:o}=e,a;switch(e.txSubType){case"OpenAndAddLiquidity":a=So.fromData(e.intentionData);break;case"IncreaseLiquidity":a=Ro.fromData(e.intentionData);break;case"DecreaseLiquidity":a=wo.fromData(e.intentionData);break;case"RemoveLiquidity":a=No.fromData(e.intentionData);break;case"ClaimFeeAndMining":a=To.fromData(e.intentionData);break;case"FarmingOpenAndAddLiquidity":a=Co.fromData(e.intentionData);break;case"FarmingIncreaseLiquidity":a=Ao.fromData(e.intentionData);break;case"FarmingDecreaseLiquidity":a=Do.fromData(e.intentionData);break;case"FarmingRemoveLiquidity":a=Mo.fromData(e.intentionData);break;case"FarmingClaimFeeAndReward":a=xo.fromData(e.intentionData);break;case"FarmingHarvest":a=vo.fromData(e.intentionData);break;case"FarmingBatchHarvest":a=ko.fromData(e.intentionData);break;case"FarmingStake":a=Oo.fromData(e.intentionData);break;case"FarmingUnstake":a=Po.fromData(e.intentionData);break;case"xCETUSConvert":a=Fo.fromData(e.intentionData);break;case"xCETUSRedeemLock":a=$o.fromData(e.intentionData);break;case"xCETUSClaimStakingRwewards":a=qo.fromData(e.intentionData);break;case"xCETUSCancelRedeem":a=Uo.fromData(e.intentionData);break;case"xCETUSRedeem":a=Ko.fromData(e.intentionData);break;case"VestingRedeem":a=jo.fromData(e.intentionData);break;case"AggregatorSwap":a=Wo.fromData(e.intentionData);break;case"AddVaultsPosition":a=_o.fromData(e.intentionData);break;case"RemoveVaultsPosition":a=Lo.fromData(e.intentionData);break;case"PosVestingRedeem":a=Eo.fromData(e.intentionData);break;case"CreatePool":a=Io.fromData(e.intentionData);break;default:throw new Error("not implemented")}return a.build({suiClient:t,account:n,network:o})}};var bu=require("@msafe/sui3-utils");var Ql=Ut(require("sort-keys-recursive")),_=class{constructor(e){this.data=e}serialize(){return JSON.stringify((0,Ql.default)(this.data))}};var yn=require("@mysten/sui.js/client");var Jr={};Gr(Jr,{contractId:()=>dd,default:()=>bd,feeObjId:()=>gd,roleObjId:()=>fd,status:()=>pd,transaction:()=>md,upgradeCapObjId:()=>yd,vaultObjId:()=>hd});var md="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",pd="success",dd="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",fd="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",hd="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",gd="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",yd="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",bd={transaction:md,status:pd,contractId:dd,roleObjId:fd,vaultObjId:hd,feeObjId:gd,upgradeCapObjId:yd};var Yr={};Gr(Yr,{contractId:()=>Id,default:()=>Dd,feeObjId:()=>kd,roleObjId:()=>wd,status:()=>Td,transaction:()=>Sd,upgradeCapObjId:()=>xd,vaultObjId:()=>Cd});var Sd="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",Td="success",Id="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",wd="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",Cd="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",kd="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",xd="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",Dd={transaction:Sd,status:Td,contractId:Id,roleObjId:wd,vaultObjId:Cd,feeObjId:kd,upgradeCapObjId:xd};var vd=(0,yn.getFullnodeUrl)("testnet"),Ad=(0,yn.getFullnodeUrl)("testnet"),Md=(0,yn.getFullnodeUrl)("mainnet"),Od=(0,yn.getFullnodeUrl)("mainnet"),Pd="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",Rd="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",Bd="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",Ed="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",Jl=Jr,Yl=Yr,Nd=new Map([["dev",{env:"dev",rpc:{url:vd},backend:{url:Pd},contract:Jl}],["stg",{env:"stg",rpc:{url:Ad},backend:{url:Rd},contract:Jl}],["prev",{env:"prev",rpc:{url:Md},backend:{url:Bd},contract:Yl}],["prod",{env:"prod",rpc:{url:Od},backend:{url:Ed},contract:Yl}]]);function Zl(i,e){let t=Nd.get(i);if(!t)throw new Error(`Env not supported: ${i}`);return e&&e.rpc&&(t.rpc=e.rpc),e&&e.backend&&(t.backend=e.backend),e&&e.contract&&(t.contract=e.contract),t}var tu=require("@mysten/sui.js/client");var L=class extends Error{mpayErrorCode;context;constructor(e,t,n={}){let{cause:o,context:a}=n;o?super(`[MPay] ${t}: ${o}`):super(`[MPay] ${t}`),this.mpayErrorCode=e,this.context=a}};var Ho=class extends L{constructor(){super(11,"Backend is not specified")}};var Xo=class extends L{constructor(){super(1,"Wallet not connected")}};var re=Ut(require("axios"));var Ve=class extends L{constructor(e,t){super(10,e,{context:t})}};var zo=class i{constructor(e){this.apiURL=e}static parseResponseData(e){if(e instanceof re.AxiosError)throw new Ve(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new Ve(e.data.code)}throw new Ve(e.status.toString())}async getIncomingStreams(e,t){let n=await re.default.post(`${this.apiURL}/stream`,{recipient:e,...t});return i.parseResponseData(n)}async getOutgoingStreams(e,t){let n=await re.default.post(`${this.apiURL}/stream`,{sender:e,...t});return i.parseResponseData(n)}async getStreamHistory(e){let t=await re.default.post(`${this.apiURL}/stream-events`,e),n=i.parseResponseData(t);return n.data.forEach(o=>{let a=o;return a.data.type==="create_stream"?a.data.balance=BigInt(a.data.balance):a.data.type==="cancel_stream"?a.data.withdrawAmount=BigInt(a.data.withdrawAmount):a.data.type==="claim"||a.data.type==="auto_claim"?a.data.claimAmount=BigInt(a.data.claimAmount):a.data.type==="set_auto_claim"&&(a.data.enabled=!!a.data.enabled),a.createdAt=new Date(a.createdAt),a}),n}async getAllCoinTypes(e){let t=await re.default.post(`${this.apiURL}/stream-info`,{address:e});return i.parseResponseData(t)}async getAllRecipients(e,t){let n=await re.default.post(`${this.apiURL}/stream-info`,{sender:e,status:t});return i.parseResponseData(n)}async getAllSenders(e,t){let n=await re.default.post(`${this.apiURL}/stream-info`,{recipient:e,status:t});return i.parseResponseData(n)}};var He=class i{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new tu.SuiClient({url:e.rpc.url}),e.backend&&(this._backend=new zo(e.backend.url))}static new(e,t){let n=Zl(e,t);return new i(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Ho;return this._backend}set backend(e){this._backend=e}connectWallet(e){this.signer=e}disconnect(){this.signer=void 0}get wallet(){if(!this.signer)throw new Xo;return this.signer}async walletAddress(){return this.wallet.address()}};var Ee=require("@mysten/sui.js/utils");var Cn=require("@mysten/sui.js/transactions");var os=require("@mysten/sui.js/transactions"),wn=require("@mysten/sui.js/utils");var Zr=50n,Go=10000n,eu=25n,ts=100000000n;var Zt=class{constructor(e){this.object=e}moveArg(e){return e.object(this.object)}},bn=class{constructor(e){this.objects=e}moveArgs(e){return e.makeMoveVec({objects:this.objects.map(t=>e.object(t))})}},he=class i{constructor(e){this.result=e;return new Proxy(this,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(t,n){if(n in t)return Reflect.get(t,n);let o=s=>new i(t.result[s]);if(n===Symbol.iterator)return function*(){let s=0;for(;;)yield o(s),s++};if(typeof n=="symbol")return;let a=parseInt(n,10);if(!(Number.isNaN(a)||a<0))return o(a)}})}moveArg(){return this.result}};var es=require("buffer"),nu=require("@mysten/sui.js/utils");var Sn=class extends L{constructor(e,t){super(3,e,{context:t})}};var Qo=class{constructor(e){this.results=e}callResult(e){return this.results.results[e]}returnValue(e,t){return e.returnValues[t]}getValue(e=0,t=0){let n=this.callResult(e);return this.returnValue(n,t)}getAddress(e=0,t=0){let[n,o]=this.getValue(e,t);if(o!=="address")throw new Sn("Invalid contract return type.",{ctx:{expectType:"address",gotType:o}});return(0,nu.normalizeSuiAddress)(es.Buffer.from(n).toString("hex"))}getU64(e=0,t=0){let[n,o]=this.getValue(e,t);if(o!=="u64")throw new Sn("Invalid contract return type.",{ctx:{expectType:"u64",gotType:o}});return es.Buffer.from(n).readBigInt64LE()}};var ns=require("@mysten/sui.js/bcs");var H=class extends L{constructor(e,t,n){super(2,`Invalid input: ${e}`,{context:{fieldKey:t,fieldValue:n}})}};var au={groupId:"string",name:"string"},Wd=64;function iu(i){return ru(i),ns.bcs.ser(au,i).toString("base64")}function Tn(i){let e=ns.bcs.de(au,i,"base64");return ru(e),e}function ru(i){if(!ou(i.name))throw new H("Invalid metadata: Name contains unknown character");if(!ou(i.groupId))throw new H("Invalid metadata: Group ID contains unknown character");if(i.name.length>Wd)throw new H("Invalid metadata: Name exceed max length 64")}function ou(i){return/^[\x00-\x7F]+$/.test(i)}var In=require("@mysten/sui.js/utils");function Jo(i,e){return(0,In.normalizeStructTag)(i)===(0,In.normalizeStructTag)(e)}function ge(i,e){return(0,In.normalizeStructTag)(i)===(0,In.normalizeStructTag)(e)}var Yo="txn.gas";var su=require("nanoid");function cu(){return(0,su.nanoid)()}var Be=class i{constructor(e,t,n){this.globals=e;this.feeContract=t;this.streamContract=n}static convertCreateStreamInfoToInternal(e){return{metadata:iu({name:e.name,groupId:cu()}),coinType:(0,wn.normalizeStructTag)(e.coinType),recipients:e.recipients.map(t=>({address:t.address,cliffAmount:t.cliffAmount,amountPerEpoch:t.amountPerStep})),epochInterval:e.interval,numberEpoch:e.steps,startTime:e.startTimeMs,cancelable:e.cancelable}}async buildCreateStreamTransactionBlock(e){let t=new os.TransactionBlock,n=this.calculateFeesInternal(e),o=this.getCreateStreamCoinRequests(e,n),a=await this.wallet.requestCoins(o),s=await this.addMergeCoins(t,a[0]),l;o.length>1?l=await this.addMergeCoins(t,a[1]):l=s;for(let d=0;d<e.recipients.length;d++){let b=e.recipients[d],T=this.amountForRecipient(b,e.numberEpoch),w=this.getStreamFeeLocal(T),[k]=t.splitCoins(s,[t.pure(T+w,"u64")]),[x]=t.splitCoins(l,[t.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(t,{paymentCoin:new he(k),flatFeeCoin:new he(x),metadata:e.metadata,recipient:b.address,timeStart:e.startTime,cliff:b.cliffAmount,epochInterval:e.epochInterval,numEpoch:e.numberEpoch,amountPerEpoch:b.amountPerEpoch,cancelable:e.cancelable,coinType:e.coinType})}return t}calculateCreateStreamFees(e){let t=i.convertCreateStreamInfoToInternal(e);return this.calculateFeesInternal(t)}feeParams(){return{createFeePercent:{numerator:Zr,denominator:Go},claimFeePercent:{numerator:eu,denominator:Go},flatFeePerStream:ts}}async addMergeCoins(e,t){let n;return t.mergedCoins&&t.mergedCoins.length?(e.mergeCoins(e.object(t.primaryCoin),t.mergedCoins.map(o=>e.object(o))),n=e.object(t.primaryCoin)):t.primaryCoin===Yo?n=e.gas:n=e.object(t.primaryCoin),n}getCreateStreamCoinRequests(e,t){let n=e.coinType;return Jo(n,wn.SUI_TYPE_ARG)?[{coinType:n,amount:t.totalAmount+t.streamFeeAmount+t.flatFeeAmount}]:[{coinType:n,amount:t.totalAmount+t.streamFeeAmount},{coinType:wn.SUI_TYPE_ARG,amount:t.flatFeeAmount}]}calculateFeesInternal(e){let t=e.recipients.reduce((o,a)=>{let s=this.amountForRecipient(a,e.numberEpoch),l=this.getStreamFeeLocal(s);return{totalAmount:o.totalAmount+s,streamFeeAmount:o.streamFeeAmount+l}},{totalAmount:0n,streamFeeAmount:0n});return{flatFeeAmount:BigInt(e.recipients.length)*this.flatSuiFee,...t}}amountForRecipient(e,t){return BigInt(e.amountPerEpoch)*BigInt(t)+BigInt(e.cliffAmount)}get flatSuiFee(){return ts}getStreamFeeLocal(e){return e*Zr/Go}async getStreamFeeRemote(e){let t=this.feeContract.streamingFee(new os.TransactionBlock,e),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:t});return new Qo(n).getU64()}get wallet(){return this.globals.wallet}};var as=require("@mysten/sui.js/transactions");var lu="0x0000000000000000000000000000000000000000000000000000000000000006";var Xe=class{constructor(e,t,n){this.moduleName=e;this.config=t;this.globals=n}addContractCall(e,t){let n=`${this.config.contractId}::${this.moduleName}::${t.method}`;return e.add(as.Transactions.MoveCall({target:n,arguments:t.arguments.map(o=>o instanceof bn?o.moveArgs(e):o instanceof Zt?o.moveArg(e):o instanceof he?o.moveArg():e.pure(o)),typeArguments:t.typeArgs})),e}addTransactionBlock(e,t,n=[],o=[]){e.add(as.Transactions.MoveCall({target:t,arguments:n.map(a=>a instanceof bn?a.moveArgs(e):a instanceof Zt?a.moveArg(e):a instanceof he?a.moveArg():e.pure(a)),typeArguments:o}))}makeObject(e){return typeof e=="string"?new Zt(e):e}vaultObject(){return new Zt(this.config.vaultObjId)}roleObject(){return new Zt(this.config.roleObjId)}feeObject(){return new Zt(this.config.feeObjId)}clockObject(){return new Zt(lu)}};var ze=class i extends Xe{constructor(t,n){super(i.ModuleName,t,n);this.config=t;this.globals=n}static ModuleName="fee_module";static MethodName={set_streaming_fee:"set_streaming_fee",set_claim_fee:"set_claim_fee",set_streaming_flat_fee:"set_streaming_flat_fee",streaming_flat_fee:"streaming_flat_fee",streaming_fee:"streaming_fee",claim_fee:"claim_fee",fee_denominator:"fee_denominator"};setStreamingFee(t,n){let o=this.roleObject(),a=this.feeObject();return this.addContractCall(t,{method:i.MethodName.set_streaming_fee,arguments:[o,a,n],typeArgs:[]})}setStreamingFlatFee(t,n){let o=this.roleObject(),a=this.feeObject();return this.addContractCall(t,{method:i.MethodName.set_streaming_flat_fee,arguments:[o,a,n],typeArgs:[]})}setClaimFee(t,n){let o=this.roleObject(),a=this.feeObject();return this.addContractCall(t,{method:i.MethodName.set_claim_fee,arguments:[o,a,n],typeArgs:[]})}streamingFee(t,n){let o=this.feeObject();return this.addContractCall(t,{method:i.MethodName.streaming_fee,arguments:[o,n],typeArgs:[]})}claimFee(t,n){return this.addContractCall(t,{method:i.MethodName.claim_fee,arguments:[this.feeObject(),n],typeArgs:[]})}feeDenominator(t){return this.addContractCall(t,{method:i.MethodName.fee_denominator,arguments:[this.feeObject()],typeArgs:[]})}};var te=class i extends Xe{constructor(t,n){super(i.ModuleName,t,n);this.config=t;this.globals=n}static ModuleName="stream";static MethodName={create_stream:"create_stream",set_auto_claim:"set_auto_claim",cancel_stream:"cancel_stream",claim_stream:"claim_stream",claim_stream_by_proxy:"claim_stream_by_proxy",stream_current_epoch:"stream_current_epoch",now_milli_seconds:"now_milli_seconds"};createStream(t,n){let o=this.feeObject(),a=this.vaultObject(),s=this.makeObject(n.paymentCoin),l=this.makeObject(n.flatFeeCoin),d=this.clockObject();return this.addContractCall(t,{method:i.MethodName.create_stream,arguments:[o,a,s,l,n.metadata,n.recipient,n.timeStart,n.cliff,n.epochInterval,n.numEpoch,n.amountPerEpoch,n.cancelable,d],typeArgs:[n.coinType]})}setAutoClaim(t,n){let o=this.makeObject(n.streamId);return this.addContractCall(t,{method:i.MethodName.set_auto_claim,arguments:[o,n.enabled],typeArgs:[n.coinType]})}cancelStream(t,n){let o=this.makeObject(n.streamId),a=this.clockObject();return this.addContractCall(t,{method:i.MethodName.cancel_stream,arguments:[o,a],typeArgs:[n.coinType]})}claimStream(t,n){let o=this.makeObject(n.streamId),a=this.clockObject();return this.addContractCall(t,{method:i.MethodName.claim_stream,arguments:[o,a],typeArgs:[n.coinType]})}claimStreamByProxy(t,n){let o=this.makeObject(n.streamId),a=this.vaultObject(),s=this.feeObject(),l=this.clockObject();return this.addContractCall(t,{method:i.MethodName.claim_stream_by_proxy,arguments:[o,a,s,l],typeArgs:[n.coinType]})}get createStreamTarget(){return`${this.config.contractId}::${i.ModuleName}::${i.MethodName.create_stream}`}get setAutoClaimTarget(){return`${this.config.contractId}::${i.ModuleName}::${i.MethodName.set_auto_claim}`}get cancelStreamTarget(){return`${this.config.contractId}::${i.ModuleName}::${i.MethodName.cancel_stream}`}get claimStreamTarget(){return`${this.config.contractId}::${i.ModuleName}::${i.MethodName.claim_stream}`}get claimStreamByProxyTarget(){return`${this.config.contractId}::${i.ModuleName}::${i.MethodName.claim_stream_by_proxy}`}};var Ge=class{constructor(e){this.globals=e;let t=e.envConfig.contract;this.feeContract=new ze(t,e),this.streamContract=new te(t,e)}feeContract;streamContract;async createStreams(e){let t=Be.convertCreateStreamInfoToInternal(e);return this.createStreamHelper().buildCreateStreamTransactionBlock(t)}createStreamHelper(){return new Be(this.globals,this.feeContract,this.streamContract)}setAutoClaim(e,t,n){let o=new Cn.TransactionBlock;return this.streamContract.setAutoClaim(o,{streamId:e,enabled:t,coinType:n})}claimStream(e,t){let n=new Cn.TransactionBlock;return this.streamContract.claimStream(n,{streamId:e,coinType:t})}claimStreamByProxy(e,t){let n=new Cn.TransactionBlock;return this.streamContract.claimStreamByProxy(n,{streamId:e,coinType:t})}cancelStream(e,t){let n=new Cn.TransactionBlock;return this.streamContract.cancelStream(n,{streamId:e,coinType:t}),n}};var Qe=require("@mysten/sui.js/utils"),is=require("luxon");var Zo=class extends L{constructor(e,t){super(12,`Transaction failed: ${t}`,{context:{status:e,msg:t}})}};var _d=1e3,ta=class{constructor(e){this.globals=e;this.coinMetaHelper=new rs(e.suiClient),this.createStreamHelper=new Ge(e).createStreamHelper()}coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(e){if(e.effects?.status.status!=="success")throw new Zo(e.effects?.status.status,e.effects?.status.error);return e.objectChanges.filter(t=>t.type==="created"&&t.objectType.startsWith(`${this.globals.envConfig.contract.contractId}::stream::Stream`)).map(t=>t.objectId)}calculateCreateStreamFees(e){return this.createStreamHelper.calculateCreateStreamFees(e)}feeParams(){return this.createStreamHelper.feeParams()}calculateStreamAmount(e){if(e.steps===0n)throw new H("Invalid stream steps: 0");let t=e.cliff?e.cliff:{numerator:0n,denominator:100n},n=e.totalAmount*t.numerator/t.denominator,o=(e.totalAmount-n)/e.steps,s={realTotalAmount:o*e.steps+n,cliffAmount:n,amountPerStep:o};return this.validateStreamAmount(s,e.totalAmount),s}calculateTimelineByInterval(e){if(e.steps===0n)throw new H("Invalid stream steps: 0");let t=e.timeStart.plus(e.interval.toMillis()*Number(e.steps)),n={timeStart:e.timeStart,timeEnd:t,interval:e.interval,steps:e.steps};return this.validateTimeline(n),n}calculateTimelineByTotalDuration(e){if(e.steps===0n)throw new H("Invalid stream steps: 0");let t=BigInt(e.total.toMillis())/e.steps,n=e.timeStart.plus(is.Duration.fromMillis(Number(t*e.steps))),o={timeStart:e.timeStart,timeEnd:n,interval:is.Duration.fromMillis(Number(t)),steps:e.steps};return this.validateTimeline(o),o}async getBalance(e,t){let n=await this.globals.suiClient.getBalance({owner:e,coinType:t}),o=await this.getCoinMeta(t);return{...n,coinType:(0,Qe.normalizeStructTag)(n.coinType),coinMeta:o}}async getAllBalance(e){let t=await this.globals.suiClient.getAllBalances({owner:e}),n=await Promise.all(t.map(o=>this.getCoinMeta(o.coinType)));return t.map((o,a)=>({...o,coinType:(0,Qe.normalizeStructTag)(o.coinType),coinMeta:n[a]}))}async getCoinMeta(e){return this.coinMetaHelper.getCoinMeta(e)}async simulateTransactionBlock(e){return this.globals.suiClient.devInspectTransactionBlock({transactionBlock:e,sender:await this.globals.wallet.address()})}validateStreamAmount(e,t){if(e.amountPerStep===0n)throw new H("Stream amount too small","totalAmount",t);if(e.cliffAmount>e.realTotalAmount)throw new H("Invalid cliff settings")}validateTimeline(e){if(e.interval.toMillis()<_d)throw new H("Interval shall be at least 1 second","interval",e.interval)}},rs=class{constructor(e){this.suiClient=e;this.coinMetaReg=new Map}coinMetaReg;async getCoinMeta(e){let t=(0,Qe.normalizeStructTag)(e||Qe.SUI_TYPE_ARG);if(this.coinMetaReg.has(t))return this.coinMetaReg.get(t);let n=await this.queryCoinMeta(t);return n&&this.coinMetaReg.set(t,n),n}async queryCoinMeta(e){return await this.suiClient.getCoinMetadata({coinType:e})||void 0}};var be=require("@mysten/sui.js/utils"),ds=require("luxon");var Dn=require("@mysten/sui.js/transactions"),vn=require("@mysten/sui.js/utils"),mu=require("luxon");var ea=class extends L{constructor(){super(7,"Connected wallet is not creator")}};var kn=class extends L{constructor(){super(8,"Connected wallet is not recipient")}};var xn=class extends L{constructor(e,t){super(6,e,{context:t})}};var At=class extends L{constructor(e,t={}){super(0,e,t)}};var na=class extends L{constructor(e){super(5,"Stream not found",{context:{streamId:e}})}};var aa=require("luxon"),uu=(1n<<64n)-1n,oa=1e3;function ss(i){let e;typeof i=="number"?e=i:typeof i=="bigint"?e=Number(i):e=i.toMillis();let t=Math.round(e/oa);return aa.DateTime.fromMillis(t*oa)}function cs(i){let e;typeof i=="number"?e=i:typeof i=="bigint"?e=Number(i):e=i.toMillis();let t=Math.round(e/oa);return aa.Duration.fromMillis(t*oa)}var ye=class i{constructor(e,t,n){this.globals=e;this.streamId=t;this.rawData=n;this.streamContract=new te(e.envConfig.contract,e)}streamContract;type="Stream";static async new(e,t){let n=await i.fetchStreamData(e,t);return new i(e,t,n)}static fromObjectData(e,t,n){let o=i.parseRawStreamData(t,n);return new i(e,t,o)}get info(){return{name:this.name,creator:this.creator,coinType:this.coinType,totalAmount:this.totalAmount,start:this.timeStart,end:this.timeEnd,cancelable:this.cancelable,cliffAmount:this.cliff,duration:this.duration,interval:this.interval,steps:this.totalSteps,nextReleaseDate:this.nextReleaseDate,nextReleaseAmount:this.nextReleaseAmount,groupId:this.groupId,streamId:this.streamId,recipient:this.recipient,progress:this.progress,autoClaim:this.autoClaim}}get groupCommonInfo(){return{name:this.name,groupId:this.groupId,creator:this.creator,start:this.timeStart,interval:this.interval,steps:this.totalSteps,cancelable:this.cancelable}}async refresh(){this.rawData=await i.fetchStreamData(this.globals,this.streamId)}refreshWithData(e){if(e.data?.objectId!==this.streamId)throw new At("Object Id does not align");this.rawData=i.parseRawStreamData(this.streamId,e)}async historyEvents(e){return this.globals.backend.getStreamHistory({streamId:this.streamId,pagination:e})}async cancel(){if(await this.globals.walletAddress()!==this.creator)throw new ea;let e=new Dn.TransactionBlock;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new kn;let e=new Dn.TransactionBlock;return this.streamContract.claimStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async setAutoClaim(e){if(await this.globals.walletAddress()!==this.recipient)throw new kn;let t=new Dn.TransactionBlock;return this.streamContract.setAutoClaim(t,{streamId:this.streamId,coinType:this.coinType,enabled:e}),t}async claimByProxy(){let e=new Dn.TransactionBlock;return this.streamContract.claimStreamByProxy(e,{streamId:this.streamId,coinType:this.coinType}),e}get wallet(){return this.globals.wallet}get client(){return this.globals.suiClient}get coinType(){return(0,vn.normalizeStructTag)(this.rawData.coinType)}get progress(){return{status:this.streamStatus,total:this.totalAmount,streamed:this.streamedAmount,claimed:this.claimedAmount,claimable:this.claimable,canceled:this.canceledAmount}}get balance(){return this.rawData.balance}get autoClaim(){return this.rawData.autoClaim}get amountPerEpoch(){return this.rawData.config.amountPerEpoch}get cancelable(){return this.rawData.config.cancelable}get cliff(){return this.rawData.config.cliff}get creator(){return this.rawData.config.creator}get interval(){return cs(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return Tn(e).groupId}get name(){let{metadata:e}=this.rawData.config;return Tn(e).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return ss(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,t=e.epochInterval*e.totalEpoch;return cs(t)}get timeEnd(){return this.timeStart.plus(this.duration)}get totalSteps(){return this.rawData.config.totalEpoch}get claimable(){return this.streamedAmount-this.claimedAmount}get nextReleaseDate(){return this.currentEpoch===-1n?this.timeStart:this.currentEpoch>=this.totalSteps||this.isCanceled?null:ss((this.currentEpoch+1n)*this.rawData.config.epochInterval+this.rawData.config.timeStart)}get nextReleaseAmount(){return this.currentEpoch===-1n?this.cliff:this.currentEpoch>=this.totalSteps||this.isCanceled?null:this.amountPerEpoch}get streamStatus(){let e=this.rawData.status.status;return e===16?"CANCELED":e===17?"SETTLED":e===1?"COMPLETED":this.currentEpoch>=this.totalSteps?"STREAMED":"STREAMING"}get streamedAmount(){return this.currentEpoch===-1n?0n:this.isCanceled?this.rawData.status.epochCanceled*this.amountPerEpoch+this.cliff:this.currentEpoch*this.amountPerEpoch+this.cliff}get claimedAmount(){return this.rawData.status.epochClaimed===uu?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=mu.DateTime.now().toMillis(),t=this.timeStart.toMillis();if(e<t)return-1n;let n=Math.floor((e-t)/Number(this.rawData.config.epochInterval));return BigInt(n)>Number(this.rawData.config.totalEpoch)?this.rawData.config.totalEpoch:BigInt(n)}get totalAmount(){let e=this.rawData.config;return e.amountPerEpoch*e.totalEpoch+e.cliff}get isCanceled(){let e=this.rawData.status.status;return e===16||e===17}get canceledAmount(){return this.isCanceled?this.totalAmount-this.streamedAmount:0n}static async fetchStreamData(e,t){let n=await e.suiClient.getObject({id:t,options:{showContent:!0,showType:!0}});return i.parseRawStreamData(t,n)}static parseRawStreamData(e,t){if(t.error)throw t.error.code==="notExists"?new na(e):new xn(`get stream data: ${t.error.code}`,{streamId:e,...t.error});let n=t.data.content;if(n.dataType!=="moveObject")throw new xn("Unexpected object type",{gotType:n.dataType});let{typeParams:o}=(0,vn.parseStructTag)(n.type),a=(0,vn.normalizeStructTag)(o[0]),s=n.fields,l=s.config.fields,d=s.status.fields;return{coinType:a,autoClaim:s.auto_claim,balance:BigInt(s.balance.fields.balance),config:{amountPerEpoch:BigInt(l.amount_per_epoch),cancelable:l.cancelable,cliff:BigInt(l.cliff),creator:l.creator,epochInterval:BigInt(l.epoch_interval),metadata:l.metadata,recipient:l.recipient,timeStart:BigInt(l.time_start),totalEpoch:BigInt(l.total_epoch)},status:{status:d.status,epochCanceled:BigInt(d.epoch_canceled),epochClaimed:BigInt(d.epoch_claimed)}}}};var Je=class extends L{constructor(e,t){super(9,`Invalid stream group: ${e}`,{context:t})}};async function us(i){let e=[];for(;await i.hasNext();){let t=await i.next();e.push(t)}return e&&Array.isArray(e[0])?e.flat(1):e}var ls=class{constructor(e){this.requester=e;this.curPage=void 0,this.init=!0}curPage;init;async hasNext(){if(this.init)return this.curPage||(this.curPage=await this.requester.doNextRequest()),!!this.curPage.data?.length||this.curPage.hasNext;if(!this.curPage)throw new Error("invalid implementation of iterator");return this.curPage.hasNext}async next(){return this.init?(this.init=!1,this.curPage||(this.curPage=await this.requester.doNextRequest()),this.curPage.data):(this.curPage=await this.requester.doNextRequest(),this.curPage.data)}},Ye=class{constructor(e){this.requester=e;this.pager=new ls(e),this.curData=[],this.cursor=0}cursor;pager;curData;async hasNext(){return this.cursor<this.curData.length-1?!0:this.pager.hasNext()}async next(){for(this.cursor+=1;this.cursor>=this.curData.length;)if(await this.pager.hasNext())this.curData=await this.pager.next(),this.cursor=0;else throw new Error("not more data");return this.curData[this.cursor]}};var Ld=25;async function ps(i,e,t){let n=new An(e),o=new Mn(i,n,t);return await us(o)}var An=class{constructor(e){this.ids=e;this.cursor=-1}cursor;async hasNext(){return this.cursor<this.ids.length-1}async next(){if(this.cursor+=1,this.cursor>=this.ids.length)throw new Error("invalid iterator implementation");return this.ids[this.cursor]}},Mn=class extends Ye{constructor(t,n,o){super(new ms(t,n,o));this.suiClient=t;this.idIter=n;this.options=o}},ms=class{constructor(e,t,n){this.suiClient=e;this.stringIter=t;this.options=n;this.filter=n?.filter,this.pageSize=n?.pageSize||Ld,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}filter;pageSize;objectOptions;async doNextRequest(){let e=[];for(;e.length<this.pageSize&&await this.stringIter.hasNext();){let a=await this.stringIter.next();a&&e.push(a)}let t=await this.suiClient.multiGetObjects({ids:e,options:this.objectOptions}),n;if(this.filter){let{filter:o}=this;n=t.filter(a=>o?.(a))}else n=t;return{data:n,hasNext:await this.stringIter.hasNext()}}};var ia=class i{constructor(e,t){this.globals=e;this.streams=t;if(t.length===0)throw new Je("stream size 0");let n=t.map(a=>a.groupId);if(new Set(n).size!==1)throw new H("Stream does not have same group ID")}type="StreamGroup";static async new(e,t){let n=await ps(e.suiClient,t);return n.forEach(o=>{if(!o)throw new At("stream group object data undefined")}),i.newFromObjectResponse(e,t,n)}static async newFromObjectResponse(e,t,n){let o=await i.parseGroupStreams(e,t,n);return new i(e,o)}static checkStreamGroup(e){let t=e.map(a=>a.groupCommonInfo),n=t[0],o=!0;return t.forEach(a=>{jd(n,a)||(o=!1)}),o}async refresh(){let e=await ps(this.globals.suiClient,this.streams.map(t=>t.streamId));this.streams.forEach((t,n)=>{t.refreshWithData(e[n])})}get groupId(){return this.streams[0].groupId}get creator(){return this.streams[0].creator}get info(){return{groupId:this.groupId,streamIds:this.streams.map(e=>e.streamId),progress:this.progress,name:this.streams[0].name,creator:this.creator,coinType:this.streams[0].coinType,totalAmount:this.streams.reduce((e,t)=>e+t.totalAmount,0n),start:this.streams[0].timeStart,end:this.streams[0].timeEnd,cancelable:this.streams[0].cancelable,cliffAmount:this.streams.reduce((e,t)=>e+t.cliff,0n),duration:this.streams[0].duration,interval:this.streams[0].interval,steps:this.streams[0].totalSteps,nextReleaseAmount:this.streams.reduce((e,t)=>t.nextReleaseAmount===null?e:e+t.nextReleaseAmount,0n),nextReleaseDate:this.streams[0].nextReleaseDate}}get progress(){return{total:this.streams.reduce((e,t)=>e+t.totalAmount,0n),streamed:this.streams.reduce((e,t)=>e+t.streamedAmount,0n),claimed:this.streams.reduce((e,t)=>e+t.claimedAmount,0n),claimable:this.streams.reduce((e,t)=>e+t.claimable,0n),canceled:this.streams.reduce((e,t)=>e+t.canceledAmount,0n)}}async historyEvents(e){return this.globals.backend.getStreamHistory({groupId:this.groupId,pagination:e})}static async parseGroupStreams(e,t,n){let o=n.map((a,s)=>ye.fromObjectData(e,t[s],a)).filter(a=>!!a);if(new Set(o.map(a=>a.groupId)).size!==1)throw new Je("Not same group ID");if(!this.checkStreamGroup(o))throw new Je("Not same stream settings");return o}};function jd(i,e){return i.name===e.name&&i.groupId===e.groupId&&i.creator===e.creator&&i.start.toMillis()===e.start.toMillis()&&i.interval.toMillis()===e.interval.toMillis()&&i.steps===e.steps&&i.cancelable===e.cancelable}var On=class i{constructor(e,t){this.it=e;this.pageSize=t}static async newIncoming(e){let t=await ra.newIncoming(e);return new i(t,e.pageSize)}static async newOutgoing(e){let t=await ra.newOutgoing(e);return new i(t,e.pageSize)}async hasNext(){return this.it.hasNext()}async next(){let e=[];for(;e.length<this.pageSize&&await this.it.hasNext();)e.push(await this.it.next());return e}},ra=class i{constructor(e){this.requester=e}cachedNext;static async newIncoming(e){let t=await sa.newIncomingQuery(e);return new i(t)}static async newOutgoing(e){let t=await sa.newOutgoingQuery(e);return new i(t)}async hasNext(){return this.cachedNext===void 0&&(this.cachedNext=await this.requester.doNextRequest()),this.cachedNext!==null}async next(){if(this.cachedNext===void 0){let t=await this.requester.doNextRequest();if(t===null)throw new At("No more results");return t}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new At("No more results");return e}},sa=class i{constructor(e,t,n,o){this.globals=e;this.recipient=t;this.groupRefs=n;this.query=o;this.current=0;let a=new An(n.flat().map(s=>s.streamId));this.objectIter=new Mn(e.suiClient,a)}current=0;objectIter;static async newIncomingQuery(e){let t=$d(e.query),n=await e.globals.walletAddress(),a=(await e.globals.backend.getIncomingStreams(n,t)).filter(l=>(0,be.normalizeSuiAddress)(l.recipient)===(0,be.normalizeSuiAddress)(n)),s=pu(a);return new i(e.globals,n,s,e.query)}static async newOutgoingQuery(e){let t=Vd(e.query),n=await e.globals.walletAddress(),o=await e.globals.backend.getOutgoingStreams(n,t),a=pu(o);return new i(e.globals,n,a,e.query)}async doNextRequest(){if(this.current>=this.groupRefs.length)return null;let e=this.groupRefs[this.current];if(e.length===1){let t=await Fd(this.globals,e[0].streamId,this.objectIter);return this.current++,du(t,this.query)?t:this.doNextRequest()}if(e.length>1){let t=await Kd(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,qd(t,this.query)?t:this.doNextRequest()}throw new At("Stream group with no stream")}};function pu(i){let e=new Map;return i.forEach(t=>{let n=e.get(t.groupId);n?(n.push(t),e.set(t.groupId,n)):e.set(t.groupId,[t])}),Array.from(e.values()).sort((t,n)=>ds.DateTime.fromISO(n[0].createDate).toMillis()-ds.DateTime.fromISO(t[0].createDate).toMillis())}function du(i,e){if(e===void 0)return!0;let t=Ud(i,e.status);if(e&&"claimable"in e&&e.claimable!==void 0){let n=e.claimable?i.progress.claimable!==0n:i.progress.claimable===0n;return t&&n}return t}function Ud(i,e){return e===void 0?!0:Array.isArray(e)?e.includes(i.progress.status):i.progress.status===e}function qd(i,e){if(!e)return!0;let t=!1;return i.streams.forEach(n=>{du(n,e)&&(t=!0)}),t}async function Fd(i,e,t){let n=await fu(t,e);return ye.fromObjectData(i,e,n)}async function Kd(i,e,t){let n=[];for(;n.length<e.length;){let o=await fu(t,e[n.length]);n.push(o)}return ia.newFromObjectResponse(i,e,n)}async function fu(i,e){if(!await i.hasNext())throw new At("object iterator has been consumed");let t=await i.next();if(!t||t.error||t.data===void 0||t.data===null)throw new At("object iterator undefined response",{cause:t?.error});if(t?.data?.objectId!==e)throw new At("stream id not aligned");return t}function $d(i){return{status:fs(i?.status),coinType:hu(i?.coinType),sender:gu(i?.sender)}}function Vd(i){return{status:fs(i?.status),coinType:hu(i?.coinType),recipient:gu(i?.recipient)}}function fs(i){return i===void 0||i.length===0?"all":Array.isArray(i)?i.reduce((e,t)=>{let n=fs(t);return!e||e===n?n:"all"},void 0):Hd(i)}function Hd(i){switch(i){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new H("Unknown stream filtered status")}}function hu(i){if(i)return Array.isArray(i)?i.length!==0?i.map(e=>(0,be.normalizeStructTag)(e)):void 0:(0,be.normalizeStructTag)(i)}function gu(i){if(i)return Array.isArray(i)?i.length!==0?i.map(e=>(0,be.normalizeSuiAddress)(e)):void 0:(0,be.normalizeSuiAddress)(i)}var ca=class extends L{constructor(t,n,o){super(4,`Not enough balance: ${t}`,{context:{coinType:t,requestAmount:n,gotAmount:o}});this.coinType=t;this.requestAmount=n;this.gotAmount=o}};var Xd=25;async function yu(i,e,t,n="0x2::sui::SUI",o=Xd){let a=new hs(i,e,n,o),s=BigInt(0),l=[];for(;await a.hasNext()&&s<t;){let d=await a.next();d&&(l.push(d),s+=BigInt(d.balance))}if(s<t)throw new ca(n,t,s);return l}var hs=class extends Ye{constructor(t,n,o,a){super(new gs(t,n,o,a));this.suiClient=t;this.owner=n;this.coinType=o;this.reqPageSize=a}},gs=class{constructor(e,t,n,o){this.suiClient=e;this.owner=t;this.coinType=n;this.reqPageSize=o;if(o<=0)throw new At("Invalid reqPageSize")}nextCursor;async doNextRequest(){let e=await this.suiClient.getCoins({owner:this.owner,coinType:this.coinType,cursor:this.nextCursor,limit:this.reqPageSize});return this.nextCursor=e.nextCursor,{data:e.data,hasNext:e.hasNextPage}}};var ys=class{constructor(e){this.msafe=e}get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(e){return this.msafe.requestCoins(e)}},la=class{constructor(e){this.account=e}async address(){return this.account.address}},bs=class{constructor(e,t){this.singleWallet=e;this.suiClient=t}get type(){return"single"}async address(){return this.singleWallet.address()}async requestCoins(e){return Promise.all(e.map(t=>this.requestCoin(t)))}async requestCoin(e){if(Jo(e.coinType,Ee.SUI_TYPE_ARG))return{primaryCoin:Yo};if(e.amount<=0)throw new H("Invalid coin request","coinAmount",e.amount);let t=await yu(this.suiClient,await this.address(),e.amount,e.coinType);if(t.length===0)throw new At("no coins available");return{primaryCoin:t[0].coinObjectId,mergedCoins:t.slice(1).map(n=>n.coinObjectId)}}},ua=class{globals;helper;constructor(e,t){this.globals=He.new(e,t),this.helper=new ta(this.globals)}connectSingleWallet(e){let t=new bs(e,this.globals.suiClient);this.globals.connectWallet(t)}connectMSafeAccount(e){let t=new ys(e);this.globals.connectWallet(t)}async createStream(e){return this.builder().createStreams(e)}async getStream(e){return ye.new(this.globals,e)}async getIncomingStreams(e,t=10){return On.newIncoming({globals:this.globals,query:e,pageSize:t})}async getOutgoingStreams(e,t=10){return On.newOutgoing({globals:this.globals,query:e,pageSize:t})}async getCoinTypesForStreamFilter(){let e=await this.wallet.address();return(await this.globals.backend.getAllCoinTypes(e)).map(n=>(0,Ee.normalizeStructTag)(n))}async getRecipientsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllRecipients(t,e)).map(o=>(0,Ee.normalizeSuiAddress)(o))}async getCreatorsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllSenders(t,e)).map(o=>(0,Ee.normalizeSuiAddress)(o))}get wallet(){return this.globals.wallet}builder(){return new Ge(this.globals)}};var Kt=class extends _{application="mpay";getClient(e,t){let n=new ua(e==="sui:mainnet"?"prod":"dev");return n.connectSingleWallet(new la(t)),n}};var Pn=class extends Kt{constructor(t){super(t);this.data=t}txType=bu.TransactionType.Stream;txSubType="Cancel";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).cancel()}};var Su=require("@msafe/sui3-utils");var Rn=class extends Kt{constructor(t){super(t);this.data=t}txType=Su.TransactionType.Stream;txSubType="ClaimByProxy";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).claimByProxy()}};var Tu=require("@msafe/sui3-utils");var Bn=class extends Kt{constructor(t){super(t);this.data=t}txType=Tu.TransactionType.Stream;txSubType="Claim";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).claim()}};var Iu=require("@msafe/sui3-utils");var En=class extends Kt{constructor(t){super(t);this.data=t}txType=Iu.TransactionType.Stream;txSubType="CreateStream";async build(t){let{network:n,account:o}=t;return this.getClient(n,o).createStream(this.data)}};var Ss=require("@mysten/sui.js/bcs"),Se=require("@mysten/sui.js/utils"),Ze=class i{constructor(e,t){this.moveCall=e;this.txb=t}decodeSharedObjectId(e){let t=this.getInputParam(e);return i.getSharedObjectId(t)}decodeOwnedObjectId(e){let t=this.getInputParam(e);return i.getOwnedObjectId(t)}decodeInputU64(e){let t=this.decodePureArg(e,"u64");return BigInt(t)}decodeInputAddress(e){let t=this.decodePureArg(e,"address");return(0,Se.normalizeSuiAddress)(t)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,t){let n=this.getInputParam(e);return i.getPureInputValue(n,t)}getInputParam(e){let t=this.moveCall.arguments[e];if(t.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[t.index]}static getPureInputValue(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return Ss.bcs.de(t,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Se.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Se.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Se.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Se.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return Ss.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,Se.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var ma=class{constructor(e,t){this.globals=e;this.txb=t}decode(){let e=this.decodeCreateStreamInfo(),t=this.createStreamHelper().calculateCreateStreamFees(e);return{type:"CreateStream",info:e,fees:t}}decodeCreateStreamInfo(){let t=this.createStreamTransactions().map(n=>this.getCreationInfoFromMoveCall(n));return this.aggregateGroupStreamInfo(t)}createStreamTransactions(){let e=this.transactions.filter(t=>t.kind==="MoveCall"&&ge(t.target,this.contract.createStreamTarget));if(e.length===0)throw new At("No create stream transactions");return e.map(t=>new Ze(t,this.txb))}getCreationInfoFromMoveCall(e){let t=e.decodeInputString(4),{name:n,groupId:o}=Tn(t),a=e.decodeInputAddress(5),s=e.decodeInputU64(6),l=e.decodeInputU64(7),d=e.decodeInputU64(8),b=e.decodeInputU64(9),T=e.decodeInputU64(10),w=e.decodeInputBool(11),k=e.typeArg(0);return{name:n,groupId:o,recipient:a,timeStart:s,cliff:l,epochInterval:d,totalEpoch:b,amountPerEpoch:T,cancelable:w,coinType:k}}aggregateGroupStreamInfo(e){if(new Set(e.map(o=>JSON.stringify({name:o.name,groupId:o.groupId,timeStart:String(o.timeStart),epochInterval:String(o.epochInterval),totalEpoch:String(o.totalEpoch),cancelable:o.cancelable,coinType:o.coinType}))).size!==1)throw new H("Stream group not have common info");let n=e.map(o=>({address:o.recipient,amountPerStep:o.amountPerEpoch,cliffAmount:o.cliff}));return{name:e[0].name,coinType:e[0].coinType,recipients:n,interval:e[0].epochInterval,steps:e[0].totalEpoch,startTimeMs:e[0].timeStart,cancelable:e[0].cancelable}}mergeCoinTransactions(){return this.transactions.filter(e=>e.kind==="MergeCoins")}get transactions(){return this.txb.blockData.transactions}get contract(){return new te(this.globals.envConfig.contract,this.globals)}get feeContract(){return new ze(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new Be(this.globals,this.feeContract,this.contract)}getInputArg(e){if(e.kind!=="Input")throw new Error("not input type");return"value"in e?e:this.txb.blockData.inputs[e.index]}};var pa=class{constructor(e,t){this.globals=e;this.txb=t;this.contract=new te(e.envConfig.contract,e)}contract;decode(){if(this.isCreateStreamTransaction())return this.decodeCreateStreamTransaction();if(this.isClaimByProxyTransaction())return this.decodeClaimByProxyTransaction();if(this.isSetAutoClaimTransaction())return this.decodeSetAutoClaimTransaction();if(this.isCancelStreamTransaction())return this.decodeCancelStreamTransaction();if(this.isClaimStreamTransaction())return this.decodeClaimTransaction();throw new Error("Unknown stream transaction type")}get transactions(){return this.txb.blockData.transactions}isCreateStreamTransaction(){return this.transactions.findIndex(t=>t.kind==="MoveCall"&&ge(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ge(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ge(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ge(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ge(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new ma(this.globals,this.txb).decode()}decodeSetAutoClaimTransaction(){let e=this.helper.decodeSharedObjectId(0),t=this.helper.decodeInputBool(1);return{type:"SetAutoClaim",streamId:e,enabled:t}}decodeClaimTransaction(){let e=this.helper.decodeSharedObjectId(0);return{type:"Claim",streamId:e}}decodeClaimByProxyTransaction(){let e=this.helper.decodeSharedObjectId(0);return{type:"ClaimByProxy",streamId:e}}decodeCancelStreamTransaction(){let e=this.helper.decodeSharedObjectId(0);return{type:"Cancel",streamId:e}}get helper(){let e=this.transactions[0];return new Ze(e,this.txb)}};var wu=require("@msafe/sui3-utils");var Nn=class extends Kt{constructor(t){super(t);this.data=t}txType=wu.TransactionType.Stream;txSubType="SetAutoClaim";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).setAutoClaim(this.data.enabled)}};var da=class{application="mpay";supportSDK="@mysten/sui.js";async deserialize(e){let{network:t,transactionBlock:n}=e,o=He.new(t==="sui:mainnet"?"prod":"dev"),s=new pa(o,n).decode(),l;switch(s.type){case"CreateStream":l=new En(s.info);break;case"SetAutoClaim":l=new Nn({streamId:s.streamId,enabled:s.enabled});break;case"Claim":l=new Bn({streamId:s.streamId});break;case"ClaimByProxy":l=new Rn({streamId:s.streamId});break;case"Cancel":l=new Pn({streamId:s.streamId});break;default:throw new Error(`Unknown transaction type: ${s}`)}return{txType:l.txType,txSubType:l.txSubType,intentionData:l.data}}async build(e){let{intentionData:t}=e,n;switch(e.txSubType){case"CreateStream":n=new En(t);break;case"Claim":n=new Bn(t);break;case"ClaimByProxy":n=new Rn(t);break;case"SetAutoClaim":n=new Nn(t);break;case"Cancel":n=new Pn(t);break;default:throw new Error("not implemented")}return n.build({...e})}};var Wn=require("@msafe/sui3-utils");var Cu=require("@msafe/sui3-utils");var fa=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t;return(0,Cu.buildCoinTransferTxb)(n,this.data,o.address)}static fromData(t){return new i(t)}};var ku=require("@msafe/sui3-utils");var ha=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t;return(0,ku.buildObjectTransferTxb)(n,this.data,o.address)}static fromData(t){return new i(t)}};var ga=class{application="msafe-core";supportSDK="@mysten/sui.js";constructor(){this.application=Wn.TransactionDefaultApplication}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(e){let{suiClient:t,account:n}=e,o;switch(e.txSubType){case Wn.TransactionSubTypes.assets.coin.send:o=fa.fromData(e.intentionData);break;case Wn.TransactionSubTypes.assets.object.send:o=ha.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var Wu=require("@msafe/sui3-utils");var xu=!1,_n={ProtocolPackage:"0x81c408448d0d57b3e371ea94de1d40bf852784d3e225de1e74acab3e8395c18f",StorageId:"0xbb4e2f4b6205c2e2a2db47aeb4f830796ec7c005f88537ee775986639bc442fe",Incentive:"0xaaf735bf83ff564e1b219a0d644de894ef5bdc4b2250b126b2a46dd002331821",IncentiveV2:"0xf87a8acb8b81d14307894d12595541a73f19933f88e1326d5be349c7a6f7559c",gasBudget:5e7,PriceOracle:"0x1568865ed9a0b5ec414220e8f79b3d04c77acc82358f6e5ae4635687392ffbef",ReserveParentId:"0xe6d4c6610b86ce7735ea754596d71d72d10c7980b5052fc3c8cdf8d09fea9b4b",pool:{sui:{name:"SUI",assetId:0,poolId:"0x96df0fce3c471489f4debaaa762cf960b3d97820bd1f3f025ff8190730e958c5",fondPoolId:"0xf975bc2d4cca10e3ace8887e20afd77b46c383b4465eac694c4688344955dea4",type:"0x2::sui::SUI",coinType:"sui",reserveObjectId:"0xab644b5fd11aa11e930d1c7bc903ef609a9feaf9ffe1b23532ad8441854fbfaf",borrowBalanceParentId:"0xe7ff0daa9d090727210abe6a8b6c0c5cd483f3692a10610386e4dc9c57871ba7",supplyBalanceParentId:"0x589c83af4b035a3bc64c40d9011397b539b97ea47edf7be8f33d643606bf96f8"},wusdc:{name:"wUSDC",assetId:1,coinType:"wusdc",poolId:"0xa02a98f9c88db51c6f5efaaf2261c81f34dd56d86073387e0ef1805ca22e39c8",type:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",reserveObjectId:"0xeb3903f7748ace73429bd52a70fff278aac1725d3b58afa781f25ce3450ac203",borrowBalanceParentId:"0x8a3aaa817a811131c624658f6e77cba04ab5829293d2c49c1a9cce8ac9c8dec4",supplyBalanceParentId:"0x8d0a4467806458052d577c8cd2be6031e972f2b8f5f77fce98aa12cd85330da9"},usdt:{name:"USDT",coinType:"usdt",assetId:2,poolId:"0x0e060c3b5b8de00fb50511b7a45188c8e34b6995c01f69d98ea5a466fe10d103",type:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN",reserveObjectId:"0xb8c5eab02a0202f638958cc79a69a2d30055565caad1684b3c8bbca3bddcb322",borrowBalanceParentId:"0xc14d8292a7d69ae31164bafab7ca8a5bfda11f998540fe976a674ed0673e448f",supplyBalanceParentId:"0x7e2a49ff9d2edd875f82b76a9b21e2a5a098e7130abfd510a203b6ea08ab9257"},weth:{name:"WETH",coinType:"weth",assetId:3,poolId:"0x71b9f6e822c48ce827bceadce82201d6a7559f7b0350ed1daa1dc2ba3ac41b56",type:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN",reserveObjectId:"0xafecf4b57899d377cc8c9de75854c68925d9f512d0c47150ca52a0d3a442b735",borrowBalanceParentId:"0x7568d06a1b6ffc416a36c82791e3daf0e621cf19d4a2724fc6f74842661b6323",supplyBalanceParentId:"0xa668905b1ad445a3159b4d29b1181c4a62d864861b463dd9106cc0d97ffe8f7f"},cetus:{name:"CETUS",coinType:"cetus",assetId:4,poolId:"0x3c376f857ec4247b8ee456c1db19e9c74e0154d4876915e54221b5052d5b1e2e",type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS",reserveObjectId:"0x66a807c06212537fe46aa6719a00e4fa1e85a932d0b53ce7c4b1041983645133",borrowBalanceParentId:"0x4c3da45ffff6432b4592a39cdb3ce12f4a28034cbcb804bb071facc81fdd923d",supplyBalanceParentId:"0x6adc72faf2a9a15a583c9fb04f457c6a5f0b456bc9b4832413a131dfd4faddae"},voloSui:{name:"VoloSui",coinType:"voloSui",assetId:5,poolId:"0x9790c2c272e15b6bf9b341eb531ef16bcc8ed2b20dfda25d060bf47f5dd88d01",fondPoolId:"0xe2b5ada45273676e0da8ae10f8fe079a7cec3d0f59187d3d20b1549c275b07ea",type:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",reserveObjectId:"0xd4fd7e094af9819b06ea3136c13a6ae8da184016b78cf19773ac26d2095793e2",borrowBalanceParentId:"0x8fa5eccbca2c4ba9aae3b87fd44aa75aa5f5b41ea2d9be4d5321379384974984",supplyBalanceParentId:"0xe6457d247b6661b1cac123351998f88f3e724ff6e9ea542127b5dcb3176b3841"},haSui:{name:"HaedalSui",coinType:"haSui",assetId:6,poolId:"0x6fd9cb6ebd76bc80340a9443d72ea0ae282ee20e2fd7544f6ffcd2c070d9557a",fondPoolId:"0xa20e18085ce04be8aa722fbe85423f1ad6b1ae3b1be81ffac00a30f1d6d6ab51",type:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",reserveObjectId:"0x0c9f7a6ca561dc566bd75744bcc71a6af1dc3caf7bd32c099cd640bb5f3bb0e3",borrowBalanceParentId:"0x01f36898e020be6c3423e5c95d9f348868813cd4d0be39b0c8df9d8de4722b00",supplyBalanceParentId:"0x278b8e3d09c3548c60c51ed2f8eed281876ea58c392f71b7ff650cc9286d095b"},navx:{name:"NAVX",coinType:"navx",assetId:7,poolId:"0xc0e02e7a245e855dd365422faf76f87d9f5b2148a26d48dda6e8253c3fe9fa60",fondPoolId:"0x9dae0cf104a193217904f88a48ce2cf0221e8cd9073878edd05101d6b771fa09",type:"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX",reserveObjectId:"0x2e13b2f1f714c0c5fa72264f147ef7632b48ec2501f810c07df3ccb59d6fdc81",borrowBalanceParentId:"0xa5bf13075aa400cbdd4690a617c5f008e1fae0511dcd4f7121f09817df6c8d8b",supplyBalanceParentId:"0x59dedca8dc44e8df50b190f8b5fe673098c1273ac6168c0a4addf3613afcdee5"},wbtc:{name:"WBTC",coinType:"wbtc",assetId:8,poolId:"0xd162cbe40f8829ce71c9b3d3bf3a83859689a79fa220b23d70dc0300b777ae6e",type:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN",reserveObjectId:"0x8b4d81f004e4e9faf4540951a896b6d96e42598a270e6375f598b99742db767e",borrowBalanceParentId:"0x55e1f3c9e6e5cf9fff563bdd61db07a3826458c56ef72c455e049ab3b1b0e99c",supplyBalanceParentId:"0x821e505a0091b089edba94deaa14c2f2230d026bbaa7b85680554441aad447e0"},ausd:{name:"AUSD",coinType:"ausd",assetId:9,poolId:"0xc9208c1e75f990b2c814fa3a45f1bf0e85bb78404cfdb2ae6bb97de58bb30932",type:"0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD",reserveObjectId:"0x918889c6a9d9b93108531d4d59a4ebb9cc4d41689798ffc1d4aed6e1ae816ec0",borrowBalanceParentId:"0x551300b9441c9a3a16ca1d7972c1dbb4715e15004ccd5f001b2c2eee22fd92c1",supplyBalanceParentId:"0xe151af690355de8be1c0281fbd0d483c099ea51920a57c4bf8c9666fd36808fd"},nusdc:{name:"USDC",assetId:10,coinType:"nusdc",poolId:"0xa3582097b4c57630046c0c49a88bfc6b202a3ec0a9db5597c31765f7563755a8",type:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",reserveObjectId:"0x4c8a2c72a22ae8da803a8519798d312c86e74a9e0d6ec0eec2bfcf7e4b3fef5e",borrowBalanceParentId:"0xb0b0c7470e96cabbb4f1e8d06bef2fbea65f4dbac52afae8635d9286b1ea9a09",supplyBalanceParentId:"0x08b5ce8574ac3bc9327e66ad5decd34d07ee798f724ad01058e8855ac9acb605"},eth:{name:"ETH",assetId:11,coinType:"eth",poolId:"0x78ba01c21d8301be15690d3c30dc9f111871e38cfb0b2dd4b70cc6052fba41bb",type:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH",reserveObjectId:"0x376faea6dfbffab9ea808474cb751d91222b6d664f38c0f1d23de442a8edb1ce",borrowBalanceParentId:"0xf0c6ce5cfaee96073876a5fab7426043f3a798b79502c4caeb6d9772cd35af1f",supplyBalanceParentId:"0xc0a0cb43620eb8a84d5a4a50a85650e7fa7ba81e660f9cc2863404fd84591d4b"},usdy:{name:"USDY",assetId:12,coinType:"usdy",poolId:"0x4b6253a9f8cf7f5d31e6d04aed4046b9e325a1681d34e0eff11a8441525d4563",type:"0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY",reserveObjectId:"",borrowBalanceParentId:"",supplyBalanceParentId:""}},borrowFee:.003,borrowFeeAddress:"0x70b9b10704263cf53392849e33b1f5fd16005869b4198ed5524836bad1234ea2"};async function Ts(){if(!xu)try{let i=await fetch("https://open-api.naviprotocol.io/api/msafe").then(a=>a.json()),{packageId:e,borrowFee:t,borrowFeeAddress:n,pool:o}=i;e&&(_n.ProtocolPackage=e),t&&(_n.borrowFee=t),n&&(_n.borrowFeeAddress=n),o&&(_n.pool=o),xu=!0}catch(i){console.error(i.message)}}var Xt=_n;var Te=require("@msafe/sui3-utils"),Is=require("@mysten/sui.js/bcs"),Ie=require("@mysten/sui.js/utils");var ya=class{constructor(e){this.txb=e}decode(){if(console.log("txb",this.txb),this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isEntryBorrowTransaction())return this.decodeEntryBorrow();if(this.isEntryBorrowWithFeeTransaction())return this.decodeEntryBorrow();if(this.isEntryMultiDepositTransaction())return this.decodeEntryMultiDeposit();if(this.isEntryDepositTransaction())return this.decodeEntryDeposit();if(this.isEntryRepayTransaction())return this.decodeEntryRepay();if(this.isEntryWithdrawTransaction())return this.decodeEntryWithdraw();if(this.isEntryClaimAndDepositTransaction())return this.decodeEntryClaimAndDeposit();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(e){return this.transactions.find(t=>t.kind==="MoveCall"&&t.target===e)}isClaimRewardTransaction(){return!!this.transactions.find(t=>!!(t.kind==="MoveCall"&&t.target.includes("claim_reward")))}isEntryBorrowTransaction(){return!!this.getMoveCallTransaction(`${Xt.ProtocolPackage}::incentive_v3::entry_borrow`)}isEntryBorrowWithFeeTransaction(){return!!this.getMoveCallTransaction(`${Xt.ProtocolPackage}::incentive_v3::borrow`)}isEntryMultiDepositTransaction(){let e=`${Xt.ProtocolPackage}::incentive_v3::entry_deposit`,t=this.transactions.filter(o=>o.kind==="MoveCall"&&o.target===e);return this.transactions.find(o=>o.kind==="MoveCall"&&o.target.includes("claim_reward"))?!1:t.length>1}isEntryClaimAndDepositTransaction(){let e=`${Xt.ProtocolPackage}::incentive_v3::entry_deposit`,t=this.transactions.filter(o=>o.kind==="MoveCall"&&o.target===e);return!!(this.transactions.find(o=>o.kind==="MoveCall"&&o.target.includes("claim_reward"))&&t.length>0)}isEntryDepositTransaction(){return!!this.getMoveCallTransaction(`${Xt.ProtocolPackage}::incentive_v3::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${Xt.ProtocolPackage}::incentive_v3::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${Xt.ProtocolPackage}::incentive_v3::withdraw`)}findPoolByAssetId(e){let t=Object.values(Xt.pool).find(n=>n.assetId===e);if(!t)throw new Error("Pool not found");return t}decodeEntryClaimAndDeposit(){return{txType:Te.TransactionType.Other,type:"EntryClaimAndDeposit",intentionData:{type:"entry_claim_and_deposit"}}}decodeClaimReward(){return console.log("decode claims"),{txType:Te.TransactionType.Other,type:"ClaimReward",intentionData:{type:"claim_reward"}}}decodeEntryBorrow(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:Te.TransactionType.Other,type:"EntryBorrow",intentionData:{amount:t,assetId:e}}}decodeEntryMultiDeposit(){let e=[],t=`${Xt.ProtocolPackage}::incentive_v3::entry_deposit`;return this.transactions.forEach(n=>{if(n.kind==="MoveCall"&&n.target===t){let o=new ba(n,this.txb),a=o.decodeInputU8(3),s=o.decodeInputU64(5);e.push({assetId:a,amount:s})}}),{txType:Te.TransactionType.Other,type:"EntryMultiDeposit",intentionData:{list:e}}}decodeEntryDeposit(){let e=this.helper.decodeInputU8(3),t=this.helper.decodeInputU64(5);return{txType:Te.TransactionType.Other,type:"EntryDeposit",intentionData:{amount:t,assetId:e}}}decodeEntryRepay(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(6);return{txType:Te.TransactionType.Other,type:"EntryRepay",intentionData:{amount:t,assetId:e}}}decodeEntryWithdraw(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:Te.TransactionType.Other,type:"EntryWithdraw",intentionData:{amount:t,assetId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(Xt.ProtocolPackage));return new ba(e,this.txb)}},ba=class i{constructor(e,t){this.moveCall=e;this.txb=t}decodeSharedObjectId(e){let t=this.getInputParam(e);return i.getSharedObjectId(t)}decodeOwnedObjectId(e){let t=this.getInputParam(e);return i.getOwnedObjectId(t)}decodeInputU64(e){let t=this.decodePureArg(e,"u64");return Number(t)}decodeInputU8(e){let t=this.decodePureArg(e,"u8");return Number(t)}decodeInputAddress(e){let t=this.decodePureArg(e,"address");return(0,Ie.normalizeSuiAddress)(t)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,t){let n=this.getInputParam(e);return i.getPureInputValue(n,t)}getInputParam(e){let t=this.moveCall.arguments[e];if(t.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[t.index]}static getPureInputValue(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return Is.bcs.de(t,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Ie.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Ie.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Ie.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Ie.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return Is.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,Ie.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var $t=require("navi-sdk");async function tn(i,e,t,n){return await(0,$t.depositCoin)(i,e,t,n),i}async function Du(i,e,t,n){let[o]=await(0,$t.withdrawCoin)(i,e,t);return i.transferObjects([o],i.pure(n)),i}async function vu(i,e,t,n){let[o]=await(0,$t.borrowCoin)(i,e,t);return i.transferObjects([o],i.pure.address(n)),i}async function ws(i,e,t,n){return await(0,$t.repayDebt)(i,e,t,n),i}async function Au(i,e){return await(0,$t.claimAllRewardsPTB)(i,e)}async function Mu(i,e){return await(0,$t.claimAllRewardsResupplyPTB)(i,e)}var Sa=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{type:n}=this.data;return console.log("claim reward",n),await Au(t.suiClient,t.account.address)}static fromData(t){return new i(t)}};var Ta=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{type:n}=this.data;return console.log("claim reward and supply",n),await Mu(t.suiClient,t.account.address)}static fromData(t){return new i(t)}};var Pu=require("@mysten/sui.js/transactions");var Ou=require("navi-sdk");function ee(i){return Object.values(Ou.pool).find(e=>String(e.assetId)===String(i))}var Ia=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,a=new Pu.TransactionBlock;console.log("build",this.data);let s=ee(n);return await vu(a,s,o,t.account.address)}static fromData(t){return new i(t)}};var Ru=require("@mysten/sui.js/transactions");async function en(i,e,t){let n=await i.getCoins({owner:e,coinType:t});return console.log("getTokenObjs",e,n),n}var wa=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{assetId:a,amount:s}=this.data,l=new Ru.TransactionBlock;console.log("build",this.data);let d=ee(a);if(a===0){let[k]=l.splitCoins(l.gas,[s]);return await tn(l,d,k,s)}let b=await en(n,o.address,d.type);if(!b.data[0])throw new Error(`Insufficient balance for ${d.name} Token`);let T=b.data[0].coinObjectId;if(b.data.length>=2){let k=1;for(;k<b.data.length;)l.mergeCoins(T,[b.data[k].coinObjectId]),k++}return await tn(l,d,l.object(T),s)}static fromData(t){return new i(t)}};var Bu=require("@mysten/sui.js/transactions");var Ca=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{assetId:a,amount:s}=this.data,l=new Bu.TransactionBlock;console.log("build",this.data);let d=ee(a);if(a===0){let[w]=l.splitCoins(l.gas,[s]);return ws(l,d,w,s)}let b=await en(n,o.address,d.type);if(!b.data[0])throw new Error(`Insufficient balance for ${d.name} Token`);let T=b.data[0].coinObjectId;if(b.data.length>=2){let w=1;for(;w<b.data.length;)l.mergeCoins(T,[b.data[w].coinObjectId]),w++}return ws(l,d,l.object(T),s)}static fromData(t){return new i(t)}};var Eu=require("@mysten/sui.js/transactions");var ka=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,a=new Eu.TransactionBlock;console.log("build",this.data);let s=ee(n);return await Du(a,s,o,t.account.address)}static fromData(t){return new i(t)}};var Nu=require("@mysten/sui.js/transactions");var xa=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{list:a}=this.data,s=new Nu.TransactionBlock;console.log("build",this.data);for(let l=0;l<a.length;l++){let{assetId:d,amount:b}=a[l],T=ee(d);if(d===0){let[x]=s.splitCoins(s.gas,[b]);await tn(s,T,x,b);continue}let w=await en(n,o.address,T.type);if(!w.data[0])throw new Error(`Insufficient balance for ${T.name} Token`);let k=w.data[0].coinObjectId;if(w.data.length>=2){let x=1;for(;x<w.data.length;)s.mergeCoins(k,[w.data[x].coinObjectId]),x++}await tn(s,T,s.object(k),b)}return s}static fromData(t){return new i(t)}};var Da=class{application="navi";supportSDK="@mysten/sui.js";async deserialize(e){await Ts();let{transactionBlock:t}=e,o=new ya(t).decode();return{txType:Wu.TransactionType.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(await Ts(),e.txSubType){case"EntryDeposit":o=wa.fromData(e.intentionData);break;case"EntryBorrow":o=Ia.fromData(e.intentionData);break;case"EntryRepay":o=Ca.fromData(e.intentionData);break;case"EntryWithdraw":o=ka.fromData(e.intentionData);break;case"EntryMultiDeposit":o=xa.fromData(e.intentionData);break;case"ClaimReward":o=Sa.fromData(e.intentionData);break;case"EntryClaimAndDeposit":o=Ta.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var Ln=require("@msafe/sui3-utils"),_u=require("@mysten/bcs"),Lu=require("@mysten/sui/transactions"),ju=Ut(require("sort-keys-recursive")),Uu="msafe-plain-tx",qu=Ln.TransactionSubTypes.others.plain,Cs=class i{constructor(e){this.data=e}application=Uu;txType=Ln.TransactionType.Other;txSubType=qu;serialize(){return JSON.stringify((0,ju.default)(this.data))}async build(e){return Lu.Transaction.from((0,_u.fromHex)(this.data.content))}static fromData(e){return new i(e)}},va=class{application;supportSDK="@mysten/sui";constructor(){this.application=Uu}async deserialize(e){let{content:t}=e.appContext;return{txType:Ln.TransactionType.Other,txSubType:qu,intentionData:{content:t}}}async build(e){let{suiClient:t,network:n,account:o}=e;return Cs.fromData(e.intentionData).build({suiClient:t,network:n,account:o})}};var Ds=require("@mysten/sui/client"),Fu=require("@mysten/sui/transactions"),Oa=require("@mysten/sui.js/client"),Ku=require("@mysten/sui.js/transactions");var nn=require("@open-rpc/client-js");var Qd={"-32700":"ParseError","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError"},ks=class extends Error{},Aa=class extends ks{code;type;constructor(e,t){super(e),this.code=t,this.type=Qd[t]??"ServerError"}};function Jd(i){let e=new URL(i);return e.protocol=e.protocol.replace("http","ws"),e.toString()}var Yd={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},Ma=class{endpoint;options;#n=0;#a=0;#t=null;#e=null;#i=new Set;#o=new Map;constructor(e,t={}){this.endpoint=e,this.options={...Yd,...t},this.endpoint&&this.endpoint.startsWith("http")&&(this.endpoint=Jd(this.endpoint))}async makeRequest(e,t){let n=await this.#r();return new Promise((o,a)=>{this.#n+=1,this.#o.set(this.#n,{resolve:o,reject:a,timeout:setTimeout(()=>{this.#o.delete(this.#n),a(new Error(`Request timeout: ${e}`))},this.options.callTimeout)}),n.send(JSON.stringify({jsonrpc:"2.0",id:this.#n,method:e,params:t}))}).then(({error:o,result:a})=>{if(o)throw new Aa(o.message,o.code);return a})}#r(){return this.#e?this.#e:(this.#e=new Promise(e=>{this.#t?.close(),this.#t=new this.options.WebSocketConstructor(this.endpoint),this.#t.addEventListener("open",()=>{this.#a=0,e(this.#t)}),this.#t.addEventListener("close",()=>{this.#a++,this.#a<=this.options.maxReconnects&&setTimeout(()=>{this.#s()},this.options.reconnectTimeout)}),this.#t.addEventListener("message",({data:t})=>{let n;try{n=JSON.parse(t)}catch(o){console.error(new Error(`Failed to parse RPC message: ${t}`,{cause:o}));return}if("id"in n&&n.id!=null&&this.#o.has(n.id)){let{resolve:o,timeout:a}=this.#o.get(n.id);clearTimeout(a),o(n)}else if("params"in n){let{params:o}=n;this.#i.forEach(a=>{a.subscriptionId===o.subscription&&o.subscription===a.subscriptionId&&a.onMessage(o.result)})}})}),this.#e)}async#s(){return this.#t?.close(),this.#e=null,Promise.allSettled([...this.#i].map(e=>e.subscribe(this)))}async subscribe(e){let t=new xs(e);return this.#i.add(t),await t.subscribe(this),()=>t.unsubscribe(this)}},xs=class{subscriptionId=null;input;subscribed=!1;constructor(e){this.input=e}onMessage(e){this.subscribed&&this.input.onMessage(e)}async unsubscribe(e){let{subscriptionId:t}=this;return this.subscribed=!1,t==null?!1:(this.subscriptionId=null,e.makeRequest(this.input.unsubscribe,[t]))}async subscribe(e){this.subscriptionId=null,this.subscribed=!0;let t=await e.makeRequest(this.input.method,this.input.params);this.subscribed&&(this.subscriptionId=t)}};var we=class{rpcClient;websocketClient;constructor({url:e,websocket:{url:t,...n}={},rpc:o}){let a=new nn.HTTPTransport(o?.url??e,{headers:{"Content-Type":"application/json",...o?.headers}});this.rpcClient=new nn.Client(new nn.RequestManager([a])),this.websocketClient=new Ma(t??e,n)}async request(e){return await this.rpcClient.request(e)}async subscribe(e){let t=await this.websocketClient.subscribe(e);return async()=>!!await t()}};var Pa=class i{apps;constructor(){this.apps=new Map}static fromHelpers(e){let t=new i;for(let n=0;n<e.length;n++){let o=e[n];switch(o.supportSDK){case"@mysten/sui.js":t.addLegacyHelper(o);break;case"@mysten/sui":t.addHelper(o);break;default:throw new Error(`${o.application}: ${o.supportSDK} SDK not supported`)}}return t}addLegacyHelper(e){this.apps.set(e.application,new As(e))}addHelper(e){this.apps.set(e.application,new vs(e))}getAppHelper(e){let t=this.apps.get(e);if(!t)throw new Error(`${e} not registered`);return t}},vs=class{constructor(e){this.helper=e}async deserialize(e){let t=new Ds.SuiClient({transport:new we({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=new Oa.SuiClient({transport:new we({url:e.clientUrl,rpc:{url:e.clientUrl}})}),o=await e.transactionBlock.build({client:n}),a=Fu.Transaction.from(o);return this.helper.deserialize({...e,suiClient:t,transaction:a})}async build(e){let t=new Ds.SuiClient({transport:new we({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<1e8)throw new Error("Insufficient gas fee");let o=await this.helper.build({...e,suiClient:t});o.setSender(e.account.address);let a=await o.build({client:t});return Ku.TransactionBlock.from(a)}},As=class{constructor(e){this.helper=e}async deserialize(e){let t=new Oa.SuiClient({transport:new we({url:e.clientUrl,rpc:{url:e.clientUrl}})});return this.helper.deserialize({...e,transactionBlock:e.transactionBlock,suiClient:t})}async build(e){let t=new Oa.SuiClient({transport:new we({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<1e8)throw new Error("Insufficient gas fee");return this.helper.build({...e,suiClient:t})}};var Zu=require("@msafe/sui3-utils"),tm=require("@mysten/sui/client"),em=require("@scallop-io/sui-scallop-sdk");var Mt=require("@msafe/sui3-utils"),Ps=require("@scallop-io/sui-scallop-sdk");var $u=require("@mysten/sui/utils"),Ce=class{constructor(e,t){this.transaction=e;this.scallopClient=t;this.scallopClient=t,this.inputs=e.getData().inputs,this.commands=e.getData().commands,this.movecallsAsSet=new Set(this.commands.filter(this.isMoveCall).map(n=>`${n.MoveCall.package}::${n.MoveCall.module}::${n.MoveCall.function}`))}inputs;commands;movecallsAsSet;get address(){return this.scallopClient.address}get utils(){return this.scallopClient.utils}get coreId(){return{protocolPkg:this.address.get("core.packages.protocol.id"),market:this.address.get("core.market"),version:this.address.get("core.version"),coinDecimalsRegistry:this.address.get("core.coinDecimalsRegistry"),xOracle:this.address.get("core.oracles.xOracle"),spoolPkg:this.address.get("spool.id"),borrowIncentivePkg:this.address.get("borrowIncentive.id"),veScaPkgId:this.address.get("vesca.id"),veScaObjId:this.address.get("vesca.object"),scoin:this.address.get("scoin.id"),referral:this.address.get("referral.id")}}matchMoveCallCommand(e,t){let{address:n,module:o,name:a}=(0,$u.parseStructTag)(t);return e?e.package===n&&e.module===o&&e.function===a:!1}isMoveCall(e){return e.$kind==="MoveCall"&&!!e.MoveCall}filterMoveCallCommands(e,t){return this.isMoveCall(e)&&this.matchMoveCallCommand(e.MoveCall,t)}getMoveCallCommands(e){let t=new Set(e),n=e.reduce((a,s,l)=>(a[s]=l,a),{}),o=[];return this.commands.forEach(a=>{this.isMoveCall(a)&&a.MoveCall&&t.has(a.MoveCall.package)&&(o[n[a.MoveCall.package]]=a.MoveCall)}),o}hasMoveCallCommand(e){return this.movecallsAsSet.has(e)}};var Ra=require("@mysten/sui/bcs"),ke=require("@mysten/sui/utils"),Ms=class i{constructor(e,t,n=0){this.moveCall=e;this.transaction=t;let o=[];e?.MoveCall&&t.getData().commands.filter((a,s)=>{if(a.$kind==="MoveCall"){let l=`${a.MoveCall.package}::${a.MoveCall.module}::${a.MoveCall.function}`,d=`${e.MoveCall.package}::${e.MoveCall.module}::${e.MoveCall.function}`;return l===d?(o.push(s),!0):!1}return!1}),this.cmdIdx=o[n]}cmdIdx;get txBlockTransactions(){return this.transaction.blockData.transactions[this.cmdIdx]}decodeSharedObjectId(e){let t=this.getInputParam(e);return i.getSharedObjectId(t)}decodeOwnedObjectId(e){let t=this.getInputParam(e);return i.getOwnedObjectId(t)}decodeInputU64(e){let t=this.decodePureArg(e,"U64");return Number(t)}decodeInputU8(e){let t=this.decodePureArg(e,"U8");return Number(t)}decodeInputAddress(e){let t=this.decodePureArg(e,"Address");return(0,ke.normalizeSuiAddress)(t)}decodeInputString(e){return this.decodePureArg(e,"String")}decodeInputBool(e){return this.decodePureArg(e,"Bool")}decodePureArg(e,t){let n=this.getInputParam(e);return i.getPureInputValue(n,t)}getInputParam(e){let t=this.txBlockTransactions.arguments[e];if(t.kind!=="Input")throw new Error("not input type");return t}getNestedInputParam(e){let t=this.txBlockTransactions.arguments[e];if(t.kind!=="NestedResult")throw new Error("not input type");return this.transaction.blockData.transactions[t.index]}static getPureInputValue(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure,o=Ra.bcs[t];return Ra.bcs[t].parse(new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,ke.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,ke.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,ke.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,ke.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let t=e.value.Pure;return Ra.bcs.U64.parse(new Uint8Array(t))}typeArg(e){return(0,ke.normalizeStructTag)(this.txBlockTransactions.typeArguments[e])}txArg(e){return this.transaction.blockData.inputs[e]}},N=Ms;var Os=class{constructor(e,t){this.splitCoin=e;this.txb=t}getAmountInput(){return this.splitCoin.amounts.map(e=>{if(e.kind==="Input")return Number(N.getPureInputValue(e,"U64"))}).filter(e=>e!==void 0)}},Bt=Os;var xe=require("@mysten/sui/utils"),Vu=async(i,e)=>{let t=await i.scallopSuiKit.client.getObject({id:e,options:{showContent:!0}});if(t?.data?.content?.dataType!=="moveObject")return!1;let o=t.data.content.fields.lock_key?.fields.name;if(!o)return!1;let a=i.address.get("borrowIncentive.object");return o===`${a.slice(2)}::incentive_account::IncentiveProgramLockKey`},on={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},Vt={unstakeObligation:(i,e,t)=>i.moveCall(`${on.id}::user::unstake`,[on.incentivePools,on.incentiveAccounts,i.object(e),i.object(t),xe.SUI_CLOCK_OBJECT_ID],[(0,xe.normalizeStructTag)(xe.SUI_TYPE_ARG)]),redeem_rewards:(i,e,t,n)=>i.moveCall(`${on.id}::user::redeem_rewards`,[on.incentivePools,on.incentiveAccounts,i.object(e),i.object(t),xe.SUI_CLOCK_OBJECT_ID],[(0,xe.normalizeStructTag)(n)])};var Hu=(i,e)=>{let t=[];for(let n=0;n<i.length;n+=e)t.push(i.slice(n,n+e));return t};var Ba=class extends Ce{decode(){if(this.isSupplyWithStakeSpoolTransaction())return this.decodeSupplyWithStakeSpool();if(this.isUnstakeAndWithdrawTransaction())return this.decodeUnstakeAndWithdraw();if(this.isStakeSpoolTransaction())return this.decodeStakeSpool();if(this.isDepositCollateralTransaction())return this.decodeDepositCollateral();if(this.isWithdrawCollateralTransaction())return this.decodeWithdrawCollateral();if(this.isWithdrawLendingScoinTransaction())return this.decodeWithdrawLendingScoin();if(this.isWithdrawLendingTransaction())return this.decodeWithdrawLending();if(this.isSupplyLendingTransaction())return this.decodeSupplyLending();if(this.isBorrowWithReferralTransaction())return this.decodeBorrowWithReferral();if(this.isBorrowWithBoostTransaction())return this.decodeBorrowWithBoost();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayWithBoostTransaction())return this.decodeRepayWithBoost();if(this.isRepayTransaction())return this.decodeRepay();if(this.isUnstakeSpoolTransaction())return this.decodeUnstakeSpool();if(this.isMigrateAndClaim())return this.decodeMigrateAndClaim();if(this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isOpenObligationTransaction())return this.decodeOpenObligation();if(this.isMigrateScoinTransaction())return this.decodeMigrateScoin()}isMigrateScoinTransaction(){return this.hasMoveCallCommand(`${this.coreId.scoin}::s_coin_converter::mint_s_coin`)}isSupplyLendingTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::mint::mint`)}isSupplyWithStakeSpoolTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.protocolPkg}::mint::mint`),t=this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::stake`);return e&&t}isUnstakeAndWithdrawTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::unstake`),t=this.hasMoveCallCommand(`${this.coreId.protocolPkg}::redeem::redeem`);return e&&t}isStakeSpoolTransaction(){return this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::stake`)}isWithdrawLendingTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::redeem::redeem`)}isWithdrawLendingScoinTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.protocolPkg}::redeem::redeem`),t=this.hasMoveCallCommand(`${this.coreId.scoin}::s_coin_converter::burn_s_coin`);return e&&t}isDepositCollateralTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`)}isWithdrawCollateralTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`)}isBorrowTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::borrow::borrow`)}isBorrowWithBoostTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.protocolPkg}::borrow::borrow`),t=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`);return e&&t}isBorrowWithReferralTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::borrow::borrow_with_referral`)}isRepayTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::repay::repay`)}isRepayWithBoostTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.protocolPkg}::repay::repay`),t=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`);return e&&t}isUnstakeSpoolTransaction(){return this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::unstake`)}isCreateStakeAccountTransaction(){return this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::new_spool_account`)}isClaimRewardTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::redeem_rewards`),t=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`);return e||t}isOpenObligationTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::open_obligation::open_obligation`)}isMigrateAndClaim(){let e=this.hasMoveCallCommand(`${Ps.OLD_BORROW_INCENTIVE_PROTOCOL_ID}::user::redeem_rewards`),t=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`),n=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::stake`);return e&&(t||n)}get helperClaimLendingReward(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::redeem_rewards`)).map(t=>new N(t,this.transaction))}get helperClaimBorrowV2Reward(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`)).map(t=>new N(t,this.transaction))}get helperStakeObligationWithVeSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`));return new N(e,this.transaction)}get helperClaimBorrowReward(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${Ps.OLD_BORROW_INCENTIVE_PROTOCOL_ID}::user::redeem_rewards`)).map(t=>new N(t,this.transaction))}get helperMint(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::mint::mint`));return new N(e,this.transaction)}get helperUnstakes(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::unstake`)).map(t=>new N(t,this.transaction))}get helperRedeems(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::redeem::redeem`)).map(t=>new N(t,this.transaction))}get helperRedeem(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::redeem::redeem`));return new N(e,this.transaction)}get helperBurnScoin(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.scoin}::s_coin_converter::burn_s_coin`));return new N(e,this.transaction)}get helperStake(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::stake`));return new N(e,this.transaction)}get helperUnstake(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::unstake`));return new N(e,this.transaction)}get helperDepositCollateral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`));return new N(e,this.transaction)}get helperWithdrawCollateral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`));return new N(e,this.transaction)}get helperBorrow(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::borrow::borrow`));return new N(e,this.transaction)}get helperBorrowWithReferral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::borrow::borrow_with_referral`));return new N(e,this.transaction)}get helperRepay(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::repay::repay`));return new N(e,this.transaction)}decodeMigrateScoin(){return{txType:Mt.TransactionType.Other,type:"MigrateScoin",intentionData:{}}}decodeMigrateAndClaim(){let e;this.helperStakeObligationWithVeSca.moveCall&&(e=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9));let t=this.helperClaimBorrowReward[0].decodeOwnedObjectId(2),n=this.helperClaimBorrowReward[0].decodeSharedObjectId(3),o=this.utils.parseCoinNameFromType(this.helperClaimBorrowReward[0].typeArg(0));return{txType:Mt.TransactionType.Other,type:"MigrateAndClaim",intentionData:{obligationKey:t,obligationId:n,rewardCoinName:o,veScaKey:e}}}decodeOpenObligation(){return{txType:Mt.TransactionType.Other,type:"OpenObligation",intentionData:{}}}decodeSupplyLending(){let e=this.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),t=this.helperMint.getNestedInputParam(2),n=new Bt(t,this.transaction).getAmountInput().reduce((o,a)=>o+a,0);return{txType:Mt.TransactionType.Other,type:"SupplyLending",intentionData:{amount:n,coinName:e}}}decodeWithdrawLending(){let e=this.utils.parseCoinNameFromType(this.helperRedeem.typeArg(0)),t=this.helperRedeem.getNestedInputParam(2),n=new Bt(t,this.transaction).getAmountInput().reduce((o,a)=>o+a,0);return{txType:Mt.TransactionType.Other,type:"WithdrawLending",intentionData:{amount:n,coinName:e}}}decodeWithdrawLendingScoin(){let e=this.utils.parseCoinNameFromType(this.helperRedeem.typeArg(0));console.log({coinName:e});let t=this.helperBurnScoin.getNestedInputParam(1),n=new Bt(t,this.transaction).getAmountInput().reduce((o,a)=>o+a,0);return{txType:Mt.TransactionType.Other,type:"WithdrawLending",intentionData:{amount:n,coinName:e}}}decodeDepositCollateral(){let e=this.utils.parseCoinNameFromType(this.helperDepositCollateral.typeArg(0)),t=this.helperDepositCollateral.getNestedInputParam(3),n=new Bt(t,this.transaction).getAmountInput().reduce((a,s)=>a+s,0),o=this.helperDepositCollateral.decodeSharedObjectId(1);return{txType:Mt.TransactionType.Other,type:"DepositCollateral",intentionData:{amount:n,obligationId:o,collateralCoinName:e}}}decodeWithdrawCollateral(){let e=this.utils.parseCoinNameFromType(this.helperWithdrawCollateral.typeArg(0)),t=this.helperWithdrawCollateral.decodeInputU64(5),n=this.helperWithdrawCollateral.decodeSharedObjectId(1),o=this.helperWithdrawCollateral.decodeOwnedObjectId(2);return{txType:Mt.TransactionType.Other,type:"WithdrawCollateral",intentionData:{amount:t,collateralCoinName:e,obligationKey:o,obligationId:n}}}decodeBorrow(){let e=this.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),t=this.helperBorrow.decodeInputU64(5),n=this.helperBorrow.decodeSharedObjectId(1),o=this.helperBorrow.decodeOwnedObjectId(2);return{txType:Mt.TransactionType.Other,type:"Borrow",intentionData:{amount:t,coinName:e,obligationKey:o,obligationId:n}}}decodeBorrowWithBoost(){let e=this.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),t=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9),n=this.helperBorrow.decodeInputU64(5),o=this.helperBorrow.decodeSharedObjectId(1),a=this.helperBorrow.decodeOwnedObjectId(2);return{txType:Mt.TransactionType.Other,type:"BorrowWithBoost",intentionData:{amount:n,coinName:e,obligationKey:a,obligationId:o,veScaKey:t}}}decodeBorrowWithReferral(){let e=this.utils.parseCoinNameFromType(this.helperBorrowWithReferral.typeArg(0)),t;this.helperStakeObligationWithVeSca.moveCall&&(t=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9));let n=this.helperBorrowWithReferral.decodeInputU64(6),o=this.helperBorrowWithReferral.decodeSharedObjectId(1),a=this.helperBorrowWithReferral.decodeOwnedObjectId(2);return{txType:Mt.TransactionType.Other,type:"BorrowWithReferral",intentionData:{amount:n,coinName:e,obligationKey:a,obligationId:o,veScaKey:t}}}decodeRepay(){let e=this.utils.parseCoinNameFromType(this.helperRepay.typeArg(0)),t=this.helperRepay.getNestedInputParam(3),n=new Bt(t,this.transaction).getAmountInput().reduce((a,s)=>a+s,0),o=this.helperRepay.decodeSharedObjectId(1);return{txType:Mt.TransactionType.Other,type:"Repay",intentionData:{amount:n,obligationId:o,coinName:e}}}decodeRepayWithBoost(){let e=this.utils.parseCoinNameFromType(this.helperRepay.typeArg(0)),t=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9),n=this.helperRepay.getNestedInputParam(3),o=new Bt(n,this.transaction).getAmountInput().reduce((s,l)=>s+l,0),a=this.helperRepay.decodeSharedObjectId(1);return{txType:Mt.TransactionType.Other,type:"RepayWithBoost",intentionData:{amount:o,obligationId:a,coinName:e,veScaKey:t}}}decodeStakeSpool(){let e;this.isCreateStakeAccountTransaction()||(e=this.helperStake.decodeOwnedObjectId(1));let t=0;if(this.helperBurnScoin.moveCall){let a=this.helperBurnScoin.getNestedInputParam(1);t=new Bt(a,this.transaction).getAmountInput().reduce((s,l)=>s+l,0)}if(this.helperStake.moveCall&&t===0){let a=this.helperStake.getNestedInputParam(2);t=new Bt(a,this.transaction).getAmountInput().reduce((s,l)=>s+l,0)}let n=this.helperStake.typeArg(0),o=this.utils.parseCoinNameFromType(n);return{txType:Mt.TransactionType.Other,type:"StakeSpool",intentionData:{amount:t,marketCoinName:o,stakeAccountId:e}}}decodeUnstakeSpool(){let e=this.helperUnstake.decodeOwnedObjectId(1),t=this.helperUnstake.decodeInputU64(2),n=this.helperUnstake.typeArg(0),o=this.utils.parseCoinNameFromType(n);return{txType:Mt.TransactionType.Other,type:"UnstakeSpool",intentionData:{amount:t,marketCoinName:o,stakeAccountId:e}}}decodeSupplyWithStakeSpool(){let e=this.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),t=this.helperMint.getNestedInputParam(2),n=new Bt(t,this.transaction).getAmountInput().reduce((a,s)=>a+s,0),o;return this.isCreateStakeAccountTransaction()||(o=this.helperStake.decodeOwnedObjectId(1)),{txType:Mt.TransactionType.Other,type:"SupplyAndStakeLending",intentionData:{amount:n,coinName:e,stakeAccountId:o}}}decodeUnstakeAndWithdraw(){let e=[];this.helperUnstakes.forEach(o=>{let a=o.decodeOwnedObjectId(1),s=o.decodeInputU64(2);e.push({id:a,coin:s})});let t=this.utils.parseCoinNameFromType(this.helperRedeems[0].typeArg(0)),n=0;if(this.helperBurnScoin.moveCall){let o=this.helperBurnScoin.getNestedInputParam(1);n=new Bt(o,this.transaction).getAmountInput().reduce((a,s)=>a+s,0)}return{txType:Mt.TransactionType.Other,type:"WithdrawAndUnstakeLending",intentionData:{amount:n,coinName:t,stakeAccountId:e}}}decodeClaimReward(){let e=[],t=[],n=[];return this.helperClaimLendingReward.forEach(o=>{let a=o.decodeOwnedObjectId(2),s=o.typeArg(0),l=this.utils.parseCoinNameFromType(s);e.push({stakeMarketCoinName:l,stakeAccountId:a})}),this.helperClaimBorrowV2Reward.forEach(o=>{let a=o.decodeSharedObjectId(4),s=o.decodeOwnedObjectId(3),l=this.utils.parseCoinNameFromType(o.typeArg(0));t.push({obligationId:s,obligationKey:a,rewardCoinName:l})}),this.helperClaimBorrowReward.forEach(o=>{let a=o.decodeSharedObjectId(2),s=o.decodeOwnedObjectId(3),l=this.utils.parseCoinNameFromType(o.typeArg(0));n.push({obligationId:s,obligationKey:a,rewardCoinName:l})}),{txType:Mt.TransactionType.Other,type:"ClaimIncentiveReward",intentionData:{lendingIncentive:e,borrowIncentiveV2:t,borrowIncentive:n}}}};var Ea=require("@msafe/sui3-utils");var Na=class extends Ce{decode(){if(this.isCreateReferralLink())return this.decodeCreateReferralLink();if(this.isClaimRevenueReferral())return this.decodeClaimRevenueReferral();if(this.isBindReferral())return this.decodeBindReferral()}isClaimRevenueReferral(){return this.hasMoveCallCommand(`${this.coreId.referral}::referral_revenue_pool::claim_revenue_with_ve_sca_key`)}isCreateReferralLink(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_placeholder_key`)}isBindReferral(){return this.hasMoveCallCommand(`${this.coreId.referral}::referral_bindings::bind_ve_sca_referrer`)}get helperClaimRevenueReferral(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.referral}::referral_revenue_pool::claim_revenue_with_ve_sca_key`)).map(t=>new N(t,this.transaction))}get helperBindReferral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.referral}::referral_bindings::bind_ve_sca_referrer`));return new N(e,this.transaction)}decodeCreateReferralLink(){return{txType:Ea.TransactionType.Other,type:"CreateReferralLink",intentionData:{}}}decodeClaimRevenueReferral(){let e=this.helperClaimRevenueReferral[0].decodeOwnedObjectId(2),t=this.helperClaimRevenueReferral.map(n=>n.typeArg(0));return{txType:Ea.TransactionType.Other,type:"ClaimRevenueReferral",intentionData:{veScaKey:e,coins:t}}}decodeBindReferral(){let e=this.helperBindReferral.decodePureArg(1,"Address");return{txType:Ea.TransactionType.Other,type:"BindReferral",intentionData:{veScaKey:e}}}};var ne=require("@msafe/sui3-utils"),Xu=require("@scallop-io/sui-scallop-sdk");var Wa=class extends Ce{async decode(){if(this.isExtendPeriodAndStakeMoreSca())return this.decodePeriodAndStakeMoreSca();if(this.isStakeScaFirsTime()||this.isStakeMoreSca())return this.decodeStakeSca();if(this.isRenewExpiredVeSca())return this.decodeRenewExpiredVeSca();if(this.isExtendPeriod())return this.decodeExtendStakePeriod();if(this.isRedeemSca())return this.decodeRedeemSca();if(this.isMergeVeSca())return this.decodeMergeVesca();if(this.isSplitVeSca())return this.decodeSplitVesca();if(this.isVeScaObligationBindings())return this.decodeVeScaObligationBindings();if(await this.isTransferVeScaKey())return this.decodeTransferVeScaKey()}isStakeScaFirsTime(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`)}isExtendPeriodAndStakeMoreSca(){let e=this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`),t=this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`);return!!e&&!!t}isRedeemSca(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::redeem`)}isStakeMoreSca(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`)}isExtendPeriod(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`)}isRenewExpiredVeSca(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`)}isMergeVeSca(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::merge`)}isSplitVeSca(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::split`)}isVeScaObligationBindings(){let e=this.commands.filter(l=>this.filterMoveCallCommands(l,`${this.coreId.borrowIncentivePkg}::user::unstake_v2`)),t=this.commands.filter(l=>this.filterMoveCallCommands(l,`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`)),n=this.commands.filter(l=>this.filterMoveCallCommands(l,`${this.coreId.borrowIncentivePkg}::user::deactivate_boost_v2`)),o=e.length>0&&t.length>0&&e.length===t.length,a=n.length>0;return this.commands.length===e.length+t.length+n.length&&(o||a)}async isTransferVeScaKey(){let e=this.commands.filter(d=>d.$kind==="TransferObjects");if(e.length!==1)return!1;let{objects:t}=e[0].TransferObjects,n=t.filter(d=>d.$kind==="Input").map(({Input:d})=>d);if(n.length!==t.length)return!1;let o=new Set(n),a=this.inputs.filter((d,b)=>d.$kind==="Object"&&o.has(b)).map(d=>d.Object.ImmOrOwnedObject),s=`${this.coreId.veScaObjId}::ve_sca::VeScaKey`,l=Hu(a.map(({objectId:d})=>d),50);for(let d=0;d<l.length;d++){let b=l[d];if((await this.scallopClient.scallopSuiKit.queryGetObjects(b,{showType:!0})).some(w=>w.type!==s))return!1}return a.length>0}get helperStakeMoreSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`));return new N(e,this.transaction)}get helperStakeSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`));return new N(e,this.transaction)}get helperExtendStakePeriod(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`));return new N(e,this.transaction)}get helperRedeemSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::redeem`));return new N(e,this.transaction)}get helperRenewExpired(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`));return new N(e,this.transaction)}get helperOldUnstakeObligation(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${Xu.OLD_BORROW_INCENTIVE_PROTOCOL_ID}::user::unstake`));return new N(e,this.transaction)}get helperUnstakeObligation(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::unstake_v2`));return new N(e,this.transaction)}get helperStakeObligationWithVeSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`));return new N(e,this.transaction)}getMergeSplitVeScaHelper(e){let t=this.commands.find(n=>this.filterMoveCallCommands(n,`${this.coreId.veScaPkgId}::ve_sca::${e}`));return new N(t,this.transaction)}getVeScaObligationBindingHelpers(){let e=`${this.coreId.borrowIncentivePkg}::user::unstake_v2`,t=`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`,n=`${this.coreId.borrowIncentivePkg}::user::deactivate_boost_v2`,o=[],a=0,s=0,l=0;return this.commands.forEach(d=>{this.filterMoveCallCommands(d,e)?(o.push({action:"unstake",helper:new N(d,this.transaction,a)}),a++):this.filterMoveCallCommands(d,t)?(o.push({action:"stake",helper:new N(d,this.transaction,s)}),s++):this.filterMoveCallCommands(d,n)&&(o.push({action:"deactivate",helper:new N(d,this.transaction,l)}),l++)}),o}decodeRedeemSca(){let e=this.helperRedeemSca.decodeOwnedObjectId(1);return{txType:ne.TransactionType.Other,type:"RedeemSca",intentionData:{veScaKey:e}}}decodeRenewExpiredVeSca(){let e=this.helperRenewExpired.getNestedInputParam(4),t=this.helperRenewExpired.decodeInputU64(5),n=new Bt(e,this.transaction).getAmountInput().reduce((D,P)=>D+P,0),o=this.helperRenewExpired.decodeOwnedObjectId(1),a=!!this.helperRedeemSca.moveCall,s=[],l=[],d=[];this.helperOldUnstakeObligation.moveCall&&(s=[this.helperOldUnstakeObligation.decodeOwnedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(l=[this.helperUnstakeObligation.decodeOwnedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(d=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let b=!1,T=!1,w,k,x=[{condition:s,isOld:!0},{condition:l,isOld:!1},{condition:d,isOld:!1}];for(let D=0;D<x.length;D++)x[D].condition.length>1&&([k,w]=x[D].condition,b=!0,T=x[D].isOld);return{txType:ne.TransactionType.Other,type:"RenewExpStakePeriod",intentionData:{amount:n,unlockTime:t,obligationId:w,obligationKey:k,veScaKey:o,isHaveRedeem:a,isObligationLocked:b,isOldBorrowIncentive:T}}}decodeExtendStakePeriod(){let e=this.helperExtendStakePeriod.decodeInputU64(4),t=this.helperExtendStakePeriod.decodeOwnedObjectId(1),n=[],o=[],a=[];this.helperOldUnstakeObligation.moveCall&&(n=[this.helperOldUnstakeObligation.decodeOwnedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(o=[this.helperUnstakeObligation.decodeOwnedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(a=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let s=!1,l=!1,d,b,T=[{condition:n,isOld:!0},{condition:o,isOld:!1},{condition:a,isOld:!1}];for(let w=0;w<T.length;w++)T[w].condition.length>1&&([b,d]=T[w].condition,s=!0,l=T[w].isOld);return{txType:ne.TransactionType.Other,type:"ExtendStakePeriod",intentionData:{unlockTime:e,obligationId:d,obligationKey:b,veScaKey:t,isObligationLocked:s,isOldBorrowIncentive:l}}}decodePeriodAndStakeMoreSca(){let e=this.helperStakeMoreSca.getNestedInputParam(4),t=this.helperExtendStakePeriod.decodeInputU64(4),n=new Bt(e,this.transaction).getAmountInput().reduce((x,D)=>x+D,0),o=[],a=[],s,l=[];this.helperOldUnstakeObligation.moveCall&&(o=[this.helperOldUnstakeObligation.decodeOwnedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(a=[this.helperUnstakeObligation.decodeOwnedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(s=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(l=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let d=!1,b=!1,T,w,k=[{condition:o,isOld:!0},{condition:a,isOld:!1},{condition:l,isOld:!1}];for(let x=0;x<k.length;x++)k[x].condition.length>1&&([w,T]=k[x].condition,d=!0,b=k[x].isOld);return{txType:ne.TransactionType.Other,type:"ExtendPeriodAndStakeMore",intentionData:{amount:n,veScaKey:s,unlockTime:t,obligationId:T,obligationKey:w,isOldBorrowIncentive:b,isObligationLocked:d}}}decodeStakeSca(){let e,t;this.helperStakeSca.moveCall&&this.helperStakeMoreSca.moveCall===void 0?(e=this.helperStakeSca.getNestedInputParam(3),t=this.helperStakeSca.decodeInputU64(4)):e=this.helperStakeMoreSca.getNestedInputParam(4);let n=new Bt(e,this.transaction).getAmountInput().reduce((x,D)=>x+D,0),o=[],a=[],s,l=[];this.helperOldUnstakeObligation.moveCall&&(o=[this.helperOldUnstakeObligation.decodeOwnedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(a=[this.helperUnstakeObligation.decodeOwnedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(s=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(l=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let d=!1,b=!1,T,w,k=[{condition:o,isOld:!0},{condition:a,isOld:!1},{condition:l,isOld:!1}];for(let x=0;x<k.length;x++)k[x].condition.length>1&&([w,T]=k[x].condition,d=!0,b=k[x].isOld);return{txType:ne.TransactionType.Other,type:"StakeSca",intentionData:{amount:n,unlockTime:t,obligationId:T,obligationKey:w,veScaKey:s,isObligationLocked:d,isOldBorrowIncentive:b}}}decodeMergeVesca(){let e=this.getMergeSplitVeScaHelper("merge"),t={targetVeScaKey:e.decodeOwnedObjectId(1),sourceVeScaKey:e.decodeOwnedObjectId(2)};return{txType:ne.TransactionType.Other,type:"MergeVeSca",intentionData:t}}decodeSplitVesca(){let e=this.getMergeSplitVeScaHelper("split"),t={targetVeScaKey:e.decodeOwnedObjectId(1),splitAmount:e.decodeInputU64(4)};return{txType:ne.TransactionType.Other,type:"SplitVeSca",intentionData:t}}decodeVeScaObligationBindings(){let e=this.getVeScaObligationBindingHelpers(),t=(o,a)=>{switch(o){case"stake":return{veScaKey:a.decodeOwnedObjectId(9),obligationId:a.decodeSharedObjectId(4),obligationKey:a.decodeOwnedObjectId(3)};case"unstake":return{obligationId:a.decodeSharedObjectId(4),obligationKey:a.decodeOwnedObjectId(3)};case"deactivate":return{veScaKey:a.decodeOwnedObjectId(4),obligationId:a.decodeSharedObjectId(3)};default:throw new Error(`Invalid action ${o}`)}},n=e.map(({action:o,helper:a})=>({action:o,args:t(o,a)}));return{txType:ne.TransactionType.Other,type:"VeScaObligationBindings",intentionData:{bindingDatas:n}}}decodeTransferVeScaKey(){let e=this.commands.filter(s=>s.$kind==="TransferObjects"),{objects:t}=e[0].TransferObjects,n=t.filter(s=>s.$kind==="Input").map(({Input:s})=>s);if(n.length!==t.length)return!1;let o=new Set(n),a=this.inputs.filter((s,l)=>s.$kind==="Object"&&o.has(l)).map(s=>s.Object.ImmOrOwnedObject);return{xType:ne.TransactionType.Other,type:"TransferVeScaKeys",intentionData:{veScaKeys:a}}}};var zu=Ut(require("sort-keys-recursive")),A=class{constructor(e){this.data=e}get application(){return"msafe-core"}serialize(){return JSON.stringify((0,zu.default)(this.data))}isObligationLocked=async(e,t)=>{let n=await e.getObject({id:typeof t=="string"?t:t.objectId,options:{showContent:!0}}),o=!1;return n&&n?.data.content?.dataType==="moveObject"&&"lock_key"in n.data.content.fields&&(o=!!n.data.content.fields.lock_key),o};async buildTxWithRefreshObligation(e,t,n){let o=e.builder.createTxBlock();o.setSender(t.walletAddress);let{obligationId:a,obligationKey:s}=t;return await this.isObligationLocked(e.scallopSuiKit.client,a)?(await o.unstakeObligationQuick(a,s),await n(e,o,t),await o.stakeObligationWithVeScaQuick(a,s,t.veScaKey)):await n(e,o,t),o}};var _a=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async borrow({account:t,scallopClient:n}){let{coinName:o,amount:a,obligationId:s,obligationKey:l}=this.data,d=t.address;return(await this.buildTxWithRefreshObligation(n,{walletAddress:d,obligationId:s,obligationKey:l},async(T,w)=>{let k=await w.borrowQuick(+a,o,s,l);w.transferObjects([k],d)})).txBlock}async build(t){return this.borrow(t)}static fromData(t){return new i(t)}};var La=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async borrowWithBoost(t,n){let{obligationId:o,obligationKey:a,veScaKey:s,amount:l,coinName:d}=this.data;return(await this.buildTxWithRefreshObligation(t,{walletAddress:n,obligationId:o,obligationKey:a,veScaKey:s},async(T,w)=>{let k=await w.borrowQuick(+l,d,o,a);w.transferObjects([k],n)})).txBlock}async build(t){return this.borrowWithBoost(t.scallopClient,t.account.address)}static fromData(t){return new i(t)}};var ja=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async borrowWithReferral({account:t,scallopClient:n}){let o=t.address,{obligationId:a,obligationKey:s,veScaKey:l,coinName:d,amount:b}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:a,obligationKey:s,veScaKey:l},async(w,k)=>{let x=k.claimReferralTicket(d),D=await k.borrowWithReferralQuick(+b,d,x,a,s);k.burnReferralTicket(x,d),k.transferObjects([D],o)})).txBlock}async build(t){return this.borrowWithReferral(t)}static fromData(t){return new i(t)}};var Gu=require("@mysten/sui/utils");var Ua=class i extends A{txType;txSubType;constructor(e={}){super(e)}async claimIncentiveRewards(e,t){let n=e.builder.createTxBlock();n.setSender(t);let o=await e.query.getAllStakeAccounts(t),a=await e.query.getLendings(void 0,t),s=await e.query.getObligations(t),l=Object.values(await e.query.getObligationAccounts(t)??[]),d=(()=>{let k=[...e.constants.whitelist.spool].map(x=>e.utils.parseCoinName(x));return Object.values(a??[]).filter(x=>!!x&&k.includes(x.coinName)).reduce((x,D)=>{let P=e.utils.parseMarketCoinName(D.coinName);return x[P]||(x[P]=0),x[P]+=D.availableClaimCoin,x},{})})(),b={};Object.entries(o).forEach(([k,x])=>{for(let D=0;D<x.length;D++){let P=x[D];if(!d[k])continue;let q=n.claim(P.id,k);b.sui?b.sui.push(q):b.sui=[q]}});let T=(()=>{let k={};return k.sui=Object.values(d).reduce((x,D)=>x+D,0),l.forEach(x=>{Object.values(x.borrowIncentives).forEach(D=>{D&&D.rewards.forEach(P=>{k[P.coinName]||(k[P.coinName]=0),k[P.coinName]?k[P.coinName]+=P.availableClaimCoin:k[P.coinName]=P.availableClaimCoin})})}),k})();if(s.length>0&&l.length>0)for(let k=0;k<l.length;k++){let x=l[k],D=!1,P=s.find($=>$.id===x.obligationId)?.keyId,q={};if(P){if(Object.values(x.borrowIncentives).forEach($=>{if($){let Et=$.rewards.filter(Wt=>{let Pt=Wt.coinName;return Wt.availableClaimCoin>0&&!q[Pt]});D=Et.length>0,Et.forEach(Wt=>{let Pt=n.claimBorrowIncentive(x.obligationId,P,Wt.coinName);q[Wt.coinName]=!0,b[Wt.coinName]?b[Wt.coinName].push(Pt):b[Wt.coinName]=[Pt]})}}),T.sui>0){let $=Vt.redeem_rewards(n,P,x.obligationId,Gu.SUI_TYPE_ARG);b.sui?b.sui.push($):b.sui=[$]}if(D&&await Vu(e.query,x.obligationId)){n.unstakeObligation(x.obligationId,P);let Et=await e.query.getBindedVeScaKey(x.obligationId);Et?n.stakeObligationWithVesca(x.obligationId,P,Et):n.stakeObligation(x.obligationId,P)}}}let w=(await Promise.all(Object.entries(b).map(async([k,x])=>{let D=x[0];if(x.length>1&&n.mergeCoins(D,x.slice(1)),k==="sui"){n.mergeCoins(n.gas,[D]);return}return await e.builder.utils.mergeSimilarCoins(n,D,e.utils.parseCoinType(k),t),D}))).filter(k=>!!k);return w.length>0&&n.transferObjects(w,t),n.txBlock}async build(e){return this.claimIncentiveRewards(e.scallopClient,e.account.address)}static fromData(e={}){return new i(e)}};var qa=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.depositCollateral(this.data.collateralCoinName,+this.data.amount,!1,this.data.obligationId)}static fromData(t){return new i(t)}};var Fa=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async migrateAndClaim({account:t,scallopClient:n}){let o=t.address,{obligationKey:a,obligationId:s,rewardCoinName:l,veScaKey:d}=this.data,b=n.builder.createTxBlock();b.setSender(o);let T=Vt.redeem_rewards(b,a,s,n.utils.parseCoinType(l));return b.transferObjects([T],o),await b.unstakeObligationQuick(s,a),d?await b.stakeObligationWithVeScaQuick(s,a,d):await b.stakeObligationQuick(s,a),b.txBlock}async build(t){return this.migrateAndClaim(t)}static fromData(t){return new i(t)}};var Ka=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.migrateAllMarketCoin(!1,!1)}static fromData(t){return new i(t)}};var $a=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.openObligation(!1)}static fromData(t){return new i(t)}};var Va=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async repay({account:t,scallopClient:n}){let o=t.address,{coinName:a,amount:s,obligationId:l,obligationKey:d}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:l,obligationKey:d},async(T,w)=>{await w.repayQuick(+s,a,l)})).txBlock}async build(t){return this.repay(t)}static fromData(t){return new i(t)}};var Ha=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async repayWithBoost({account:t,scallopClient:n}){let o=t.address,{coinName:a,amount:s,obligationId:l,veScaKey:d}=this.data,b=n.builder.createTxBlock();b.setSender(o);let T=n.constants.whitelist.borrowing.has(a);return T&&await b.unstakeObligationQuick(l,void 0),await b.repayQuick(+s,a,l),T&&await b.stakeObligationWithVeScaQuick(l,void 0,d),b.txBlock}async build(t){return this.repayWithBoost(t)}static fromData(t){return new i(t)}};var Xa=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.deposit(this.data.coinName,+this.data.amount,!1,t.account.address)}static fromData(t){return new i(t)}};var za=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.unstake(this.data.marketCoinName,+this.data.amount,!1)}static fromData(t){return new i(t)}};var Ga=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async unstakeAndWithdraw(t,n,o){let a=t.builder.createTxBlock();a.setSender(o);let{stakeAccountId:s,amount:l,coinName:d}=this.data,b=[];for(let T=0;T<s.length;T++){let{id:w,coin:k}=s[T],x=t.utils.parseMarketCoinName(d),[D]=await a.unstakeQuick(k,x,w);if(D){let P=a.withdraw(D,d);b.push(P)}}if(l>0){let T=await a.withdrawQuick(l,d);b.push(T)}return b.length>1&&a.mergeCoins(b[0],b.slice(1)),a.transferObjects(b,o),a.txBlock}async build(t){return this.unstakeAndWithdraw(t.scallopClient,this.data,t.account.address)}static fromData(t){return new i(t)}};var Qa=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.withdrawCollateral(this.data.collateralCoinName,Number(this.data.amount),!1,this.data.obligationId,this.data.obligationKey,t.account.address)}static fromData(t){return new i(t)}};var Ja=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.withdraw(this.data.coinName,Number(this.data.amount),!1,t.account.address)}static fromData(t){return new i(t)}};var Ya=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async bindReferral({account:t,scallopClient:n}){let o=t.address,a=n.builder.createTxBlock();return a.setSender(o),a.bindToReferral(this.data.veScaKey),a.txBlock}async build(t){return this.bindReferral(t)}static fromData(t){return new i(t)}};var Za=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async claimRevenueReferral({account:t,scallopClient:n}){let{veScaKey:o,coins:a}=this.data,s=t.address,l=n.builder.createTxBlock();l.setSender(s);let d=a.map(b=>n.utils.parseCoinNameFromType(b));return await l.claimReferralRevenueQuick(o,d),l.txBlock}async build(t){return this.claimRevenueReferral(t)}static fromData(t){return new i(t)}};var ti=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async createReferralLink({account:t,scallopClient:n}){let o=t.address,a=n.builder.createTxBlock();a.setSender(o);let s=a.mintEmptyVeSca();return a.transferObjects([s],o),a.txBlock}async build(t){return this.createReferralLink(t)}static fromData(t){return new i(t)}};var Qu=require("@scallop-io/sui-scallop-sdk");var ei=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async extendPeriodAndStakeMoreSca({account:t,scallopClient:n}){let{amount:o,veScaKey:a,unlockTime:s,obligationId:l,obligationKey:d,isOldBorrowIncentive:b,isObligationLocked:T}=this.data,w=t.address,k=n.builder.createTxBlock();k.setSender(w);let x=await n.utils.selectCoins(o,Qu.SCA_COIN_TYPE,w),[D,P]=k.takeAmountFromCoins(x,o);return k.extendLockPeriod(a,s),k.extendLockAmount(a,D),k.transferObjects([P],w),!l||!d||(T&&(b?Vt.unstakeObligation(k,l,d):k.unstakeObligation(l,d)),k.stakeObligationWithVesca(l,d,a)),k.txBlock}async build(t){return this.extendPeriodAndStakeMoreSca(t)}static fromData(t){return new i(t)}};var ni=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async extendStakeScaLockPeriod({account:t,scallopClient:n}){let o=t.address,{veScaKey:a,unlockTime:s,obligationId:l,obligationKey:d,isObligationLocked:b,isOldBorrowIncentive:T}=this.data,w=n.builder.createTxBlock();return w.setSender(o),w.extendLockPeriod(a,s),l&&d&&(b&&(T?Vt.unstakeObligation(w,d,l):w.unstakeObligation(l,d)),w.stakeObligationWithVesca(l,d,a)),w.txBlock}async build(t){return this.extendStakeScaLockPeriod(t)}static fromData(t){return new i(t)}};var oi=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async handleUnsubForKeys(t,n,o){let{targetVeScaKey:a,sourceVeScaKey:s}=this.data,[l,d]=await Promise.all([n.getBindedObligationId(a),n.getBindedObligationId(s)]);l&&await t.unstakeObligationQuick(l),d&&await t.unstakeObligationQuick(d),o(t,a,s),l&&await t.stakeObligationWithVeScaQuick(l,void 0,a),d&&await t.stakeObligationWithVeScaQuick(d,void 0,s)}async build(t){let{scallopClient:n,account:{address:o}}=t,a=n.builder.createTxBlock();return a.setSender(o),await this.handleUnsubForKeys(a,n.query,async(s,l,d)=>{s.mergeVeSca(a.object(l),a.object(d))}),a.txBlock}static fromData(t){return new i(t)}};var ai=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async redeemSca({account:t,scallopClient:n}){let{veScaKey:o}=this.data,a=t.address,s=n.builder.createTxBlock();return s.setSender(a),await s.redeemScaQuick({veScaKey:o}),s.txBlock}async build(t){return this.redeemSca(t)}static fromData(t){return new i(t)}};var Ju=require("@scallop-io/sui-scallop-sdk");var ii=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async renewExpiredStakeSca({account:t,scallopClient:n}){let o=t.address,{amount:a,unlockTime:s,veScaKey:l,isHaveRedeem:d,obligation:b,obligationKey:T,isObligationLocked:w,isOldBorrowIncentive:k}=this.data,x=n.builder.createTxBlock();if(x.setSender(o),d){let $=x.redeemSca(l);x.transferObjects([$],o)}let D=await n.builder.utils.selectCoins(a,Ju.SCA_COIN_TYPE,o),[P,q]=x.takeAmountFromCoins(D,a);return x.transferObjects([q],o),x.renewExpiredVeSca(l,P,s),!b||!T||(w&&(k?Vt.unstakeObligation(x,T,b):x.unstakeObligation(b,T)),x.stakeObligationWithVesca(b,T,l)),x.txBlock}async build(t){return this.renewExpiredStakeSca(t)}static fromData(t){return new i(t)}};var ri=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async handleUnsubForKeys(t,n,o){let{targetVeScaKey:a,splitAmount:s}=this.data,l=await n.getBindedObligationId(a);l&&await t.unstakeObligationQuick(l),o(t,a,s.toString()),l&&await t.stakeObligationWithVeScaQuick(l,void 0,a)}async build(t){let{scallopClient:n,account:{address:o}}=t,a=n.builder.createTxBlock();return a.setSender(o),await this.handleUnsubForKeys(a,n.query,(s,l,d)=>{let b=s.splitVeSca(l,d.toString());s.transferObjects([b],o)}),a.txBlock}static fromData(t){return new i(t)}};var Yu=require("@scallop-io/sui-scallop-sdk");var si=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async stakeSca({account:t,scallopClient:n}){let o=t.address,{amount:a,isObligationLocked:s,isOldBorrowIncentive:l,obligationId:d,obligationKey:b,unlockTime:T,veScaKey:w}=this.data,k=n.builder.createTxBlock();k.setSender(o);let x=await n.utils.selectCoins(a,Yu.SCA_COIN_TYPE,o),[D,P]=k.takeAmountFromCoins(x,a),q;return w?k.extendLockAmount(w,D):q=k.lockSca(D,T),d&&b&&(s&&(l?Vt.unstakeObligation(k,b,d):k.unstakeObligation(d,b)),k.stakeObligationWithVesca(d,b,w||q)),w||k.transferObjects([q,P],o),k.txBlock}async build(t){return this.stakeSca(t)}static fromData(t){return new i(t)}};var ci=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async supplyAndStake({account:t,scallopClient:n}){let o=t.address,{amount:a,coinName:s,stakeAccountId:l}=this.data,d=n.builder.createTxBlock();d.setSender(o);let b=await d.depositQuick(+a,s),T=n.utils.parseMarketCoinName(s);if(n.constants.whitelist.spool.has(T))return d.txBlock;let w=await n.query.getStakeAccounts(T,o),k=l||(w.length>0?w[0].id:void 0);if(k)await d.stakeQuick(b,T,k);else{let x=d.createStakeAccount(T);await d.stakeQuick(b,T,x),d.transferObjects([x],o)}return d.txBlock}async build(t){return this.supplyAndStake(t)}static fromData(t){return new i(t)}};var li=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;handleAction(t,{action:n,args:o}){switch(n){case"deactivate":return t.deactivateBoost(o.obligationId,o.veScaKey);case"stake":return t.stakeObligationWithVesca(o.obligationId,o.obligationKey,o.veScaKey);case"unstake":return t.unstakeObligation(o.obligationId,o.obligationKey);default:throw new Error("Invalid action")}}async build(t){let{scallopClient:n,account:{address:o}}=t,a=n.builder.createTxBlock();a.setSender(o);let{bindingDatas:s}=this.data;return s.forEach(l=>this.handleAction(a,l)),a.txBlock}static fromData(t){return new i(t)}};var ui=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{scallopClient:n,account:{address:o}}=t,a=n.builder.createTxBlock();a.setSender(o);let{veScaKeys:s}=this.data;return a.transferObjects(s.map(l=>a.objectRef(l)),a.pure.address(o)),a.txBlock}static fromData(t){return new i(t)}};var mi=class i extends A{constructor(t){super(t);this.data=t}txType;txSubType;async withdrawUnlockedSca({account:t,scallopClient:n}){let{vescaKey:o}=this.data,a=t.address,s=n.builder.createTxBlock();return s.setSender(a),await s.redeemScaQuick({veScaKey:o}),s.txBlock}async build(t){return this.withdrawUnlockedSca(t)}static fromData(t){return new i(t)}};var pi=class{application="scallop";supportSDK="@mysten/sui";scallopClient;async initScallopClient(e,t){if(!this.scallopClient){let n=new em.Scallop({addressId:"67c44a103fe1b8c454eb9699",walletAddress:e,suiClients:[t],fullnodeUrls:[t.transport.rpcClient.requestManager.transports[0]?.uri??(0,tm.getFullnodeUrl)("mainnet")]});this.scallopClient=await n.createScallopClient()}}async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;await this.initScallopClient(o.address,n),console.log("transaction",t);let a=new Ba(t,this.scallopClient),s=new Na(t,this.scallopClient),l=new Wa(t,this.scallopClient),d=a.decode()||s.decode()||await l.decode();if(!d)throw new Error("Unknown transaction type");return{txType:Zu.TransactionType.Other,txSubType:d.type,intentionData:d.intentionData}}async build(e){let{suiClient:t,account:n,network:o,txSubType:a,intentionData:s}=e;await this.initScallopClient(n.address,t);let l;switch(a){case"SupplyLending":l=Xa.fromData(s);break;case"WithdrawLending":l=Ja.fromData(s);break;case"Borrow":l=_a.fromData(s);break;case"Repay":l=Va.fromData(s);break;case"DepositCollateral":l=qa.fromData(s);break;case"WithdrawCollateral":l=Qa.fromData(s);break;case"OpenObligation":l=$a.fromData(s);break;case"UnstakeSpool":l=za.fromData(s);break;case"ClaimIncentiveReward":l=Ua.fromData(s);break;case"BorrowWithBoost":l=La.fromData(s);break;case"StakeSca":l=si.fromData(s);break;case"ExtendStakePeriod":l=ni.fromData(s);break;case"ExtendPeriodAndStakeMore":l=ei.fromData(s);break;case"RenewExpStakePeriod":l=ii.fromData(s);break;case"WithdrawStakedSca":l=mi.fromData(s);break;case"SupplyAndStakeLending":l=ci.fromData(s);break;case"WithdrawAndUnstakeLending":l=Ga.fromData(s);break;case"RedeemSca":l=ai.fromData(s);break;case"MigrateAndClaim":l=Fa.fromData(s);break;case"BorrowWithReferral":l=ja.fromData(s);break;case"CreateReferralLink":l=ti.fromData(s);break;case"ClaimRevenueReferral":l=Za.fromData(s);break;case"BindReferral":l=Ya.fromData(s);break;case"MigrateScoin":l=Ka.fromData(s);break;case"RepayWithBoost":l=Ha.fromData(s);break;case"MergeVeSca":l=oi.fromData(s);break;case"SplitVeSca":l=ri.fromData(s);break;case"VeScaObligationBindings":{l=li.fromData(s);break}case"TransferVeScaKeys":{l=ui.fromData(s);break}default:throw new Error("not implemented")}return l.build({suiClient:t,account:n,network:o,scallopClient:this.scallopClient})}};var Cm=require("@msafe/sui3-utils");var cn=require("@msafe/sui3-utils"),ve=require("@mysten/sui/utils");var dm=require("@suilend/sui-fe");var pm=require("@msafe/sui3-utils"),De=require("@suilend/sdk");var We=require("@msafe/sui3-utils"),rn=require("@mysten/bcs"),an=require("@mysten/sui/utils"),_e=require("@suilend/sui-fe"),Bs=Ut(require("bignumber.js"));var di=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isDepositTransaction())return this.decodeDeposit();if(this.isWithdrawTransaction())return this.decodeWithdraw();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayTransaction())return this.decodeRepay();if(this.isClaimTransaction())return this.decodeClaim();if(this.isClaimAndDepositTransaction())return this.decodeClaimAndDeposit();throw new Error("Unknown transaction type")}get inputs(){return console.log("this.transaction.getData().inputs",this.transaction.getData().inputs),this.transaction.getData().inputs}get commands(){return console.log("this.transaction.getData().commands",this.transaction.getData().commands),this.transaction.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}hasDepositTransactionMoveCallCommands(){return!!this.getMoveCallCommand("deposit_liquidity_and_mint_ctokens")&&!!this.getMoveCallCommand("deposit_ctokens_into_obligation")}hasClaimTransactionMoveCallCommands(){return!!this.getMoveCallCommand("claim_rewards")}isDepositTransaction(){return!this.hasClaimTransactionMoveCallCommands()&&this.hasDepositTransactionMoveCallCommands()}isWithdrawTransaction(){return!!this.getMoveCallCommand("withdraw_ctokens")&&!!this.getMoveCallCommand("redeem_ctokens_and_withdraw_liquidity_request")}isBorrowTransaction(){return!!this.getMoveCallCommand("borrow_request")}isRepayTransaction(){return!!this.getMoveCallCommand("repay")}isClaimTransaction(){return this.hasClaimTransactionMoveCallCommands()&&!this.hasDepositTransactionMoveCallCommands()}isClaimAndDepositTransaction(){return this.hasClaimTransactionMoveCallCommands()&&this.hasDepositTransactionMoveCallCommands()}decodeDeposit(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("lending_market::MintEvent"))},t=(0,an.normalizeStructTag)(e.MintEvent.parsedJson.coin_type.name),n=e.MintEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeDeposit",t,n),{txType:We.TransactionType.Other,type:"deposit",intentionData:{coinType:t,value:n}}}decodeWithdraw(){let e={withdraw_ctokens:this.getMoveCallCommand("withdraw_ctokens")},t={RedeemEvent:this.simResult.events.find(d=>d.type.includes("lending_market::RedeemEvent"))},n=(0,an.normalizeStructTag)(t.RedeemEvent.parsedJson.coin_type.name),o=t.RedeemEvent.parsedJson.liquidity_amount;console.log("Decoder.decodeWithdraw",n,o);let a=e.withdraw_ctokens.MoveCall.arguments[4].Input,s=new Bs.default((0,rn.toHex)((0,rn.fromBase64)(this.inputs[a].Pure.bytes)),16).toString(),l=s===_e.MAX_U64.toString();return console.log("decodeWithdraw - isMax:",l,"inputIndex:",a,"inputValue:",s,"MAX_U64.toString():",_e.MAX_U64.toString()),l&&(o=_e.MAX_U64.toString()),{txType:We.TransactionType.Other,type:"withdraw",intentionData:{coinType:n,value:o}}}decodeBorrow(){let e={borrow_request:this.getMoveCallCommand("borrow_request")},t={BorrowEvent:this.simResult.events.find(d=>d.type.includes("lending_market::BorrowEvent"))},n=(0,an.normalizeStructTag)(t.BorrowEvent.parsedJson.coin_type.name),o=`${+t.BorrowEvent.parsedJson.liquidity_amount-+t.BorrowEvent.parsedJson.origination_fee_amount}`;console.log("Decoder.decodeBorrow",n,o);let a=e.borrow_request.MoveCall.arguments[4].Input,s=new Bs.default((0,rn.toHex)((0,rn.fromBase64)(this.inputs[a].Pure.bytes)),16).toString(),l=s===_e.MAX_U64.toString();return console.log("decodeBorrow - isMax:",l,"inputIndex:",a,"inputValue:",s,"MAX_U64.toString():",_e.MAX_U64.toString()),l&&(o=_e.MAX_U64.toString()),{txType:We.TransactionType.Other,type:"borrow",intentionData:{coinType:n,value:o}}}decodeRepay(){let e={RepayEvent:this.simResult.events.find(o=>o.type.includes("lending_market::RepayEvent"))},t=(0,an.normalizeStructTag)(e.RepayEvent.parsedJson.coin_type.name),n=e.RepayEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeRepay",t,n),{txType:We.TransactionType.Other,type:"repay",intentionData:{coinType:t,value:n}}}decodeClaim(){let e={ClaimReward:this.simResult.events.filter(n=>n.type.includes("lending_market::ClaimReward"))},t={};for(let n=0;n<e.ClaimReward.length;n++){let o=e.ClaimReward[n],a=(0,an.normalizeStructTag)(o.parsedJson.coin_type.name),s=o.parsedJson.liquidity_amount;t[a]=`${+(t[a]??"0")+ +s}`}return console.log("Decoder.decodeClaimRewards",t),{txType:We.TransactionType.Other,type:"claim",intentionData:{value:t}}}decodeClaimAndDeposit(){return{txType:We.TransactionType.Other,type:"claimAndDeposit",intentionData:this.decodeClaim().intentionData}}};var om=require("@mysten/sui/transactions");var nm=Ut(require("sort-keys-recursive")),jt=class{constructor(e){this.data=e}serialize(){return JSON.stringify((0,nm.default)(this.data))}};var fi=class i extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:a,obligationOwnerCap:s,obligation:l}=t;if(console.log("BorrowIntention.build",n,o,a,s,l),!s||!l)throw new Error("Obligation not found");let d=new om.Transaction;return await a.borrowAndSendToUser(o.address,s.id,l.id,this.data.coinType,this.data.value,d),d}static fromData(t){return console.log("BorrowIntention.fromData",t),new i(t)}};var sm=require("@mysten/sui/transactions");var am=require("@mysten/sui/utils"),sn=require("@suilend/sdk"),im=require("@suilend/sui-fe"),rm=Ut(require("bignumber.js")),tf=(i,e)=>{let t={[sn.Side.DEPOSIT]:[],[sn.Side.BORROW]:[]};return i.lendingMarket.reserves.forEach(n=>{[sn.Side.DEPOSIT,sn.Side.BORROW].forEach(o=>{let a=o===sn.Side.DEPOSIT?n.depositsPoolRewardManager:n.borrowsPoolRewardManager,s=e.userRewardManagers.find(l=>l.poolRewardManagerId===a.id);s&&(t[o]=a.poolRewards.map((l,d)=>({reserveArrayIndex:n.arrayIndex,rewardIndex:BigInt(d),rewardCoinType:(0,am.normalizeStructTag)(l.coinType.name),side:o})).filter(l=>!(0,im.isSendPoints)(l.rewardCoinType)&&!!s.rewards[Number(l.rewardIndex)]&&new rm.default(s.rewards[Number(l.rewardIndex)].earnedRewards.value.toString()).gt(0)))})}),Object.values(t).flat()},hi=tf;var gi=class i extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:a,obligationOwnerCap:s,obligation:l}=t;if(console.log("ClaimIntention.build",n,o,a,s,l),!s||!l)throw new Error("Obligation not found");let d=new sm.Transaction;return a.claimRewardsAndSendToUser(o.address,s.id,hi(a,l),d),d}static fromData(t){return console.log("ClaimIntention.fromData",t),new i(t)}};var cm=require("@mysten/sui/transactions");var yi=class i extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:a,obligationOwnerCap:s,obligation:l}=t;if(console.log("ClaimAndDepositIntention.build",n,o,a,s,l),!s||!l)throw new Error("Obligation not found");let d=new cm.Transaction;return a.claimRewardsAndDeposit(o.address,s.id,hi(a,l),d),d}static fromData(t){return console.log("ClaimAndDepositIntention.fromData",t),new i(t)}};var lm=require("@mysten/sui/transactions");var bi=class i extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:a,obligationOwnerCap:s,obligation:l}=t;console.log("DepositIntention.build",n,o,a,s,l);let d=new lm.Transaction;return await a.depositIntoObligation(o.address,this.data.coinType,this.data.value,d,s?.id),d}static fromData(t){return console.log("DepositIntention.fromData",t),new i(t)}};var um=require("@mysten/sui/transactions");var Si=class i extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:a,obligationOwnerCap:s,obligation:l}=t;if(console.log("RepayIntention.build",n,o,a,s,l),!s||!l)throw new Error("Obligation not found");let d=new um.Transaction;return await a.repayIntoObligation(o.address,l.id,this.data.coinType,this.data.value,d),d}static fromData(t){return console.log("RepayIntention.fromData",t),new i(t)}};var mm=require("@mysten/sui/transactions");var Ti=class i extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:a,obligationOwnerCap:s,obligation:l}=t;if(console.log("WithdrawIntention.build",n,o,a,s,l),!s||!l)throw new Error("Obligation not found");let d=new mm.Transaction;return await a.withdrawAndSendToUser(o.address,s.id,l.id,this.data.coinType,this.data.value,d),d}static fromData(t){return console.log("WithdrawIntention.fromData",t),new i(t)}};var Ii=async(i,e)=>{let t=await De.SuilendClient.initialize(De.LENDING_MARKET_ID,De.LENDING_MARKET_TYPE,i),n=await De.SuilendClient.getObligationOwnerCaps(e.address,t.lendingMarket.$typeArgs,i),o=await Promise.all(n.map(a=>De.SuilendClient.getObligation(a.obligationId,t.lendingMarket.$typeArgs,i)));return console.log("XXX getUtils - suilendClient:",t,"obligations:",o,"obligationOwnerCaps:",n),{suilendClient:t,obligationOwnerCaps:n,obligations:o}},wi=class{application="Suilend";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await Ii(n,o));let a=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SuilendAppHelper.deserialize - simResult:",a,"utils:",this.utils,"suiClient:",n);let l=new di(t,a).decode();return{txType:pm.TransactionType.Other,txSubType:l.type,intentionData:l.intentionData}}async build(e){let{network:t,txSubType:n,intentionData:o,suiClient:a,account:s}=e;this.utils||(this.utils=await Ii(a,s));let l;switch(n){case"deposit":l=bi.fromData(o);break;case"withdraw":l=Ti.fromData(o);break;case"borrow":l=fi.fromData(o);break;case"repay":l=Si.fromData(o);break;case"claim":l=gi.fromData(o);break;case"claimAndDeposit":l=yi.fromData(o);break;default:throw new Error("not implemented")}let d=window.localStorage.getItem("obligationId"),b=this.utils.obligations?.find(w=>w.id===d)??this.utils.obligations?.[0],T=this.utils.obligationOwnerCaps?.find(w=>w.obligationId===b?.id);return l.build({network:t,suiClient:a,account:s,suilendClient:this.utils.suilendClient,obligationOwnerCap:T,obligation:b})}};var Es=async(i,e)=>{let t=await Ii(i,e),n=await fetch(`${dm.API_URL}/springsui/lst-info`),o=await n.json();if(n?.statusCode===500)throw new Error("Failed to fetch SpringSui LST data");let s=Object.fromEntries(Object.values(o).map(l=>[l.LIQUID_STAKING_INFO.type,l.LIQUID_STAKING_INFO]));return{...t,LIQUID_STAKING_INFO_MAP:s}};var Ci=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isStakeTransaction())return this.decodeStake();if(this.isStakeAndDepositTransaction())return this.decodeStakeAndDeposit();if(this.isConvertTransaction())return this.decodeConvert();if(this.isConvertAndDepositTransaction())return this.decodeConvertAndDeposit();if(this.isUnstakeTransaction())return this.decodeUnstake();throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}hasSuilendDepositTransactionMoveCallCommands(){return!!this.getMoveCallCommand("deposit_liquidity_and_mint_ctokens")&&!!this.getMoveCallCommand("deposit_ctokens_into_obligation")}hasMintMoveCallCommands(){return!!this.getMoveCallCommand("mint")}hasRedeemMoveCallCommands(){return!!this.getMoveCallCommand("redeem")}isStakeTransaction(){return this.hasMintMoveCallCommands()&&!this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}isStakeAndDepositTransaction(){return this.hasMintMoveCallCommands()&&!this.hasRedeemMoveCallCommands()&&this.hasSuilendDepositTransactionMoveCallCommands()}isConvertTransaction(){return this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}isConvertAndDepositTransaction(){return this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&this.hasSuilendDepositTransactionMoveCallCommands()}isUnstakeTransaction(){return!this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}decodeStake(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::MintEvent"))},t=(0,ve.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStake",n),{txType:cn.TransactionType.Other,type:"stake",intentionData:{amount:n,outCoinType:t}}}decodeStakeAndDeposit(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::MintEvent"))},t=(0,ve.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStakeAndDeposit",n),{txType:cn.TransactionType.Other,type:"stakeAndDeposit",intentionData:{amount:n,outCoinType:t}}}decodeConvert(){let e={RedeemEvent:this.simResult.events.find(a=>a.type.includes("liquid_staking::RedeemEvent")),MintEvent:this.simResult.events.find(a=>a.type.includes("liquid_staking::MintEvent"))},t=(0,ve.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=(0,ve.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvert",o),{txType:cn.TransactionType.Other,type:"convert",intentionData:{amount:o,inCoinType:t,outCoinType:n}}}decodeConvertAndDeposit(){let e={RedeemEvent:this.simResult.events.find(a=>a.type.includes("liquid_staking::RedeemEvent")),MintEvent:this.simResult.events.find(a=>a.type.includes("liquid_staking::MintEvent"))},t=(0,ve.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=(0,ve.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvertAndDeposit",o),{txType:cn.TransactionType.Other,type:"convertAndDeposit",intentionData:{amount:o,inCoinType:t,outCoinType:n}}}decodeUnstake(){let e={RedeemEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::RedeemEvent"))},t=(0,ve.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeUnstake",n),{txType:cn.TransactionType.Other,type:"unstake",intentionData:{amount:n,inCoinType:t}}}};var hm=require("@mysten/sui/transactions"),jn=require("@suilend/springsui-sdk");var fm=Ut(require("sort-keys-recursive")),Ht=class{constructor(e){this.data=e}serialize(){return JSON.stringify((0,fm.default)(this.data))}};var ki=class i extends Ht{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:a,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:l,obligation:d}=t;console.log("ConvertIntention.build",n,o,a,s,l,d);let b=await jn.LstClient.initialize(n,Object.values(s).find(k=>k.type===this.data.inCoinType)),T=await jn.LstClient.initialize(n,Object.values(s).find(k=>k.type===this.data.outCoinType)),w=new hm.Transaction;return(0,jn.convertLstsAndRebalanceAndSendToUser)(b,T,w,o.address,this.data.amount),w}static fromData(t){return console.log("ConvertIntention.fromData",t),new i(t)}};var gm=require("@mysten/sui/transactions"),Di=require("@suilend/sdk"),Un=require("@suilend/springsui-sdk");var xi=class i extends Ht{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:a,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:l,obligation:d}=t;console.log("ConvertAndDepositIntention.build",n,o,a,s,l,d);let b=await Un.LstClient.initialize(n,Object.values(s).find(P=>P.type===this.data.inCoinType)),T=await Un.LstClient.initialize(n,Object.values(s).find(P=>P.type===this.data.outCoinType)),w=new gm.Transaction,{obligationOwnerCapId:k,didCreate:x}=(0,Di.createObligationIfNoneExists)(a,w,l),D=(0,Un.convertLstsAndRebalance)(b,T,w,o.address,this.data.amount);return a.deposit(D,this.data.outCoinType,k,w),x&&(0,Di.sendObligationToUser)(k,o.address,w),w}static fromData(t){return console.log("ConvertAndDepositIntention.fromData",t),new i(t)}};var ym=require("@mysten/sui/transactions"),bm=require("@suilend/springsui-sdk");var vi=class i extends Ht{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:a,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:l,obligation:d}=t;console.log("StakeIntention.build",n,o,a,s,l,d);let b=await bm.LstClient.initialize(n,Object.values(s).find(w=>w.type===this.data.outCoinType)),T=new ym.Transaction;return b.mintAmountAndRebalanceAndSendToUser(T,o.address,this.data.amount),T}static fromData(t){return console.log("StakeIntention.fromData",t),new i(t)}};var Sm=require("@mysten/sui/transactions"),Mi=require("@suilend/sdk"),Tm=require("@suilend/springsui-sdk");var Ai=class i extends Ht{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:a,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:l,obligation:d}=t;console.log("StakeAndDepositIntention.build",n,o,a,s,l,d);let b=await Tm.LstClient.initialize(n,Object.values(s).find(D=>D.type===this.data.outCoinType)),T=new Sm.Transaction,{obligationOwnerCapId:w,didCreate:k}=(0,Mi.createObligationIfNoneExists)(a,T,l),x=b.mintAmountAndRebalance(T,o.address,this.data.amount);return a.deposit(x,this.data.outCoinType,w,T),k&&(0,Mi.sendObligationToUser)(w,o.address,T),T}static fromData(t){return console.log("StakeAndDepositIntention.fromData",t),new i(t)}};var Im=require("@mysten/sui/transactions"),wm=require("@suilend/springsui-sdk");var Oi=class i extends Ht{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:a,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:l,obligation:d}=t;console.log("UnstakeIntention.build",n,o,a,s,l,d);let b=await wm.LstClient.initialize(n,Object.values(s).find(w=>w.type===this.data.inCoinType)),T=new Im.Transaction;return b.redeemAmountAndRebalanceAndSendToUser(T,o.address,this.data.amount),T}static fromData(t){return console.log("UnstakeIntention.fromData",t),new i(t)}};var Pi=class{application="SpringSui";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await Es(n,o));let a=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SpringSuiAppHelper.deserialize",a);let l=new Ci(t,a).decode();return{txType:Cm.TransactionType.Other,txSubType:l.type,intentionData:l.intentionData}}async build(e){let{network:t,txSubType:n,intentionData:o,suiClient:a,account:s}=e;this.utils||(this.utils=await Es(a,s));let l;switch(n){case"stake":l=vi.fromData(o);break;case"stakeAndDeposit":l=Ai.fromData(o);break;case"convert":l=ki.fromData(o);break;case"convertAndDeposit":l=xi.fromData(o);break;case"unstake":l=Oi.fromData(o);break;default:throw new Error("not implemented")}return l.build({network:t,suiClient:a,account:s,suilendClient:this.utils.suilendClient,LIQUID_STAKING_INFO_MAP:this.utils.LIQUID_STAKING_INFO_MAP,obligationOwnerCap:this.utils.obligationOwnerCaps?.[0],obligation:this.utils.obligations?.[0]})}};var Dm=require("@msafe/sui3-utils");var Ns=require("@msafe/sui3-utils");var Ri=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isMintTransaction()){let e=this.getLiquidityChangeEvent("MintEvent");if(!e)throw new Error("No liquidity change event found. Unable to decode transaction.");let t=e.parsedJson;return console.log("Decoder event data - ",t),this.decodeMint(t)}if(this.isRedeemTransaction()){let e=this.getLiquidityChangeEvent("RedeemEvent");if(!e)throw new Error("No liquidity change event found. Unable to decode transaction.");let t=e.parsedJson;return console.log("Decoder event data - ",t),this.decodeRedeem(t)}throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}getLiquidityChangeEvent(e){return this.simResult.events.find(t=>this.isLiquidityChangeEventType(t.type,e))}isLiquidityChangeEventType(e,t){return e.includes(t)}isMintTransaction(){return!!this.getMoveCallCommand("mint")}isRedeemTransaction(){return!!this.getMoveCallCommand("redeem")}decodeMint(e){let{event:{sui_amount_in:t}}=e;return console.log("Decoder.decodeMint",t),{txType:Ns.TransactionType.Other,type:"mint",intentionData:{amount:t}}}decodeRedeem(e){let{event:{lst_amount_in:t}}=e;return console.log("Decoder.decodeRedeem",t),{txType:Ns.TransactionType.Other,type:"redeem",intentionData:{amount:t}}}};var km=require("@alphafi/stsui-sdk");var Bi=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{amount:o}=this.data,a={lstInfo:"0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5",lstCointype:"0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI"},l=await new km.LST(a).mint(o,n.address);return l.setGasBudget(1e8),l}static fromData(t){return console.log("MintIntention.fromData",t),new i(t)}};var xm=require("@alphafi/stsui-sdk");var Ei=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{amount:o}=this.data,a={lstInfo:"0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5",lstCointype:"0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI"},l=await new xm.LST(a).redeem(o,n.address);return l.setGasBudget(1e8),l}static fromData(t){return console.log("RedeemIntention.fromData",t),new i(t)}};var Ni=class{application="stsui";supportSDK="@mysten/sui";async deserialize(e){let{transaction:t,suiClient:n}=e,o=await n.devInspectTransactionBlock({sender:t.getData().sender,transactionBlock:t});console.log("StSuiHelper Sim result - ",o);let s=new Ri(t,o).decode();return{txType:Dm.TransactionType.Other,txSubType:s.type,intentionData:s.intentionData}}async build(e){let{account:t}=e;console.log("StSui build transaction type",e.txSubType);let n;switch(e.txSubType){case"mint":n=Bi.fromData(e.intentionData);break;case"redeem":n=Ei.fromData(e.intentionData);break;default:throw new Error("build not implemented")}return n.build({account:t})}};var Qm=require("@msafe/sui3-utils"),Jm=require("turbos-clmm-sdk");var Nt=require("@msafe/sui3-utils"),Le=require("@mysten/bcs"),je=require("@mysten/sui/bcs"),vm=require("turbos-clmm-sdk");var zt={PackageId:"0x02fe4933f4521250e55a15441096d1d4a38a7311195b0bca126fc0138c1f5a97",Claim:"0x0c822cec42f7ca703696b4232f1c47b348330c23580172a29aab465bc071d894",turbosCoinType:"0x5d1f47ea69bb0de31c313d7acf89b890dbb8991ea8e03c6c355171f84bb1ba4a::turbos::TURBOS"},Gt={PackageId:"0xdee9"};var af=(i,e,t,n)=>{if(i===1)switch(n.findIndex(s=>s===e)){case 0:return[!0,!0];case 1:return[!0,!1];case 2:return[!1,!0];case 3:return[!1,!1];default:throw new Error(`not target: ${e}`)}switch(t.findIndex(a=>a===e)){case 0:return[!0];case 1:return[!1];default:throw new Error(`not target: ${e}`)}},Wi=class{constructor(e,t,n){this.txb=e;this.turbosSdk=t;this.config=n}get transactions(){return this.txb.getData().commands}get swap1Layer(){return[`${this.config.PackageId}::swap_router::swap_a_b`,`${this.config.PackageId}::swap_router::swap_b_a`]}get swap2Layer(){return[`${this.config.PackageId}::swap_router::swap_a_b_b_c`,`${this.config.PackageId}::swap_router::swap_a_b_c_b`,`${this.config.PackageId}::swap_router::swap_b_a_b_c`,`${this.config.PackageId}::swap_router::swap_b_a_c_b`]}async decode(e){if(this.isSwapTransaction())return this.decodeSwap();if(this.isAddLiquidityTransaction())return this.decodeAddLiquidity();if(this.isIncreaseLiquidityTransaction())return this.decodeIncreaseLiquidity(e);if(this.isRemoveLiquidityTransaction())return this.decodeRemoveLiquidity(e);if(this.isDecreaseLiquidityTransaction())return this.decodeDecreaseLiquidity(e);if(this.isRemoveLiquidityWithReturnTransaction())return this.decodeRemoveLiquidityWithReturn(e);if(this.isDecreaseLiquidityWithReturnTransaction())return this.decodeDecreaseLiquidityWithReturn(e);if(this.isCollectFeeTransaction())return this.decodeCollectFee();if(this.isCollectRewardTransaction())return this.decodeCollectReward();if(this.isBurnTransaction())return this.decodeBurn();if(this.isPrixClaimTransaction())return this.decodePrixClaim();if(this.isPrixJoinTransaction())return this.decodePrixJoin();if(this.isSwapExactBaseForQuoteTransaction())return this.decodeSwapExactBaseForQuote();if(this.isSwapExactQuoteForBaseTransaction())return this.decodeSwapExactQuoteForBase();throw new Error("Unknown transaction type")}getMoveCallTransaction(e){return this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===e:!1)}getMoveCallsTransaction(e){return e.every(t=>this.transactions.find(n=>n.$kind==="MoveCall"?`${n.MoveCall.package}::${n.MoveCall.module}::${n.MoveCall.function}`===t:!1))}getSwapMoveCallTransaction(e){return this.transactions.find(t=>{if(t.$kind==="MoveCall"){let n=`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`;return!!e.includes(n)}return!1})}isSwapTransaction(){return!!this.getSwapMoveCallTransaction([...this.swap1Layer,...this.swap2Layer])}isAddLiquidityTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::mint`)}isIncreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::increase_liquidity`)}isDecreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::decrease_liquidity`)}isDecreaseLiquidityWithReturnTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::decrease_liquidity_with_return_`)}isCollectFeeTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::collect`)}isCollectRewardTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::collect_reward`)}isBurnTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::burn`)}isPrixJoinTransaction(){return!!this.getMoveCallTransaction(`${zt.PackageId}::claim::join`)}isPrixClaimTransaction(){return!!this.getMoveCallTransaction(`${zt.PackageId}::claim::claim`)}isRemoveLiquidityTransaction(){return!!this.getMoveCallsTransaction([`${this.config.PackageId}::position_manager::decrease_liquidity`,`${this.config.PackageId}::position_manager::burn`])}isRemoveLiquidityWithReturnTransaction(){return!!this.getMoveCallsTransaction([`${this.config.PackageId}::position_manager::decrease_liquidity_with_return_`,`${this.config.PackageId}::position_manager::burn`])}isSwapExactBaseForQuoteTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::clob_v2::swap_exact_base_for_quote`)}isSwapExactQuoteForBaseTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::clob_v2::swap_exact_quote_for_base`)}async decodeSwap(){let e=this.transactions.find(x=>x.$kind==="MoveCall"),t=0,n=`${e.MoveCall.package}::${e.MoveCall.module}::${e.MoveCall.function}`;console.log(n,"moveCallTarget"),this.swap2Layer.includes(n)&&(t=1);let o=af(t,n,this.swap1Layer,this.swap2Layer),a=o.map((x,D)=>{let P=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(D)),q=this.helper.decodeInputU128(this.helper.getInputsIndex(4+D+t)),$=this.turbosSdk.math.sqrtPriceX64ToTickIndex(new vm.BN(q.toString()));return{pool:P,a2b:x,nextTickIndex:$}}),s=o[0]||t===1?e.MoveCall.typeArguments[0]:e.MoveCall.typeArguments[1],l=t===1?e.MoveCall.typeArguments[4]:o[0]?e.MoveCall.typeArguments[1]:e.MoveCall.typeArguments[0],d=this.helper.decodeInputAddress(this.helper.getInputsIndex(6+2*t)),b=this.helper.decodeInputU64(this.helper.getInputsIndex(7+2*t)),T=this.helper.decodeInputBool(this.helper.getInputsIndex(5+2*t)),w=this.helper.decodeInputU64(this.helper.getInputsIndex(2+t)),k=this.helper.decodeInputU64(this.helper.getInputsIndex(3+t));return{txType:Nt.TransactionType.Other,type:"Swap",intentionData:{routes:a,coinTypeA:s,coinTypeB:l,address:d,amountA:T?w:k,amountB:T?k:w,amountSpecifiedIsInput:T,slippage:"0.1",deadline:b}}}decodeAddLiquidity(){console.log(this.helper,"decodeAddLiquidity this.helper");let e=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),t=this.helper.decodeInputAddress(this.helper.getInputsIndex(12)),n=this.helper.decodeInputU64(this.helper.getInputsIndex(8)),o=this.helper.decodeInputU64(this.helper.getInputsIndex(9)),a=this.helper.decodeInputU32(this.helper.getInputsIndex(4)),s=this.helper.decodeInputBool(this.helper.getInputsIndex(5)),l=this.helper.decodeInputU32(this.helper.getInputsIndex(6)),d=this.helper.decodeInputBool(this.helper.getInputsIndex(7)),b=this.helper.decodeInputU64(this.helper.getInputsIndex(13));return{txType:Nt.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:e,slippage:30,address:t,amountA:n,amountB:o,tickLower:s?-a:a,tickUpper:d?-l:l,deadline:b}}}decodeIncreaseLiquidity(e){console.log(this.helper,"decodeIncreaseLiquidity this.helper");let t=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),n=this.helper.decodeOwnedObjectId(this.helper.getInputsIndex(4)),o=this.helper.decodeInputU64(this.helper.getInputsIndex(5)),a=this.helper.decodeInputU64(this.helper.getInputsIndex(6)),s=this.helper.decodeInputU64(this.helper.getInputsIndex(9));return{txType:Nt.TransactionType.Other,type:"IncreaseLiquidity",intentionData:{pool:t,slippage:30,address:e,amountA:o,amountB:a,nft:n,deadline:s}}}decodeDecreaseLiquidity(e){console.log(this.helper,"decodeDecreaseLiquidity this.helper");let t=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),n=this.helper.decodeOwnedObjectId(this.helper.getInputsIndex(2)),o=this.helper.decodeInputU64(this.helper.getInputsIndex(3)),a=this.helper.decodeInputU64(this.helper.getInputsIndex(4)),s=this.helper.decodeInputU64(this.helper.getInputsIndex(5)),l=this.helper.decodeInputU64(this.helper.getInputsIndex(6));return{txType:Nt.TransactionType.Other,type:"DecreaseLiquidity",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:a,amountB:s,slippage:10,address:e,deadline:l}}}decodeDecreaseLiquidityWithReturn(e){console.log(this.helper,"decodeDecreaseLiquidityWithReturn this.helper");let t=this.helper.decodeSharedObjectId(0),n=this.helper.decodeOwnedObjectId(2),o=this.helper.decodeInputU64(3),a=this.helper.decodeInputU64(4),s=this.helper.decodeInputU64(5),l=this.helper.decodeInputU64(6);return{txType:Nt.TransactionType.Other,type:"DecreaseLiquidityWithReturn",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:a,amountB:s,slippage:10,address:e,deadline:l}}}decodeCollectFee(){console.log(this.helper,"decodeCollectFee this.helper");let e=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),t=this.helper.decodeOwnedObjectId(this.helper.getInputsIndex(2)),n=this.helper.decodeInputAddress(this.helper.getInputsIndex(5)),o=this.helper.decodeInputU64(this.helper.getInputsIndex(3)),a=this.helper.decodeInputU64(this.helper.getInputsIndex(4)),s=this.helper.decodeInputU64(this.helper.getInputsIndex(6));return{txType:Nt.TransactionType.Other,type:"CollectFee",intentionData:{pool:e,address:n,collectAmountA:o,collectAmountB:a,nft:t,deadline:s}}}decodeCollectReward(){console.log(this.helper,"decodeCollectReward this.helper");let e=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),t=this.helper.decodeOwnedObjectId(this.helper.getInputsIndex(2)),n=this.helper.decodeInputAddress(this.helper.getInputsIndex(6)),o=[0,0,0];this.collectRewardHelper.forEach(s=>{let l=s.decodeInputU64(s.getInputsIndex(4)),d=s.decodeInputU64(s.getInputsIndex(5));o[l]=d});let a=this.helper.decodeInputU64(7);return{txType:Nt.TransactionType.Other,type:"CollectReward",intentionData:{pool:e,address:n,rewardAmounts:o,nft:t,deadline:a}}}decodeBurn(){console.log(this.helper,"decodeBurn this.helper");let e=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),t=this.helper.decodeOwnedObjectId(this.helper.getInputsIndex(2));return{txType:Nt.TransactionType.Other,type:"Burn",intentionData:{pool:e,nft:t}}}decodeRemoveLiquidity(e){console.log(this.helper,"decodeRemoveLiquidity this.helper");let t=30,n=this.decreaseLiquidityHelper.decodeSharedObjectId(this.decreaseLiquidityHelper.getInputsIndex(0)),o=this.decreaseLiquidityHelper.decodeOwnedObjectId(this.decreaseLiquidityHelper.getInputsIndex(2)),a=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(3)),s=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(4)),l=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(5)),d=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(6)),b=[0,0,0];this.collectRewardHelper.forEach(k=>{let x=k.decodeInputU64(k.getInputsIndex(4)),D=k.decodeInputU64(k.getInputsIndex(5));b[x]=D});let T=this.collectFeeHelper.decodeInputU64(this.collectFeeHelper.getInputsIndex(3))||0,w=this.collectFeeHelper.decodeInputU64(this.collectFeeHelper.getInputsIndex(4))||0;return{txType:Nt.TransactionType.Other,type:"RemoveLiquidity",intentionData:{pool:n,decreaseLiquidity:a,nft:o,amountA:(s/(100-t)*100).toFixed(0),amountB:(l/(100-t)*100).toFixed(0),slippage:t,address:e,collectAmountA:T,collectAmountB:w,rewardAmounts:b,deadline:d}}}decodeRemoveLiquidityWithReturn(e){console.log(this.helper,"decodeRemoveLiquidityWithReturn this.helper");let t=this.decreaseLiquidityHelper.decodeSharedObjectId(0),n=this.decreaseLiquidityHelper.decodeOwnedObjectId(2),o=this.decreaseLiquidityHelper.decodeInputU64(3),a=this.decreaseLiquidityHelper.decodeInputU64(4),s=this.decreaseLiquidityHelper.decodeInputU64(5),l=this.decreaseLiquidityHelper.decodeInputU64(6),d=this.collectRewardHelper.map(w=>w.decodeInputU64(5)),b=this.collectFeeHelper.decodeInputU64(3)||0,T=this.collectFeeHelper.decodeInputU64(4)||0;return{txType:Nt.TransactionType.Other,type:"removeLiquidityWithReturn",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:a,amountB:s,slippage:10,address:e,collectAmountA:b,collectAmountB:T,rewardAmounts:d,deadline:l}}}decodePrixClaim(){return{txType:Nt.TransactionType.Other,type:"PrixClaim",intentionData:{}}}decodePrixJoin(){return{txType:Nt.TransactionType.Other,type:"PrixJoin",intentionData:{}}}decodeSwapExactBaseForQuote(){let e=this.swapExactBaseForQuoteHelper.decodeSharedObjectId(0),t=this.swapExactBaseForQuoteHelper.decodeInputU64(3),n=this.swapExactBaseForQuoteHelper.shortTypeArg(0),o=this.swapExactBaseForQuoteHelper.shortTypeArg(1);return{txType:Nt.TransactionType.Other,type:"SwapExactBaseForQuote",intentionData:{poolId:e,amountIn:t,token1:n,token2:o}}}decodeSwapExactQuoteForBase(){let e=this.swapExactQuoteForBaseHelper.decodeSharedObjectId(0),t=this.swapExactQuoteForBaseHelper.decodeInputU64(3),n=this.swapExactQuoteForBaseHelper.shortTypeArg(0),o=this.swapExactQuoteForBaseHelper.shortTypeArg(1);return{txType:Nt.TransactionType.Other,type:"SwapExactQuoteForBase",intentionData:{poolId:e,amountIn:t,token1:n,token2:o}}}get helper(){let e=this.transactions.find(t=>{if(t.$kind==="MoveCall"){let n=`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`;return n!=="0x2::coin::zero"&&n!=="0x0000000000000000000000000000000000000000000000000000000000000002::coin::zero"}return!1});return new Ae(e,this.txb)}get collectRewardHelper(){return this.transactions.filter(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${this.config.PackageId}::position_manager::collect_reward`:!1).map(t=>new Ae(t,this.txb))}get collectFeeHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${this.config.PackageId}::position_manager::collect`:!1);return new Ae(e,this.txb)}get decreaseLiquidityHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${this.config.PackageId}::position_manager::decrease_liquidity`:!1);return new Ae(e,this.txb)}get swapExactBaseForQuoteHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${Gt.PackageId}::clob_v2::swap_exact_base_for_quote`:!1);return new Ae(e,this.txb)}get swapExactQuoteForBaseHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${Gt.PackageId}::clob_v2::swap_exact_quote_for_base`:!1);return new Ae(e,this.txb)}},Ae=class{constructor(e,t){this.moveCall=e;this.txb=t}get inputs(){return this.txb.getData().inputs}getInputsIndex(e){return this.moveCall.MoveCall.arguments[e].Input}decodeSharedObjectId(e){return this.inputs[e].Object?.SharedObject?.objectId||this.inputs[e].UnresolvedObject.objectId}decodeOwnedObjectId(e){return this.inputs[e].Object?.ImmOrOwnedObject?.objectId||this.inputs[e].UnresolvedObject.objectId}decodeInputU128(e){return Number(je.bcs.u128().parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes))))}decodeInputU64(e){return Number(je.bcs.u64().parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes))))}decodeInputU32(e){return Number(je.bcs.u32().parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes))))}decodeInputU8(e){return Number(je.bcs.u8().parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes))))}decodeInputAddress(e){return je.bcs.Address.parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes)))}decodeInputBool(e){return je.bcs.bool().parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes)))}shortTypeArg(e){return this.moveCall.MoveCall.typeArguments[e]}txArg(e){return this.moveCall.MoveCall.arguments[e]}};var Am=require("turbos-clmm-sdk");var _i=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Am.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:a,amountA:s,amountB:l,slippage:d,tickLower:b,tickUpper:T,deadline:w,txb:k}=this.data;return n.pool.addLiquidity({pool:o,slippage:d,address:a,amountA:s,amountB:l,tickLower:b,tickUpper:T,deadline:w,txb:k})}static fromData(t){return new i(t)}};var Mm=require("turbos-clmm-sdk");var Li=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Mm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,nft:a,txb:s}=this.data;return n.position.burn({pool:o,nft:a,txb:s})}static fromData(t){return new i(t)}};var Om=require("turbos-clmm-sdk");var ji=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Om.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:a,nft:s,collectAmountA:l,collectAmountB:d,deadline:b,txb:T}=this.data;return n.pool.collectFee({pool:o,address:a,collectAmountA:l,collectAmountB:d,nft:s,deadline:b,txb:T})}static fromData(t){return new i(t)}};var Pm=require("turbos-clmm-sdk");var Ui=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Pm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:a,nft:s,rewardAmounts:l,deadline:d,txb:b}=this.data;return n.pool.collectReward({pool:o,address:a,rewardAmounts:l,nft:s,deadline:d,txb:b})}static fromData(t){return new i(t)}};var Rm=require("turbos-clmm-sdk");var qi=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Rm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{fee:o,address:a,tickLower:s,tickUpper:l,sqrtPrice:d,slippage:b,coinTypeA:T,coinTypeB:w,amountA:k,amountB:x,deadline:D,txb:P}=this.data;return n.pool.createPool({fee:o,amountA:k,amountB:x,address:a,tickLower:s,tickUpper:l,sqrtPrice:d,slippage:b,coinTypeA:T,coinTypeB:w,deadline:D,txb:P})}static fromData(t){return new i(t)}};var Bm=require("turbos-clmm-sdk");var Fi=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Bm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:a,amountA:s,amountB:l,slippage:d,nft:b,decreaseLiquidity:T,deadline:w,txb:k}=this.data;return n.pool.decreaseLiquidity({pool:o,slippage:d,address:a,amountA:s,amountB:l,nft:b,decreaseLiquidity:T,deadline:w,txb:k})}static fromData(t){return new i(t)}};var Em=require("turbos-clmm-sdk");var Ki=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Em.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:a,amountA:s,amountB:l,slippage:d,nft:b,decreaseLiquidity:T,deadline:w}=this.data,{txb:k,coinA:x,coinB:D}=await n.pool.decreaseLiquidityWithReturn({pool:o,slippage:d,address:a,amountA:s,amountB:l,nft:b,decreaseLiquidity:T,deadline:w});return k.transferObjects([x,D],this.data.address),k}static fromData(t){return new i(t)}};var Nm=require("turbos-clmm-sdk");var $i=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Nm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:a,amountA:s,amountB:l,slippage:d,nft:b,deadline:T,txb:w}=this.data;return n.pool.increaseLiquidity({pool:o,slippage:d,address:a,amountA:s,amountB:l,nft:b,deadline:T,txb:w})}static fromData(t){return new i(t)}};var Wm=require("@mysten/sui/transactions"),_m=require("@mysten/sui/utils");var Vi=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Wm.Transaction;return n.moveCall({target:`${zt.PackageId}::claim::claim`,typeArguments:[zt.turbosCoinType],arguments:[n.object(zt.Claim),n.object(_m.SUI_CLOCK_OBJECT_ID)]}),n}static fromData(t){return new i(t)}};var Lm=require("@mysten/sui/transactions");var Hi=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Lm.Transaction;return n.moveCall({target:`${zt.PackageId}::claim::join`,typeArguments:[zt.turbosCoinType],arguments:[n.object(zt.Claim)]}),n}static fromData(t){return new i(t)}};var jm=require("@mysten/sui/transactions"),Um=require("turbos-clmm-sdk");var Xi=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Um.TurbosSdk(t.network.replace("sui:",""),t.suiClient),o=new jm.Transaction;return o=await n.pool.collectFee({txb:o,...this.data}),o=await n.pool.collectReward({txb:o,...this.data}),o=await n.pool.decreaseLiquidity({txb:o,...this.data}),o=await n.position.burn({txb:o,nft:this.data.nft,pool:this.data.pool}),o}static fromData(t){return new i(t)}};var qm=require("turbos-clmm-sdk");var zi=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new qm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{txb:o,coinA:a,coinB:s}=await n.pool.removeLiquidityWithReturn({...this.data});return o.transferObjects([a,s],this.data.address),o}static fromData(t){return new i(t)}};var Fm=require("turbos-clmm-sdk");var Gi=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(this.data,"this.data");let n=new Fm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{routes:o,coinTypeA:a,coinTypeB:s,address:l,amountA:d,amountB:b,slippage:T,amountSpecifiedIsInput:w,deadline:k,txb:x}=this.data;return n.trade.swap({routes:o,coinTypeA:a,coinTypeB:s,address:l,amountA:d,amountB:b,amountSpecifiedIsInput:w,slippage:T,deadline:k,txb:x})}static fromData(t){return new i(t)}};var zm=require("turbos-clmm-sdk");var Ws=require("@mysten/sui/transactions"),_s=require("@mysten/sui/utils");var Km=require("turbos-clmm-sdk");var qn=class{constructor(e){this.turbosSdk=e}async getCoinsData(e,t,n){let o=[],a;do a=await this.turbosSdk.provider.getCoins({owner:e,coinType:t,cursor:a?.nextCursor}),o.push(...a.data);while(a.hasNextPage);let s=[],l=0;return o.sort((d,b)=>Number(b.balance)-Number(d.balance)).some(d=>l>=n?!0:(l+=Number(d.balance),s.push(d),!1)),s}splitAndMergeCoin(e,t,n){if(!e||e.length<1)return[void 0,void 0];if(this.isSuiCoinAddress(e[0].coinType)){let[s]=n.splitCoins(n.gas,[n.pure.u64(t)]);return[s,void 0]}let o=n.object(e[0].coinObjectId);e.length>1&&n.mergeCoins(o,e.slice(1).map(s=>n.object(s.coinObjectId)));let[a]=n.splitCoins(o,[n.pure.u64(t)]);return[a,o]}isSuiCoinAddress(e){return e.toLocaleLowerCase()==="0x2::sui::sui"}async IsAccountCap(e){let t=await this.turbosSdk.provider.getOwnedObjects({owner:e,options:{showContent:!0,showType:!0,showOwner:!0},filter:{StructType:`${Gt.PackageId}::custodian_v2::AccountCap`}});return t.data[0]?.data?(0,Km.unstable_getObjectId)(t.data[0].data):void 0}createAccount(e){let[t]=e.moveCall({typeArguments:[],target:`${Gt.PackageId}::clob_v2::create_account`,arguments:[]});return t}zero(e,t){return t.moveCall({typeArguments:[e],target:"0x2::coin::zero",arguments:[]})}};var $m=89,Vm=1e6,Hm=async i=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:a,turbosSdk:s}=i,l=new Ws.Transaction,d=new qn(s),b=await d.getCoinsData(a,t,o),[T,w]=d.splitAndMergeCoin(b,o,l);if(!T)throw new Error(`Not enough balance: ${t}`);let k=await d.IsAccountCap(a),x=k?l.object(k):d.createAccount(l),[D,P,q]=l.moveCall({typeArguments:[e,t],target:`${Gt.PackageId}::clob_v2::swap_exact_quote_for_base`,arguments:[l.object(String(n)),l.pure.u64($m),x,l.pure.u64(o),l.object((0,_s.normalizeSuiObjectId)("0x6")),T]});return w&&l.transferObjects([w],l.pure.address(a)),l.transferObjects([D],l.pure.address(a)),l.transferObjects([P],l.pure.address(a)),k||l.transferObjects([x],l.pure.address(a)),l.setSenderIfNotSet(a),l.setGasBudget(Vm),l},Xm=async i=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:a,turbosSdk:s}=i,l=new Ws.Transaction,d=new qn(s),b=await d.getCoinsData(a,e,o),[T,w]=d.splitAndMergeCoin(b,o,l);if(!T)throw new Error(`Not enough balance: ${e}`);let k=await d.IsAccountCap(a),x=k?l.object(k):d.createAccount(l),D=d.zero(t,l),[P,q,$]=l.moveCall({typeArguments:[e,t],target:`${Gt.PackageId}::clob_v2::swap_exact_base_for_quote`,arguments:[l.object(String(n)),l.pure.u64($m),x,l.pure.u64(o),T,D,l.object((0,_s.normalizeSuiObjectId)("0x6"))]});return w&&l.transferObjects([w],l.pure.address(a)),l.transferObjects([P],l.pure.address(a)),l.transferObjects([q],l.pure.address(a)),k||l.transferObjects([x],l.pure.address(a)),l.setSenderIfNotSet(a),l.setGasBudget(Vm),l};var Qi=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new zm.TurbosSdk(t.network.replace("sui:",""),t.suiClient);return await Xm({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new i(t)}};var Gm=require("turbos-clmm-sdk");var Ji=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Gm.TurbosSdk(t.network.replace("sui:",""),t.suiClient);return await Hm({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new i(t)}};var Yi=class{application="turbos";supportSDK="@mysten/sui";async deserialize(e){console.log(e,"input");let t=new Jm.TurbosSdk(e.network.replace("sui:","")),n=await t.contract.getConfig(),{transaction:o,account:a}=e,l=await new Wi(o,t,n).decode(a.address);return{txType:Qm.TransactionType.Other,txSubType:l.type,intentionData:l.intentionData}}async build(e){let{suiClient:t,account:n,network:o}=e;console.log(e.intentionData,"intentionData");let a;switch(e.txSubType){case"CreatePool":a=qi.fromData(e.intentionData);break;case"AddLiquidity":a=_i.fromData(e.intentionData);break;case"IncreaseLiquidity":a=$i.fromData(e.intentionData);break;case"DecreaseLiquidity":a=Fi.fromData(e.intentionData);break;case"DecreaseLiquidityWithReturn":a=Ki.fromData(e.intentionData);break;case"RemoveLiquidity":a=Xi.fromData(e.intentionData);break;case"removeLiquidityWithReturn":a=zi.fromData(e.intentionData);break;case"CollectFee":a=ji.fromData(e.intentionData);break;case"CollectReward":a=Ui.fromData(e.intentionData);break;case"Burn":a=Li.fromData(e.intentionData);break;case"Swap":a=Gi.fromData(e.intentionData);break;case"PrixJoin":a=Hi.fromData(e.intentionData);break;case"PrixClaim":a=Vi.fromData(e.intentionData);break;case"SwapExactBaseForQuote":a=Qi.fromData(e.intentionData);break;case"SwapExactQuoteForBase":a=Ji.fromData(e.intentionData);break;default:throw new Error("not implemented")}return a.build({suiClient:t,account:n,network:o})}};var ep=require("@msafe/sui3-utils");var Zi=require("@msafe/sui3-utils"),Ls=require("@mysten/sui.js/bcs"),Me=require("@mysten/sui.js/utils");var rf={packageId:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",poolObjectId:"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf",metadataObjectId:"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",systemStateObjectId:"0x0000000000000000000000000000000000000000000000000000000000000005",certType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",gasBudget:5e7},vt=rf;var tr=class{constructor(e){this.txb=e}decode(){if(console.log("txb",this.txb),this.isStakeTransaction())return this.decodeStake();if(this.isUnStakeTransaction())return this.decodeUnStake();if(this.isClaimTicketTransaction())return this.decodeClaimTicket();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(e){return this.transactions.find(t=>t.kind==="MoveCall"&&t.target===e)}isStakeTransaction(){return!!this.getMoveCallTransaction(`${vt.packageId}::native_pool::stake`)}isUnStakeTransaction(){return!!this.getMoveCallTransaction(`${vt.packageId}::native_pool::unstake`)}isClaimTicketTransaction(){return!!this.getMoveCallTransaction(`${vt.packageId}::native_pool::burn_ticket`)}decodeStake(){let e=this.transactions[0].amounts[0].value.toNumber();return{txType:Zi.TransactionType.Other,type:"Stake",intentionData:{amount:e}}}decodeUnStake(){let t=this.transactions.find(n=>n.kind==="SplitCoins").amounts[0].value.toNumber();return{txType:Zi.TransactionType.Other,type:"UnStake",intentionData:{amount:t}}}decodeClaimTicket(){let e=this.helper.decodeOwnedObjectId(2);return console.log(e),{txType:Zi.TransactionType.Other,type:"ClaimTicket",intentionData:{ticketId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(vt.packageId));return new js(e,this.txb)}},js=class i{constructor(e,t){this.moveCall=e;this.txb=t}decodeSharedObjectId(e){let t=this.getInputParam(e);return i.getSharedObjectId(t)}decodeOwnedObjectId(e){let t=this.getInputParam(e);return i.getOwnedObjectId(t)}decodeInputU64(e){let t=this.decodePureArg(e,"u64");return Number(t)}decodeInputU8(e){let t=this.decodePureArg(e,"u8");return Number(t)}decodeInputAddress(e){let t=this.decodePureArg(e,"address");return(0,Me.normalizeSuiAddress)(t)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,t){let n=this.getInputParam(e);return i.getPureInputValue(n,t)}getInputParam(e){let t=this.moveCall.arguments[e];if(t.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[t.index]}static getPureInputValue(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return Ls.bcs.de(t,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Me.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Me.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Me.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Me.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return Ls.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,Me.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var Ym=require("@mysten/sui.js/transactions");var er=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(t);let n=new Ym.TransactionBlock,{ticketId:o}=this.data;return n.moveCall({target:`${vt.packageId}::native_pool::burn_ticket`,arguments:[n.object(vt.poolObjectId),n.object(vt.systemStateObjectId),n.object(o)]}),n}static fromData(t){return new i(t)}};var Zm=require("@mysten/sui.js/transactions");var nr=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(t);let n=new Zm.TransactionBlock,{amount:o}=this.data,[a]=n.splitCoins(n.gas,[n.pure(o)]);return n.moveCall({target:`${vt.packageId}::native_pool::stake`,arguments:[n.object(vt.poolObjectId),n.object(vt.metadataObjectId),n.object(vt.systemStateObjectId),a]}),n}static fromData(t){return new i(t)}};var tp=require("@mysten/sui.js/transactions");var or=class i extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(t);let n=new tp.TransactionBlock,{amount:o}=this.data,a=(await t.suiClient.getAllCoins({owner:t.account.address,limit:100})).data,[s,...l]=a.filter(T=>T.coinType.split("::")[0]===vt.certType.split("::")[0]),d=n.object(s.coinObjectId);l.length&&n.mergeCoins(d,l.map(T=>n.object(T.coinObjectId)));let b=n.splitCoins(n.object(s.coinObjectId),[n.pure(o)]);return n.moveCall({target:`${vt.packageId}::native_pool::unstake`,arguments:[n.object(vt.poolObjectId),n.object(vt.metadataObjectId),n.object(vt.systemStateObjectId),b]}),n}static fromData(t){return new i(t)}};var ar=class{application="volo";supportSDK="@mysten/sui.js";async deserialize(e){let{transactionBlock:t}=e,o=new tr(t).decode();return{txType:ep.TransactionType.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(e.txSubType){case"Stake":o=nr.fromData(e.intentionData);break;case"UnStake":o=or.fromData(e.intentionData);break;case"ClaimTicket":o=er.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var fp=require("@msafe/sui3-utils");var Us=require("@cetusprotocol/common-sdk"),se=require("@msafe/sui3-utils"),ln=require("@mysten/bcs"),un=require("@mysten/sui/bcs");var ir=class{constructor(e,t){this.transaction=e;this.appContext=t}async decode(){if(this.isOpenPositionTx())return this.decodeOpenPositionTx();if(this.isClosePositionTx())return this.decodeClosePositionTx();if(this.isProvideLiquidityTx())return this.decodeProvideLiquidityTx();if(this.isRemoveLiquidityTx())return this.decodeRemoveLiquidityTx();if(this.isCollectRewardsAndFeeTx())return this.decodeCollectRewardsAndFeeTx();if(this.isCollectRewardsTx())return this.decodeCollectRewardsTx();if(this.isCollectFeeTx())return this.decodeCollectFeeTx();if(this.isAggregator7KSwapTx())return this.decodeAggregator7KSwapTx();throw new Error("Unknown transaction type")}decodeOpenPositionTx(){let e=this.getMoveCallCommand("open_position"),t=this.getMoveCallCommand("provide_liquidity_with_fixed_amount");return{txType:se.TransactionType.Other,type:"OpenPosition",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,1)),lowerTick:Number((0,Us.asIntN)(BigInt(this.getU32(this.getInputIndex(e,2)))).toString()),upperTick:Number((0,Us.asIntN)(BigInt(this.getU32(this.getInputIndex(e,3)))).toString()),tokenAmount:this.getU64(this.getInputIndex(t,6)),maxAmountTokenA:this.getU64(this.getInputIndex(t,7)),maxAmountTokenB:this.getU64(this.getInputIndex(t,8)),isTokenAFixed:this.getBoolean(this.getInputIndex(t,9))}}}decodeClosePositionTx(){let e=this.getMoveCallCommand("close_position"),t=this.getCollectRewardCallData();return{txType:se.TransactionType.Other,type:"ClosePosition",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,2)),position:this.getOwnedObjectID(this.getInputIndex(e,3)),transferTokensTo:this.getAddress(this.getInputIndex(e,4)),collectRewardTokens:t.map(n=>n.rewardCoinType),collectFeeTokens:this.getTypeArguments(e)}}}decodeProvideLiquidityTx(){let e=this.getMoveCallCommand("provide_liquidity_with_fixed_amount");return{txType:se.TransactionType.Other,type:"ProvideLiquidity",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,2)),position:this.getOwnedObjectID(this.getInputIndex(e,3)),tokenAmount:this.getU64(this.getInputIndex(e,6)),maxAmountTokenA:this.getU64(this.getInputIndex(e,7)),maxAmountTokenB:this.getU64(this.getInputIndex(e,8)),isTokenAFixed:this.getBoolean(this.getInputIndex(e,9))}}}decodeRemoveLiquidityTx(){let e=this.getMoveCallCommand("remove_liquidity");return{txType:se.TransactionType.Other,type:"RemoveLiquidity",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,2)),position:this.getOwnedObjectID(this.getInputIndex(e,3)),liquidity:this.getU128(this.getInputIndex(e,4)),maxAmountTokenA:this.getU64(this.getInputIndex(e,5)),maxAmountTokenB:this.getU64(this.getInputIndex(e,6)),transferTokensTo:this.getAddress(this.getInputIndex(e,7)),...this.collectTokens()}}}decodeCollectRewardsTx(){let e=this.getCollectRewardCallData();return{txType:se.TransactionType.Other,type:"CollectRewards",intentionData:{pool:e[0].pool,position:e[0].position,collectRewardTokens:e.map(t=>t.rewardCoinType)}}}decodeCollectFeeTx(){return{txType:se.TransactionType.Other,type:"CollectFee",intentionData:this.getFeeCallData()}}decodeCollectRewardsAndFeeTx(){let e=this.getFeeCallData();return{txType:se.TransactionType.Other,type:"CollectRewardsAndFee",intentionData:{pool:e.pool,position:e.position,...this.collectTokens()}}}getFeeCallData(){let e=this.getMoveCallCommand("collect_fee");return{pool:this.getSharedObjectID(this.getInputIndex(e,2)),position:this.getOwnedObjectID(this.getInputIndex(e,3)),collectFeeTokens:this.getTypeArguments(e)}}getCollectRewardCallData(){let e=[];return this.commands.forEach(t=>{t.$kind==="MoveCall"&&t.MoveCall.function==="collect_reward"&&e.push({pool:this.getSharedObjectID(this.getInputIndex(t,2)),position:this.getOwnedObjectID(this.getInputIndex(t,3)),rewardCoinType:this.getTypeArguments(t)[2]})}),e}async decodeAggregator7KSwapTx(){let{appContext:e}=this;return console.log("appContext",e),{txType:se.TransactionType.Other,type:"Aggregator7KSwap",intentionData:{tokenIn:e.txParams.tokenIn,tokenOut:e.txParams.tokenOut,amountIn:String(e.txParams.amountIn),maxSlippage:String(e.txParams.maxSlippage)}}}collectTokens(){let e=this.getFeeCallData(),t=this.getCollectRewardCallData();return{collectFeeTokens:e.collectFeeTokens,collectRewardTokens:t.map(n=>n.rewardCoinType)}}get commands(){return this.transaction.getData().commands}get inputs(){return this.transaction.getData().inputs}isOpenPositionTx(){return!!this.getMoveCallCommand("open_position")}isProvideLiquidityTx(){return!!this.getMoveCallCommand("provide_liquidity_with_fixed_amount")}isRemoveLiquidityTx(){return!!this.getMoveCallCommand("remove_liquidity")}isCollectRewardsTx(){return!!this.getMoveCallCommand("collect_reward")}isCollectFeeTx(){return!!this.getMoveCallCommand("collect_fee")}isCollectRewardsAndFeeTx(){return this.isCollectRewardsTx()&&this.isCollectFeeTx()}isClosePositionTx(){return!!this.getMoveCallCommand("close_position")}isAggregator7KSwapTx(){return!!this.commands.find(e=>e.$kind==="MoveCall"&&e.MoveCall.function.toLowerCase().includes("settle"))}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}getSharedObjectID(e){return this.inputs[e].Object.SharedObject.objectId}getOwnedObjectID(e){return this.inputs[e].Object.ImmOrOwnedObject.objectId}getU32(e){return String(un.bcs.u32().parse(Uint8Array.from((0,ln.fromBase64)(this.inputs[e].Pure.bytes))))}getU64(e){return un.bcs.u64().parse(Uint8Array.from((0,ln.fromBase64)(this.inputs[e].Pure.bytes)))}getU128(e){return un.bcs.u128().parse(Uint8Array.from((0,ln.fromBase64)(this.inputs[e].Pure.bytes)))}getBoolean(e){return un.bcs.bool().parse(Uint8Array.from((0,ln.fromBase64)(this.inputs[e].Pure.bytes)))}getAddress(e){return un.bcs.Address.parse(Uint8Array.from((0,ln.fromBase64)(this.inputs[e].Pure.bytes)))}getTypeArguments(e){return e.MoveCall.typeArguments||[]}getInputIndex(e,t){return e.MoveCall.arguments[t].Input}};var rp=require("@msafe/sui3-utils");var rr=require("@bluefin-exchange/bluefin7k-aggregator-sdk"),oe=require("@firefly-exchange/library-sui"),ip=require("turbos-clmm-sdk");var op=require("@firefly-exchange/library-sui"),ap=require("@firefly-exchange/library-sui/dist/src/spot"),np={rpc:"https://fullnode.mainnet.sui.io/",objects:{GlobalConfig:"0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",BasePackage:"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267",CurrentPackage:"0x67b34b728c4e28e704dcfecf7c5cf55c7fc593b6c65c20d1836d97c209c1928a"}},le=(i,e)=>{if(i!=="sui:mainnet")throw new Error("Bluefin spot protocol is only available on sui::mainnet");let t=new op.SuiClient({url:np.rpc});return new ap.OnChainCalls(t,np.objects,{address:e.address,isUIWallet:!1})};var Ot=class{static async OpenPosition(e,t,n){let o=le(n,t),a=await o.queryChain.getPool(e.pool),s=this.prototype.buildLiqInput(a,{...e,slippage:0});return await o.openPositionWithFixedAmount(a,e.lowerTick,e.upperTick,s,{returnTx:!0,sender:t.address})}static async provideLiquidity(e,t,n){let o=le(n,t),a=await o.queryChain.getPool(e.pool),s=this.prototype.buildLiqInput(a,e);return await o.provideLiquidityWithFixedAmount(a,e.position,s,{returnTx:!0,sender:t.address})}static async removeLiquidity(e,t,n){let o=le(n,t),a=await o.queryChain.getPool(e.pool);return await o.removeLiquidity(a,e.position,{liquidityAmount:new oe.BN(e.liquidity),tokenMaxA:new oe.BN(e.maxAmountTokenA),tokenMaxB:new oe.BN(e.maxAmountTokenB)},{returnTx:!0,sender:t.address})}static async closePosition(e,t,n){let o=le(n,t),a=await o.queryChain.getPool(e.pool);return await o.closePosition(a,e.position,{returnTx:!0,sender:t.address})}static async collectRewards(e,t,n){let o=le(n,t),a=await o.queryChain.getPool(e.pool);return await o.collectRewards(a,e.position,{rewardCoinsType:e.collectRewardTokens,returnTx:!0,sender:t.address})}static async collectFee(e,t,n){let o=le(n,t),a=await o.queryChain.getPool(e.pool);return await o.collectFee(a,e.position,{returnTx:!0,sender:t.address})}static async collectRewardsAndFee(e,t,n){let o=le(n,t),a=await o.queryChain.getPool(e.pool);return console.log(e.position),await o.collectFeeAndRewards(a,e.position,{returnTx:!0,sender:t.address})}static async aggregator7KSwap(e,t,n){let o=le(n,t),a=await(0,rr.getQuote)({tokenIn:e.tokenIn.address,tokenOut:e.tokenOut.address,amountIn:new ip.Decimal(e.amountIn).mul(10**e.tokenIn.decimals).toString()}),s=await(0,rr.buildTx)({quoteResponse:a,accountAddress:t.address,slippage:e.maxSlippage,commission:{partner:"0x956d6ea2da156a037952964badc51f997cc5581c86a0e05f74049e6effab9347",commissionBps:0}});return s.tx.setSender(t.address),s.tx}buildLiqInput(e,t){return{...oe.ClmmPoolUtil.estLiquidityAndCoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new oe.BN(t.tokenAmount),t.isTokenAFixed,!0,0,new oe.BN(e.current_sqrt_price)),tokenMaxA:new oe.BN(t.maxAmountTokenA),tokenMaxB:new oe.BN(t.maxAmountTokenB)}}};var sr=class i extends C{constructor(t){super(t);this.data=t}txType=rp.TransactionType.Other;txSubType="Aggregator7KSwap";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.aggregator7KSwap(this.data,n,o)}static fromData(t){return new i(t)}};var sp=require("@msafe/sui3-utils");var cr=class i extends C{constructor(t){super(t);this.data=t}txType=sp.TransactionType.Other;txSubType="ClosePosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.closePosition(this.data,n,o)}static fromData(t){return new i(t)}};var cp=require("@msafe/sui3-utils");var lr=class i extends C{constructor(t){super(t);this.data=t}txType=cp.TransactionType.Other;txSubType="CollectFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.collectFee(this.data,n,o)}static fromData(t){return new i(t)}};var lp=require("@msafe/sui3-utils");var ur=class i extends C{constructor(t){super(t);this.data=t}txType=lp.TransactionType.Other;txSubType="CollectRewards";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.collectRewards(this.data,n,o)}static fromData(t){return new i(t)}};var up=require("@msafe/sui3-utils");var mr=class i extends C{constructor(t){super(t);this.data=t}txType=up.TransactionType.Other;txSubType="CollectRewardsAndFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.collectRewardsAndFee(this.data,n,o)}static fromData(t){return new i(t)}};var mp=require("@msafe/sui3-utils");var pr=class i extends C{constructor(t){super(t);this.data=t}txType=mp.TransactionType.Other;txSubType="OpenPosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.OpenPosition(this.data,n,o)}static fromData(t){return new i(t)}};var pp=require("@msafe/sui3-utils");var dr=class i extends C{constructor(t){super(t);this.data=t}txType=pp.TransactionType.Other;txSubType="ProvideLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.provideLiquidity(this.data,n,o)}static fromData(t){return new i(t)}};var dp=require("@msafe/sui3-utils");var fr=class i extends C{constructor(t){super(t);this.data=t}txType=dp.TransactionType.Other;txSubType="RemoveLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.removeLiquidity(this.data,n,o)}static fromData(t){return new i(t)}};var hr=class{application="bluefin";supportSDK="@mysten/sui";async deserialize(e){console.log("Bluefin helper deserialize input: ",e);let{transaction:t,appContext:n}=e,a=await new ir(t,n).decode();return{txType:fp.TransactionType.Other,txSubType:a.type,intentionData:{appContext:e.appContext,...a.intentionData}}}async build(e){let{suiClient:t,account:n,network:o}=e;console.log(e.txSubType);let a;switch(e.txSubType){case"OpenPosition":a=pr.fromData(e.intentionData);break;case"ProvideLiquidity":a=dr.fromData(e.intentionData);break;case"RemoveLiquidity":a=fr.fromData(e.intentionData);break;case"ClosePosition":a=cr.fromData(e.intentionData);break;case"CollectFee":a=lr.fromData(e.intentionData);break;case"CollectRewards":a=ur.fromData(e.intentionData);break;case"CollectRewardsAndFee":a=mr.fromData(e.intentionData);break;case"Aggregator7KSwap":a=sr.fromData(e.intentionData);break;default:throw new Error("not implemented")}return a.build({suiClient:t,account:n,network:o})}};var Yp=require("@msafe/sui3-utils");var Op=require("@mmt-finance/clmm-sdk"),Pp=require("@mysten/sui/transactions");var qe=require("@mmt-finance/clmm-sdk/dist/utils/math/tickMath"),Tp=Ut(require("bignumber.js")),R=Ut(gp());var cf="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Qt=i=>i!=="0x2::sui::SUI"?i:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",lf=async({suiClient:i,address:e,type:t})=>{let n,o=[],a=0;do{try{let s=await i.getCoins({owner:e,coinType:t,cursor:n,limit:50});o=o.concat(s.data),n=s.nextCursor,(!s.hasNextPage||a===8)&&(n=null)}catch(s){console.log(s),n=null}a++}while(n!==null);return o},uf=(i,e)=>{let t=[],n=BigInt(0);for(let o of e)n<i&&!t.includes(o.objectId)&&(t.push(o.objectId),n+=BigInt(o.balance)),o.balance===BigInt(0)&&!t.includes(o.objectId)&&t.push(o.objectId);if(n>=i)return t;throw new Error("Insufficient balance")},mf=(i,e,t,n)=>{if(i===cf){let[o]=n.splitCoins(n.gas,[n.pure.u64(t)]);return o}else{let o=uf(t,e);o.length>1&&n.mergeCoins(n.object(o[0]),o.slice(1).map(s=>n.object(s)));let[a]=n.splitCoins(n.object(o[0]),[n.pure.u64(t)]);return a}};async function yp(i,e,t,n,o){let a=await lf({suiClient:i.rpcClient,address:e,type:t});return mf(Qt(t),a.map(l=>({balance:BigInt(l.balance),objectId:l.coinObjectId})),n,o)}var Ue=(i,e,t,n,o)=>{let a={objectId:n.poolId,tokenXType:n.tokenXType,tokenYType:n.tokenYType};n?.rewarders&&n?.rewarders.length>0&&i.Pool.collectAllRewards(o,a,n.rewarders.map(s=>({coin_type:s.coinType,flow_rate:s.flowRate,reward_amount:s.rewardAmount,rewards_allocated:s.rewardsAllocated,hasEnded:s.hasEnded})),t.objectId,e),i.Pool.collectFee(o,{objectId:n.poolId,tokenXType:n.tokenXType,tokenYType:n.tokenYType,isStable:n.isStable,tickSpacing:n.tickSpacing},t.objectId,e)};async function bp({sdk:i,address:e,positionId:t,pool:n,txb:o,targetCoinType:a,slippage:s}){let l={objectId:n.poolId,tokenXType:n.tokenXType,tokenYType:n.tokenYType},d=n.rewarders.map(T=>T.coinType);d.length>0&&(console.log("claimRewardsAsTargetCoin input",{pool:l,positionId:t,rewarderCoinTypes:d,targetCoinType:a,slippage:s,toAddress:e}),await i.Pool.claimRewardsAs({txb:o,pool:l,positionId:t,rewarderCoinTypes:d,targetCoinType:a,slippage:s,toAddress:e}));let b=await i.Pool.getAllPools();return await i.Pool.claimFeeAs({txb:o,pool:l,positionId:t,targetCoinType:a,slippage:s,toAddress:e,pools:b}),o}function E(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}function pf(i){let e;return(i&1)!==0?e=new R.default("79232123823359799118286999567"):e=new R.default("79228162514264337593543950336"),(i&2)!==0&&(e=E(e.mul(new R.default("79236085330515764027303304731")),96,256)),(i&4)!==0&&(e=E(e.mul(new R.default("79244008939048815603706035061")),96,256)),(i&8)!==0&&(e=E(e.mul(new R.default("79259858533276714757314932305")),96,256)),(i&16)!==0&&(e=E(e.mul(new R.default("79291567232598584799939703904")),96,256)),(i&32)!==0&&(e=E(e.mul(new R.default("79355022692464371645785046466")),96,256)),(i&64)!==0&&(e=E(e.mul(new R.default("79482085999252804386437311141")),96,256)),(i&128)!==0&&(e=E(e.mul(new R.default("79736823300114093921829183326")),96,256)),(i&256)!==0&&(e=E(e.mul(new R.default("80248749790819932309965073892")),96,256)),(i&512)!==0&&(e=E(e.mul(new R.default("81282483887344747381513967011")),96,256)),(i&1024)!==0&&(e=E(e.mul(new R.default("83390072131320151908154831281")),96,256)),(i&2048)!==0&&(e=E(e.mul(new R.default("87770609709833776024991924138")),96,256)),(i&4096)!==0&&(e=E(e.mul(new R.default("97234110755111693312479820773")),96,256)),(i&8192)!==0&&(e=E(e.mul(new R.default("119332217159966728226237229890")),96,256)),(i&16384)!==0&&(e=E(e.mul(new R.default("179736315981702064433883588727")),96,256)),(i&32768)!==0&&(e=E(e.mul(new R.default("407748233172238350107850275304")),96,256)),(i&65536)!==0&&(e=E(e.mul(new R.default("2098478828474011932436660412517")),96,256)),(i&131072)!==0&&(e=E(e.mul(new R.default("55581415166113811149459800483533")),96,256)),(i&262144)!==0&&(e=E(e.mul(new R.default("38992368544603139932233054999993551")),96,256)),E(e,32,256)}function df(i){let e=Math.abs(i),t;return(e&1)!==0?t=new R.default("18445821805675392311"):t=new R.default("18446744073709551616"),(e&2)!==0&&(t=E(t.mul(new R.default("18444899583751176498")),64,256)),(e&4)!==0&&(t=E(t.mul(new R.default("18443055278223354162")),64,256)),(e&8)!==0&&(t=E(t.mul(new R.default("18439367220385604838")),64,256)),(e&16)!==0&&(t=E(t.mul(new R.default("18431993317065449817")),64,256)),(e&32)!==0&&(t=E(t.mul(new R.default("18417254355718160513")),64,256)),(e&64)!==0&&(t=E(t.mul(new R.default("18387811781193591352")),64,256)),(e&128)!==0&&(t=E(t.mul(new R.default("18329067761203520168")),64,256)),(e&256)!==0&&(t=E(t.mul(new R.default("18212142134806087854")),64,256)),(e&512)!==0&&(t=E(t.mul(new R.default("17980523815641551639")),64,256)),(e&1024)!==0&&(t=E(t.mul(new R.default("17526086738831147013")),64,256)),(e&2048)!==0&&(t=E(t.mul(new R.default("16651378430235024244")),64,256)),(e&4096)!==0&&(t=E(t.mul(new R.default("15030750278693429944")),64,256)),(e&8192)!==0&&(t=E(t.mul(new R.default("12247334978882834399")),64,256)),(e&16384)!==0&&(t=E(t.mul(new R.default("8131365268884726200")),64,256)),(e&32768)!==0&&(t=E(t.mul(new R.default("3584323654723342297")),64,256)),(e&65536)!==0&&(t=E(t.mul(new R.default("696457651847595233")),64,256)),(e&131072)!==0&&(t=E(t.mul(new R.default("26294789957452057")),64,256)),(e&262144)!==0&&(t=E(t.mul(new R.default("37481735321082")),64,256)),t}var Sp=(i,e,t)=>{let n=(0,qe.convertI32ToSigned)(t?i+i%(e??1):i-i%(e??1));return n>0?new R.default(pf(n)):new R.default(df(n))};function Ip(i,e){if(!/^(\d+)(\.\d+)?$/.test(i))return BigInt(0);let[t,n=""]=i.split("."),o=(n+"0".repeat(e)).slice(0,e),s=(t+o).replace(/^0+/,"")||"0";return BigInt(s)}async function Oe({address:i,coinType:e,coinAmount:t,coinDecimals:n,tx:o,mmt:a}){let s=Ip(t,n),l;return Number(t)?l=await yp(a,i,Qt(e),s,o):[l]=o.moveCall({target:"0x2::coin::zero",typeArguments:[e],arguments:[]}),l}function wp({mmt:i,tx:e,poolModel:t,selectedLowTick:n,selectedHighTick:o}){let a=Sp((0,qe.convertI32ToSigned)(n),t.tickSpacing),s=Sp((0,qe.convertI32ToSigned)(o),t.tickSpacing);return i.Position.openPosition(e,t,a.toString(),s.toString())}var ff=(i,e)=>{let n=1e4-Math.floor(e*100);return i*BigInt(n)/BigInt(1e4)};function gr(i,e,t){let n=Ip(i,e);return Number(i)===0?BigInt(0):ff(n,t)}async function Fn({poolId:i,currentSqrtPrice:e,tokenX:t,tokenY:n,slippagePercentage:o,isTokenX:a,suiClient:s}){let d=(await s.getObject({id:i,options:{showContent:!0}}))?.data?.content?.fields?.sqrt_price??e,b=qe.TickMath.sqrtPriceX64ToPrice(new R.default(d?.toString()),t.decimals,n.decimals),T=a?(100-o)/100:(100+o)/100,w=qe.TickMath.priceToSqrtPriceX64(b.mul(T),t.decimals,n.decimals);return BigInt(w.toString())}var Cp=async(i,e,t,n,o,a,s,l,d,b)=>{let T=await Oe({mmt:i,address:t,coinType:a.tokenX.coinType,coinAmount:n,coinDecimals:a.tokenX.decimals,tx:e}),w=await Oe({mmt:i,address:t,coinType:a.tokenY.coinType,coinAmount:o,coinDecimals:a.tokenY.decimals,tx:e}),k={objectId:s,tokenXType:a.tokenXType,tokenYType:a.tokenYType,tickSpacing:a.tickSpacing},x=wp({mmt:i,tx:e,poolModel:k,selectedLowTick:l,selectedHighTick:d}),D=gr(n,a.tokenX.decimals,b),P=gr(o,a.tokenY.decimals,b);i.Pool.addLiquidity(e,k,x,T,w,D,P,t),e.transferObjects([x],e.pure.address(t))},kp=async(i,e,t,n,o,a,s,l,d,b,T)=>{try{let w=await Oe({mmt:i,address:n,coinType:a?s.tokenX.coinType:s.tokenY.coinType,coinAmount:o,coinDecimals:a?s.tokenX.decimals:s.tokenY.decimals,tx:e}),k={objectId:s.poolId,tokenXType:Qt(s.tokenX.coinType),tokenYType:Qt(s.tokenY.coinType),tickSpacing:s.tickSpacing},x=wp({mmt:i,tx:e,poolModel:k,selectedLowTick:l,selectedHighTick:d}),D=await Fn({suiClient:t,poolId:s.poolId,currentSqrtPrice:s.currentSqrtPrice,tokenX:s.tokenX,tokenY:s.tokenY,slippagePercentage:b,isTokenX:a});await i.Pool.addLiquiditySingleSidedV2({txb:e,pool:k,position:x,inputCoin:w,isXtoY:a,limitSqrtPrice:D,slippagePercentage:T,transferToAddress:n,useMvr:!0}),e.transferObjects([x],e.pure.address(n))}catch(w){console.error(w)}},xp=async(i,e,t,n,o,a,s,l)=>{let d=await Oe({mmt:i,address:t,coinType:a.tokenX.coinType,coinAmount:n,coinDecimals:a.tokenX.decimals,tx:e}),b=await Oe({mmt:i,address:t,coinType:a.tokenY.coinType,coinAmount:o,coinDecimals:a.tokenY.decimals,tx:e}),T={objectId:a.poolId,tokenXType:a.tokenXType,tokenYType:a.tokenYType,tickSpacing:a.tickSpacing},w=gr(n,a.tokenX.decimals,l),k=gr(o,a.tokenY.decimals,l);i.Pool.addLiquidity(e,T,s,d,b,w,k,t)},Dp=async(i,e,t,n,o,a,s,l,d)=>{try{let b=await Oe({mmt:i,address:t,coinType:o?a.tokenX.coinType:a.tokenY.coinType,coinAmount:n,coinDecimals:o?a.tokenX.decimals:a.tokenY.decimals,tx:e}),T={objectId:a.poolId,tokenXType:a.tokenX.coinType,tokenYType:a.tokenY.coinType,tickSpacing:a.tickSpacing},w=await Fn({suiClient:i.rpcClient,poolId:a.poolId,currentSqrtPrice:a.currentSqrtPrice,tokenX:a.tokenX,tokenY:a.tokenY,slippagePercentage:l,isTokenX:o});await i.Pool.addLiquiditySingleSidedV2({txb:e,pool:T,position:s,inputCoin:b,isXtoY:o,limitSqrtPrice:w,slippagePercentage:d,transferToAddress:t})}catch(b){throw console.error(b),b}},vp=(i,e)=>BigInt(e===100?i:new Tp.default(i).multipliedBy(e/100).toFixed(0)),Ap=async(i,e,t,n,o,a)=>{let s=vp(t.liquidity,o),l=n.tokenX.coinType,d=n.tokenY.coinType,b={objectId:n?.poolId,tokenXType:l,tokenYType:d};i.Pool.removeLiquidity(a,b,t.objectId,s,BigInt(0),BigInt(0),e),Ue(i,e,t,n,a),o===100&&i.Position.closePosition(a,t.objectId)},Mp=async({sdk:i,address:e,position:t,pool:n,withdrawPercentage:o,txb:a,targetCoinType:s,slippage:l})=>{let d=vp(t.liquidity,o),b=Qt(n.tokenX.coinType),T=Qt(n.tokenY.coinType),w=Qt(s)===T,k={objectId:n?.poolId,tokenXType:b,tokenYType:T},{removeLpCoinA:x,removeLpCoinB:D}=i.Pool.removeLiquidity(a,k,t.objectId,d,BigInt(0),BigInt(0)),P=await Fn({suiClient:i.rpcClient,poolId:n.poolId,currentSqrtPrice:n.currentSqrtPrice,tokenX:n.tokenX,tokenY:n.tokenY,isTokenX:w,slippagePercentage:l}),q=w?x:D,$=a.moveCall({target:"0x2::coin::value",arguments:[q],typeArguments:[w?b:T]});a.transferObjects([w?D:x],e),i.Pool.swapV2({txb:a,transferToAddress:e,pool:k,limitSqrtPrice:P,amount:$,inputCoin:q,isXtoY:w}),Ue(i,e,t,n,a),o===100&&i.Position.closePosition(a,t.objectId)};var yr=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Op.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:a,amountB:s,pool:l,selectedLowTick:d,selectedHighTick:b,slippage:T}=n,w=new Pp.Transaction;return await Cp(t,w,o,a,s,l,l.poolId,d,b,T),w}static fromData(t){return new i(t)}};var Rp=require("@mmt-finance/clmm-sdk"),Bp=require("@mysten/sui/transactions");var br=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Rp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:a,isTokenX:s,pool:l,selectedLowTick:d,selectedHighTick:b,swapSlippage:T,addLiquiditySlippage:w}=n,k=new Bp.Transaction;return await kp(t,k,t.rpcClient,o,a,s,l,d,b,T,w),k}static fromData(t){return new i(t)}};var Ep=require("@mmt-finance/clmm-sdk"),Np=require("@mysten/sui/transactions");var Sr=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Ep.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,positions:a,pools:s}=n,l=new Np.Transaction;for(let d of a){let b=s.find(T=>T.poolId===d.poolId);b&&Ue(t,o,d,b,l)}return l}static fromData(t){return new i(t)}};var Wp=require("@mmt-finance/clmm-sdk"),_p=require("@mysten/sui/transactions");var Tr=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Wp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,o=new _p.Transaction;return await Promise.all(n.claimParams.map(a=>bp({...a,sdk:t,txb:o}))),o}static fromData(t){return new i(t)}};var Lp=require("@mmt-finance/clmm-sdk"),jp=require("@mysten/sui/transactions");var Ir=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Lp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,position:a,pool:s}=n,l=new jp.Transaction;return Ue(t,o,a,s,l),l}static fromData(t){return new i(t)}};var Up=require("@mmt-finance/clmm-sdk"),qp=require("@mysten/sui/transactions");var wr=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Up.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:a,amountB:s,pool:l,positionObjectId:d,slippage:b}=n,T=new qp.Transaction;return await xp(t,T,o,a,s,l,d,b),T}static fromData(t){return new i(t)}};var Fp=require("@mmt-finance/clmm-sdk"),Kp=require("@mysten/sui/transactions");var Cr=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Fp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:a,isTokenX:s,pool:l,positionObjectId:d,swapSlippage:b,addLiquiditySlippage:T}=n,w=new Kp.Transaction;return await Dp(t,w,o,a,s,l,d,b,T),w}static fromData(t){return new i(t)}};var $p=require("@mmt-finance/clmm-sdk"),Vp=require("@mysten/sui/transactions");var kr=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=$p.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{pool:o,position:a,address:s,withdrawPercentage:l,zapOutOn:d,targetCoinType:b,slippage:T}=n,w=new Vp.Transaction;return d?await Mp({sdk:t,address:s,position:a,pool:o,withdrawPercentage:l,txb:w,targetCoinType:b,slippage:T}):await Ap(t,s,a,o,l,w),w}static fromData(t){return new i(t)}};var Ks=require("@mysten/sui/transactions"),$s=require("@suilend/springsui-sdk"),Fs={id:"0x0431232199873db77a92aa645cd43521437e9cc5c6fff07fd03edb88afe0b25a",type:"0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI",weightHookId:"0x9e35c13dbb0bc437e8ad5a95ec463622f58763e060552ae8d100db77f4904601"},Hp=async(i,e,t)=>{let n=await $s.LstClient.initialize(i,Fs),o=new Ks.Transaction,[a]=o.splitCoins(o.gas,[BigInt(t)]),s=n.mint(o,a);return o.transferObjects([s],e),o},Xp=async(i,e,t)=>{let n=await $s.LstClient.initialize(i,Fs),o=await i.getCoins({owner:e,coinType:Fs.type,limit:1e3});if(o.data.length===0)throw new Error("No lst coins found");let a=new Ks.Transaction,s=o.data[0];o.data.length>1&&a.mergeCoins(s.coinObjectId,o.data.slice(1).map(b=>b.coinObjectId));let[l]=a.splitCoins(s.coinObjectId,[BigInt(t)]),d=n.redeem(a,l);return a.transferObjects([d],e),a};var xr=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{params:n}=this.data,{address:o,amount:a}=n;return await Hp(t.suiClient,o,a)}static fromData(t){return new i(t)}};var Qp=require("@mmt-finance/clmm-sdk"),Jp=require("@mysten/sui/transactions");var zp=require("@mmt-finance/clmm-sdk/dist/utils/poolUtils");var Gp=async(i,e,t,n,o,a,s)=>{let l=await Oe({mmt:i,tx:a,address:o,coinType:t.coinType,coinAmount:n,coinDecimals:t.decimals}),d=a.moveCall({target:"0x2::coin::value",typeArguments:[t.coinType],arguments:[l]}),b=t.coinType;for(let T=0;T<e.length;T+=1){let{poolId:w,tokenX:k,tokenY:x,isStable:D,currentSqrtPrice:P}=e[T],{id:q,isReverse:$}=zp.mappedMmtV3Pool[w]||{id:w,isReverse:!1},Et=Qt(k.coinType)===Qt(b);Et=$?!Et:Et;let Wt=$?x.coinType:k.coinType,Pt=$?k.coinType:x.coinType,mn=await Fn({poolId:q,tokenX:k,tokenY:x,slippagePercentage:s,isTokenX:Et,suiClient:i.rpcClient,currentSqrtPrice:P}),_t=i.Pool.swap(a,{objectId:q,tokenXType:Wt,tokenYType:Pt,isStable:D},d,l,Et,void 0,mn,!1);a.transferObjects([l],a.pure.address(o)),l=_t,b=Et?Pt:Wt,d=a.moveCall({target:"0x2::coin::value",typeArguments:[b],arguments:[l]})}a.transferObjects([l],a.pure.address(o))};var Dr=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Qp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{route:o,tokenIn:a,amountIn:s,address:l,slippage:d}=n,b=new Jp.Transaction;return await Gp(t,o,a,s,l,b,d),b}static fromData(t){return new i(t)}};var vr=class i extends C{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{params:n}=this.data,{address:o,amount:a}=n;return await Xp(t.suiClient,o,a)}static fromData(t){return new i(t)}};var Ar=class{application="mmt-dex";supportSDK="@mysten/sui";async deserialize(e){let{appContext:t}=e;return{txType:Yp.TransactionType.Other,txSubType:t.action,intentionData:t}}async build(e){let t;switch(e.txSubType){case"Swap":t=Dr.fromData(e.intentionData);break;case"AddLiquidity":t=yr.fromData(e.intentionData);break;case"AddLiquiditySingleSide":t=br.fromData(e.intentionData);break;case"ClaimRewards":t=Ir.fromData(e.intentionData);break;case"ClaimAllRewards":t=Sr.fromData(e.intentionData);break;case"ClaimRewardsAs":t=Tr.fromData(e.intentionData);break;case"RemoveLiquidity":t=kr.fromData(e.intentionData);break;case"StakeXSui":t=xr.fromData(e.intentionData);break;case"UnstakeXSui":t=vr.fromData(e.intentionData);break;case"ManageLiquidity":t=wr.fromData(e.intentionData);break;case"ManageLiquiditySingleSide":t=Cr.fromData(e.intentionData);break;default:throw new Error(`not implemented ${e.txSubType}`)}return t.build({suiClient:e.suiClient})}};var hf=Pa.fromHelpers([new ga,new Da,new da,new va,new Vo,new Yi,new Ar,new pi,new ar,new yo,new wi,new Pi,new Jn,new hr,new Ni]);
1
+ "use strict";var sd=Object.create;var Vn=Object.defineProperty;var cd=Object.getOwnPropertyDescriptor;var ld=Object.getOwnPropertyNames;var ud=Object.getPrototypeOf,md=Object.prototype.hasOwnProperty;var pd=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports),Yr=(a,e)=>{for(var t in e)Vn(a,t,{get:e[t],enumerable:!0})},fc=(a,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ld(e))!md.call(a,o)&&o!==t&&Vn(a,o,{get:()=>e[o],enumerable:!(n=cd(e,o))||n.enumerable});return a};var Ut=(a,e,t)=>(t=a!=null?sd(ud(a)):{},fc(e||!a||!a.__esModule?Vn(t,"default",{value:a,enumerable:!0}):t,a)),dd=a=>fc(Vn({},"__esModule",{value:!0}),a);var Tp=pd((Sp,Vs)=>{"use strict";(function(a,e){"use strict";function t(y,r){if(!y)throw new Error(r||"Assertion failed")}function n(y,r){y.super_=r;var u=function(){};u.prototype=r.prototype,y.prototype=new u,y.prototype.constructor=y}function o(y,r,u){if(o.isBN(y))return y;this.negative=0,this.words=null,this.length=0,this.red=null,y!==null&&((r==="le"||r==="be")&&(u=r,r=10),this._init(y||0,r||10,u||"be"))}typeof a=="object"?a.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var i;try{typeof window<"u"&&typeof window.Buffer<"u"?i=window.Buffer:i=require("buffer").Buffer}catch{}o.isBN=function(r){return r instanceof o?!0:r!==null&&typeof r=="object"&&r.constructor.wordSize===o.wordSize&&Array.isArray(r.words)},o.max=function(r,u){return r.cmp(u)>0?r:u},o.min=function(r,u){return r.cmp(u)<0?r:u},o.prototype._init=function(r,u,m){if(typeof r=="number")return this._initNumber(r,u,m);if(typeof r=="object")return this._initArray(r,u,m);u==="hex"&&(u=16),t(u===(u|0)&&u>=2&&u<=36),r=r.toString().replace(/\s+/g,"");var p=0;r[0]==="-"&&(p++,this.negative=1),p<r.length&&(u===16?this._parseHex(r,p,m):(this._parseBase(r,u,p),m==="le"&&this._initArray(this.toArray(),u,m)))},o.prototype._initNumber=function(r,u,m){r<0&&(this.negative=1,r=-r),r<67108864?(this.words=[r&67108863],this.length=1):r<4503599627370496?(this.words=[r&67108863,r/67108864&67108863],this.length=2):(t(r<9007199254740992),this.words=[r&67108863,r/67108864&67108863,1],this.length=3),m==="le"&&this._initArray(this.toArray(),u,m)},o.prototype._initArray=function(r,u,m){if(t(typeof r.length=="number"),r.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(r.length/3),this.words=new Array(this.length);for(var p=0;p<this.length;p++)this.words[p]=0;var h,S,I=0;if(m==="be")for(p=r.length-1,h=0;p>=0;p-=3)S=r[p]|r[p-1]<<8|r[p-2]<<16,this.words[h]|=S<<I&67108863,this.words[h+1]=S>>>26-I&67108863,I+=24,I>=26&&(I-=26,h++);else if(m==="le")for(p=0,h=0;p<r.length;p+=3)S=r[p]|r[p+1]<<8|r[p+2]<<16,this.words[h]|=S<<I&67108863,this.words[h+1]=S>>>26-I&67108863,I+=24,I>=26&&(I-=26,h++);return this._strip()};function s(y,r){var u=y.charCodeAt(r);if(u>=48&&u<=57)return u-48;if(u>=65&&u<=70)return u-55;if(u>=97&&u<=102)return u-87;t(!1,"Invalid character in "+y)}function l(y,r,u){var m=s(y,u);return u-1>=r&&(m|=s(y,u-1)<<4),m}o.prototype._parseHex=function(r,u,m){this.length=Math.ceil((r.length-u)/6),this.words=new Array(this.length);for(var p=0;p<this.length;p++)this.words[p]=0;var h=0,S=0,I;if(m==="be")for(p=r.length-1;p>=u;p-=2)I=l(r,u,p)<<h,this.words[S]|=I&67108863,h>=18?(h-=18,S+=1,this.words[S]|=I>>>26):h+=8;else{var f=r.length-u;for(p=f%2===0?u+1:u;p<r.length;p+=2)I=l(r,u,p)<<h,this.words[S]|=I&67108863,h>=18?(h-=18,S+=1,this.words[S]|=I>>>26):h+=8}this._strip()};function d(y,r,u,m){for(var p=0,h=0,S=Math.min(y.length,u),I=r;I<S;I++){var f=y.charCodeAt(I)-48;p*=m,f>=49?h=f-49+10:f>=17?h=f-17+10:h=f,t(f>=0&&h<m,"Invalid character"),p+=h}return p}o.prototype._parseBase=function(r,u,m){this.words=[0],this.length=1;for(var p=0,h=1;h<=67108863;h*=u)p++;p--,h=h/u|0;for(var S=r.length-m,I=S%p,f=Math.min(S,S-I)+m,c=0,g=m;g<f;g+=p)c=d(r,g,g+p,u),this.imuln(h),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(I!==0){var v=1;for(c=d(r,g,r.length,u),g=0;g<I;g++)v*=u;this.imuln(v),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}this._strip()},o.prototype.copy=function(r){r.words=new Array(this.length);for(var u=0;u<this.length;u++)r.words[u]=this.words[u];r.length=this.length,r.negative=this.negative,r.red=this.red};function b(y,r){y.words=r.words,y.length=r.length,y.negative=r.negative,y.red=r.red}if(o.prototype._move=function(r){b(r,this)},o.prototype.clone=function(){var r=new o(null);return this.copy(r),r},o.prototype._expand=function(r){for(;this.length<r;)this.words[this.length++]=0;return this},o.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},o.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=T}catch{o.prototype.inspect=T}else o.prototype.inspect=T;function T(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var C=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],x=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],k=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(r,u){r=r||10,u=u|0||1;var m;if(r===16||r==="hex"){m="";for(var p=0,h=0,S=0;S<this.length;S++){var I=this.words[S],f=((I<<p|h)&16777215).toString(16);h=I>>>24-p&16777215,p+=2,p>=26&&(p-=26,S--),h!==0||S!==this.length-1?m=C[6-f.length]+f+m:m=f+m}for(h!==0&&(m=h.toString(16)+m);m.length%u!==0;)m="0"+m;return this.negative!==0&&(m="-"+m),m}if(r===(r|0)&&r>=2&&r<=36){var c=x[r],g=k[r];m="";var v=this.clone();for(v.negative=0;!v.isZero();){var M=v.modrn(g).toString(r);v=v.idivn(g),v.isZero()?m=M+m:m=C[c-M.length]+M+m}for(this.isZero()&&(m="0"+m);m.length%u!==0;)m="0"+m;return this.negative!==0&&(m="-"+m),m}t(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var r=this.words[0];return this.length===2?r+=this.words[1]*67108864:this.length===3&&this.words[2]===1?r+=4503599627370496+this.words[1]*67108864:this.length>2&&t(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-r:r},o.prototype.toJSON=function(){return this.toString(16,2)},i&&(o.prototype.toBuffer=function(r,u){return this.toArrayLike(i,r,u)}),o.prototype.toArray=function(r,u){return this.toArrayLike(Array,r,u)};var D=function(r,u){return r.allocUnsafe?r.allocUnsafe(u):new r(u)};o.prototype.toArrayLike=function(r,u,m){this._strip();var p=this.byteLength(),h=m||Math.max(1,p);t(p<=h,"byte array longer than desired length"),t(h>0,"Requested array length <= 0");var S=D(r,h),I=u==="le"?"LE":"BE";return this["_toArrayLike"+I](S,p),S},o.prototype._toArrayLikeLE=function(r,u){for(var m=0,p=0,h=0,S=0;h<this.length;h++){var I=this.words[h]<<S|p;r[m++]=I&255,m<r.length&&(r[m++]=I>>8&255),m<r.length&&(r[m++]=I>>16&255),S===6?(m<r.length&&(r[m++]=I>>24&255),p=0,S=0):(p=I>>>24,S+=2)}if(m<r.length)for(r[m++]=p;m<r.length;)r[m++]=0},o.prototype._toArrayLikeBE=function(r,u){for(var m=r.length-1,p=0,h=0,S=0;h<this.length;h++){var I=this.words[h]<<S|p;r[m--]=I&255,m>=0&&(r[m--]=I>>8&255),m>=0&&(r[m--]=I>>16&255),S===6?(m>=0&&(r[m--]=I>>24&255),p=0,S=0):(p=I>>>24,S+=2)}if(m>=0)for(r[m--]=p;m>=0;)r[m--]=0},Math.clz32?o.prototype._countBits=function(r){return 32-Math.clz32(r)}:o.prototype._countBits=function(r){var u=r,m=0;return u>=4096&&(m+=13,u>>>=13),u>=64&&(m+=7,u>>>=7),u>=8&&(m+=4,u>>>=4),u>=2&&(m+=2,u>>>=2),m+u},o.prototype._zeroBits=function(r){if(r===0)return 26;var u=r,m=0;return(u&8191)===0&&(m+=13,u>>>=13),(u&127)===0&&(m+=7,u>>>=7),(u&15)===0&&(m+=4,u>>>=4),(u&3)===0&&(m+=2,u>>>=2),(u&1)===0&&m++,m},o.prototype.bitLength=function(){var r=this.words[this.length-1],u=this._countBits(r);return(this.length-1)*26+u};function P(y){for(var r=new Array(y.bitLength()),u=0;u<r.length;u++){var m=u/26|0,p=u%26;r[u]=y.words[m]>>>p&1}return r}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var r=0,u=0;u<this.length;u++){var m=this._zeroBits(this.words[u]);if(r+=m,m!==26)break}return r},o.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},o.prototype.toTwos=function(r){return this.negative!==0?this.abs().inotn(r).iaddn(1):this.clone()},o.prototype.fromTwos=function(r){return this.testn(r-1)?this.notn(r).iaddn(1).ineg():this.clone()},o.prototype.isNeg=function(){return this.negative!==0},o.prototype.neg=function(){return this.clone().ineg()},o.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},o.prototype.iuor=function(r){for(;this.length<r.length;)this.words[this.length++]=0;for(var u=0;u<r.length;u++)this.words[u]=this.words[u]|r.words[u];return this._strip()},o.prototype.ior=function(r){return t((this.negative|r.negative)===0),this.iuor(r)},o.prototype.or=function(r){return this.length>r.length?this.clone().ior(r):r.clone().ior(this)},o.prototype.uor=function(r){return this.length>r.length?this.clone().iuor(r):r.clone().iuor(this)},o.prototype.iuand=function(r){var u;this.length>r.length?u=r:u=this;for(var m=0;m<u.length;m++)this.words[m]=this.words[m]&r.words[m];return this.length=u.length,this._strip()},o.prototype.iand=function(r){return t((this.negative|r.negative)===0),this.iuand(r)},o.prototype.and=function(r){return this.length>r.length?this.clone().iand(r):r.clone().iand(this)},o.prototype.uand=function(r){return this.length>r.length?this.clone().iuand(r):r.clone().iuand(this)},o.prototype.iuxor=function(r){var u,m;this.length>r.length?(u=this,m=r):(u=r,m=this);for(var p=0;p<m.length;p++)this.words[p]=u.words[p]^m.words[p];if(this!==u)for(;p<u.length;p++)this.words[p]=u.words[p];return this.length=u.length,this._strip()},o.prototype.ixor=function(r){return t((this.negative|r.negative)===0),this.iuxor(r)},o.prototype.xor=function(r){return this.length>r.length?this.clone().ixor(r):r.clone().ixor(this)},o.prototype.uxor=function(r){return this.length>r.length?this.clone().iuxor(r):r.clone().iuxor(this)},o.prototype.inotn=function(r){t(typeof r=="number"&&r>=0);var u=Math.ceil(r/26)|0,m=r%26;this._expand(u),m>0&&u--;for(var p=0;p<u;p++)this.words[p]=~this.words[p]&67108863;return m>0&&(this.words[p]=~this.words[p]&67108863>>26-m),this._strip()},o.prototype.notn=function(r){return this.clone().inotn(r)},o.prototype.setn=function(r,u){t(typeof r=="number"&&r>=0);var m=r/26|0,p=r%26;return this._expand(m+1),u?this.words[m]=this.words[m]|1<<p:this.words[m]=this.words[m]&~(1<<p),this._strip()},o.prototype.iadd=function(r){var u;if(this.negative!==0&&r.negative===0)return this.negative=0,u=this.isub(r),this.negative^=1,this._normSign();if(this.negative===0&&r.negative!==0)return r.negative=0,u=this.isub(r),r.negative=1,u._normSign();var m,p;this.length>r.length?(m=this,p=r):(m=r,p=this);for(var h=0,S=0;S<p.length;S++)u=(m.words[S]|0)+(p.words[S]|0)+h,this.words[S]=u&67108863,h=u>>>26;for(;h!==0&&S<m.length;S++)u=(m.words[S]|0)+h,this.words[S]=u&67108863,h=u>>>26;if(this.length=m.length,h!==0)this.words[this.length]=h,this.length++;else if(m!==this)for(;S<m.length;S++)this.words[S]=m.words[S];return this},o.prototype.add=function(r){var u;return r.negative!==0&&this.negative===0?(r.negative=0,u=this.sub(r),r.negative^=1,u):r.negative===0&&this.negative!==0?(this.negative=0,u=r.sub(this),this.negative=1,u):this.length>r.length?this.clone().iadd(r):r.clone().iadd(this)},o.prototype.isub=function(r){if(r.negative!==0){r.negative=0;var u=this.iadd(r);return r.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(r),this.negative=1,this._normSign();var m=this.cmp(r);if(m===0)return this.negative=0,this.length=1,this.words[0]=0,this;var p,h;m>0?(p=this,h=r):(p=r,h=this);for(var S=0,I=0;I<h.length;I++)u=(p.words[I]|0)-(h.words[I]|0)+S,S=u>>26,this.words[I]=u&67108863;for(;S!==0&&I<p.length;I++)u=(p.words[I]|0)+S,S=u>>26,this.words[I]=u&67108863;if(S===0&&I<p.length&&p!==this)for(;I<p.length;I++)this.words[I]=p.words[I];return this.length=Math.max(this.length,I),p!==this&&(this.negative=1),this._strip()},o.prototype.sub=function(r){return this.clone().isub(r)};function q(y,r,u){u.negative=r.negative^y.negative;var m=y.length+r.length|0;u.length=m,m=m-1|0;var p=y.words[0]|0,h=r.words[0]|0,S=p*h,I=S&67108863,f=S/67108864|0;u.words[0]=I;for(var c=1;c<m;c++){for(var g=f>>>26,v=f&67108863,M=Math.min(c,r.length-1),O=Math.max(0,c-y.length+1);O<=M;O++){var B=c-O|0;p=y.words[B]|0,h=r.words[O]|0,S=p*h+v,g+=S/67108864|0,v=S&67108863}u.words[c]=v|0,f=g|0}return f!==0?u.words[c]=f|0:u.length--,u._strip()}var V=function(r,u,m){var p=r.words,h=u.words,S=m.words,I=0,f,c,g,v=p[0]|0,M=v&8191,O=v>>>13,B=p[1]|0,N=B&8191,j=B>>>13,ue=p[2]|0,U=ue&8191,K=ue>>>13,Js=p[3]|0,X=Js&8191,z=Js>>>13,Ys=p[4]|0,G=Ys&8191,Q=Ys>>>13,Zs=p[5]|0,J=Zs&8191,Y=Zs>>>13,tc=p[6]|0,Z=tc&8191,tt=tc>>>13,ec=p[7]|0,et=ec&8191,nt=ec>>>13,nc=p[8]|0,ot=nc&8191,at=nc>>>13,oc=p[9]|0,it=oc&8191,rt=oc>>>13,ac=h[0]|0,st=ac&8191,ct=ac>>>13,ic=h[1]|0,lt=ic&8191,ut=ic>>>13,rc=h[2]|0,mt=rc&8191,pt=rc>>>13,sc=h[3]|0,dt=sc&8191,ft=sc>>>13,cc=h[4]|0,ht=cc&8191,gt=cc>>>13,lc=h[5]|0,yt=lc&8191,bt=lc>>>13,uc=h[6]|0,St=uc&8191,Tt=uc>>>13,mc=h[7]|0,It=mc&8191,wt=mc>>>13,pc=h[8]|0,Ct=pc&8191,xt=pc>>>13,dc=h[9]|0,kt=dc&8191,Dt=dc>>>13;m.negative=r.negative^u.negative,m.length=19,f=Math.imul(M,st),c=Math.imul(M,ct),c=c+Math.imul(O,st)|0,g=Math.imul(O,ct);var Br=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Br>>>26)|0,Br&=67108863,f=Math.imul(N,st),c=Math.imul(N,ct),c=c+Math.imul(j,st)|0,g=Math.imul(j,ct),f=f+Math.imul(M,lt)|0,c=c+Math.imul(M,ut)|0,c=c+Math.imul(O,lt)|0,g=g+Math.imul(O,ut)|0;var Er=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Er>>>26)|0,Er&=67108863,f=Math.imul(U,st),c=Math.imul(U,ct),c=c+Math.imul(K,st)|0,g=Math.imul(K,ct),f=f+Math.imul(N,lt)|0,c=c+Math.imul(N,ut)|0,c=c+Math.imul(j,lt)|0,g=g+Math.imul(j,ut)|0,f=f+Math.imul(M,mt)|0,c=c+Math.imul(M,pt)|0,c=c+Math.imul(O,mt)|0,g=g+Math.imul(O,pt)|0;var Wr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,f=Math.imul(X,st),c=Math.imul(X,ct),c=c+Math.imul(z,st)|0,g=Math.imul(z,ct),f=f+Math.imul(U,lt)|0,c=c+Math.imul(U,ut)|0,c=c+Math.imul(K,lt)|0,g=g+Math.imul(K,ut)|0,f=f+Math.imul(N,mt)|0,c=c+Math.imul(N,pt)|0,c=c+Math.imul(j,mt)|0,g=g+Math.imul(j,pt)|0,f=f+Math.imul(M,dt)|0,c=c+Math.imul(M,ft)|0,c=c+Math.imul(O,dt)|0,g=g+Math.imul(O,ft)|0;var Nr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Nr>>>26)|0,Nr&=67108863,f=Math.imul(G,st),c=Math.imul(G,ct),c=c+Math.imul(Q,st)|0,g=Math.imul(Q,ct),f=f+Math.imul(X,lt)|0,c=c+Math.imul(X,ut)|0,c=c+Math.imul(z,lt)|0,g=g+Math.imul(z,ut)|0,f=f+Math.imul(U,mt)|0,c=c+Math.imul(U,pt)|0,c=c+Math.imul(K,mt)|0,g=g+Math.imul(K,pt)|0,f=f+Math.imul(N,dt)|0,c=c+Math.imul(N,ft)|0,c=c+Math.imul(j,dt)|0,g=g+Math.imul(j,ft)|0,f=f+Math.imul(M,ht)|0,c=c+Math.imul(M,gt)|0,c=c+Math.imul(O,ht)|0,g=g+Math.imul(O,gt)|0;var _r=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(_r>>>26)|0,_r&=67108863,f=Math.imul(J,st),c=Math.imul(J,ct),c=c+Math.imul(Y,st)|0,g=Math.imul(Y,ct),f=f+Math.imul(G,lt)|0,c=c+Math.imul(G,ut)|0,c=c+Math.imul(Q,lt)|0,g=g+Math.imul(Q,ut)|0,f=f+Math.imul(X,mt)|0,c=c+Math.imul(X,pt)|0,c=c+Math.imul(z,mt)|0,g=g+Math.imul(z,pt)|0,f=f+Math.imul(U,dt)|0,c=c+Math.imul(U,ft)|0,c=c+Math.imul(K,dt)|0,g=g+Math.imul(K,ft)|0,f=f+Math.imul(N,ht)|0,c=c+Math.imul(N,gt)|0,c=c+Math.imul(j,ht)|0,g=g+Math.imul(j,gt)|0,f=f+Math.imul(M,yt)|0,c=c+Math.imul(M,bt)|0,c=c+Math.imul(O,yt)|0,g=g+Math.imul(O,bt)|0;var Lr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Lr>>>26)|0,Lr&=67108863,f=Math.imul(Z,st),c=Math.imul(Z,ct),c=c+Math.imul(tt,st)|0,g=Math.imul(tt,ct),f=f+Math.imul(J,lt)|0,c=c+Math.imul(J,ut)|0,c=c+Math.imul(Y,lt)|0,g=g+Math.imul(Y,ut)|0,f=f+Math.imul(G,mt)|0,c=c+Math.imul(G,pt)|0,c=c+Math.imul(Q,mt)|0,g=g+Math.imul(Q,pt)|0,f=f+Math.imul(X,dt)|0,c=c+Math.imul(X,ft)|0,c=c+Math.imul(z,dt)|0,g=g+Math.imul(z,ft)|0,f=f+Math.imul(U,ht)|0,c=c+Math.imul(U,gt)|0,c=c+Math.imul(K,ht)|0,g=g+Math.imul(K,gt)|0,f=f+Math.imul(N,yt)|0,c=c+Math.imul(N,bt)|0,c=c+Math.imul(j,yt)|0,g=g+Math.imul(j,bt)|0,f=f+Math.imul(M,St)|0,c=c+Math.imul(M,Tt)|0,c=c+Math.imul(O,St)|0,g=g+Math.imul(O,Tt)|0;var jr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(jr>>>26)|0,jr&=67108863,f=Math.imul(et,st),c=Math.imul(et,ct),c=c+Math.imul(nt,st)|0,g=Math.imul(nt,ct),f=f+Math.imul(Z,lt)|0,c=c+Math.imul(Z,ut)|0,c=c+Math.imul(tt,lt)|0,g=g+Math.imul(tt,ut)|0,f=f+Math.imul(J,mt)|0,c=c+Math.imul(J,pt)|0,c=c+Math.imul(Y,mt)|0,g=g+Math.imul(Y,pt)|0,f=f+Math.imul(G,dt)|0,c=c+Math.imul(G,ft)|0,c=c+Math.imul(Q,dt)|0,g=g+Math.imul(Q,ft)|0,f=f+Math.imul(X,ht)|0,c=c+Math.imul(X,gt)|0,c=c+Math.imul(z,ht)|0,g=g+Math.imul(z,gt)|0,f=f+Math.imul(U,yt)|0,c=c+Math.imul(U,bt)|0,c=c+Math.imul(K,yt)|0,g=g+Math.imul(K,bt)|0,f=f+Math.imul(N,St)|0,c=c+Math.imul(N,Tt)|0,c=c+Math.imul(j,St)|0,g=g+Math.imul(j,Tt)|0,f=f+Math.imul(M,It)|0,c=c+Math.imul(M,wt)|0,c=c+Math.imul(O,It)|0,g=g+Math.imul(O,wt)|0;var Ur=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Ur>>>26)|0,Ur&=67108863,f=Math.imul(ot,st),c=Math.imul(ot,ct),c=c+Math.imul(at,st)|0,g=Math.imul(at,ct),f=f+Math.imul(et,lt)|0,c=c+Math.imul(et,ut)|0,c=c+Math.imul(nt,lt)|0,g=g+Math.imul(nt,ut)|0,f=f+Math.imul(Z,mt)|0,c=c+Math.imul(Z,pt)|0,c=c+Math.imul(tt,mt)|0,g=g+Math.imul(tt,pt)|0,f=f+Math.imul(J,dt)|0,c=c+Math.imul(J,ft)|0,c=c+Math.imul(Y,dt)|0,g=g+Math.imul(Y,ft)|0,f=f+Math.imul(G,ht)|0,c=c+Math.imul(G,gt)|0,c=c+Math.imul(Q,ht)|0,g=g+Math.imul(Q,gt)|0,f=f+Math.imul(X,yt)|0,c=c+Math.imul(X,bt)|0,c=c+Math.imul(z,yt)|0,g=g+Math.imul(z,bt)|0,f=f+Math.imul(U,St)|0,c=c+Math.imul(U,Tt)|0,c=c+Math.imul(K,St)|0,g=g+Math.imul(K,Tt)|0,f=f+Math.imul(N,It)|0,c=c+Math.imul(N,wt)|0,c=c+Math.imul(j,It)|0,g=g+Math.imul(j,wt)|0,f=f+Math.imul(M,Ct)|0,c=c+Math.imul(M,xt)|0,c=c+Math.imul(O,Ct)|0,g=g+Math.imul(O,xt)|0;var qr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(qr>>>26)|0,qr&=67108863,f=Math.imul(it,st),c=Math.imul(it,ct),c=c+Math.imul(rt,st)|0,g=Math.imul(rt,ct),f=f+Math.imul(ot,lt)|0,c=c+Math.imul(ot,ut)|0,c=c+Math.imul(at,lt)|0,g=g+Math.imul(at,ut)|0,f=f+Math.imul(et,mt)|0,c=c+Math.imul(et,pt)|0,c=c+Math.imul(nt,mt)|0,g=g+Math.imul(nt,pt)|0,f=f+Math.imul(Z,dt)|0,c=c+Math.imul(Z,ft)|0,c=c+Math.imul(tt,dt)|0,g=g+Math.imul(tt,ft)|0,f=f+Math.imul(J,ht)|0,c=c+Math.imul(J,gt)|0,c=c+Math.imul(Y,ht)|0,g=g+Math.imul(Y,gt)|0,f=f+Math.imul(G,yt)|0,c=c+Math.imul(G,bt)|0,c=c+Math.imul(Q,yt)|0,g=g+Math.imul(Q,bt)|0,f=f+Math.imul(X,St)|0,c=c+Math.imul(X,Tt)|0,c=c+Math.imul(z,St)|0,g=g+Math.imul(z,Tt)|0,f=f+Math.imul(U,It)|0,c=c+Math.imul(U,wt)|0,c=c+Math.imul(K,It)|0,g=g+Math.imul(K,wt)|0,f=f+Math.imul(N,Ct)|0,c=c+Math.imul(N,xt)|0,c=c+Math.imul(j,Ct)|0,g=g+Math.imul(j,xt)|0,f=f+Math.imul(M,kt)|0,c=c+Math.imul(M,Dt)|0,c=c+Math.imul(O,kt)|0,g=g+Math.imul(O,Dt)|0;var Fr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,f=Math.imul(it,lt),c=Math.imul(it,ut),c=c+Math.imul(rt,lt)|0,g=Math.imul(rt,ut),f=f+Math.imul(ot,mt)|0,c=c+Math.imul(ot,pt)|0,c=c+Math.imul(at,mt)|0,g=g+Math.imul(at,pt)|0,f=f+Math.imul(et,dt)|0,c=c+Math.imul(et,ft)|0,c=c+Math.imul(nt,dt)|0,g=g+Math.imul(nt,ft)|0,f=f+Math.imul(Z,ht)|0,c=c+Math.imul(Z,gt)|0,c=c+Math.imul(tt,ht)|0,g=g+Math.imul(tt,gt)|0,f=f+Math.imul(J,yt)|0,c=c+Math.imul(J,bt)|0,c=c+Math.imul(Y,yt)|0,g=g+Math.imul(Y,bt)|0,f=f+Math.imul(G,St)|0,c=c+Math.imul(G,Tt)|0,c=c+Math.imul(Q,St)|0,g=g+Math.imul(Q,Tt)|0,f=f+Math.imul(X,It)|0,c=c+Math.imul(X,wt)|0,c=c+Math.imul(z,It)|0,g=g+Math.imul(z,wt)|0,f=f+Math.imul(U,Ct)|0,c=c+Math.imul(U,xt)|0,c=c+Math.imul(K,Ct)|0,g=g+Math.imul(K,xt)|0,f=f+Math.imul(N,kt)|0,c=c+Math.imul(N,Dt)|0,c=c+Math.imul(j,kt)|0,g=g+Math.imul(j,Dt)|0;var Kr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,f=Math.imul(it,mt),c=Math.imul(it,pt),c=c+Math.imul(rt,mt)|0,g=Math.imul(rt,pt),f=f+Math.imul(ot,dt)|0,c=c+Math.imul(ot,ft)|0,c=c+Math.imul(at,dt)|0,g=g+Math.imul(at,ft)|0,f=f+Math.imul(et,ht)|0,c=c+Math.imul(et,gt)|0,c=c+Math.imul(nt,ht)|0,g=g+Math.imul(nt,gt)|0,f=f+Math.imul(Z,yt)|0,c=c+Math.imul(Z,bt)|0,c=c+Math.imul(tt,yt)|0,g=g+Math.imul(tt,bt)|0,f=f+Math.imul(J,St)|0,c=c+Math.imul(J,Tt)|0,c=c+Math.imul(Y,St)|0,g=g+Math.imul(Y,Tt)|0,f=f+Math.imul(G,It)|0,c=c+Math.imul(G,wt)|0,c=c+Math.imul(Q,It)|0,g=g+Math.imul(Q,wt)|0,f=f+Math.imul(X,Ct)|0,c=c+Math.imul(X,xt)|0,c=c+Math.imul(z,Ct)|0,g=g+Math.imul(z,xt)|0,f=f+Math.imul(U,kt)|0,c=c+Math.imul(U,Dt)|0,c=c+Math.imul(K,kt)|0,g=g+Math.imul(K,Dt)|0;var Vr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,f=Math.imul(it,dt),c=Math.imul(it,ft),c=c+Math.imul(rt,dt)|0,g=Math.imul(rt,ft),f=f+Math.imul(ot,ht)|0,c=c+Math.imul(ot,gt)|0,c=c+Math.imul(at,ht)|0,g=g+Math.imul(at,gt)|0,f=f+Math.imul(et,yt)|0,c=c+Math.imul(et,bt)|0,c=c+Math.imul(nt,yt)|0,g=g+Math.imul(nt,bt)|0,f=f+Math.imul(Z,St)|0,c=c+Math.imul(Z,Tt)|0,c=c+Math.imul(tt,St)|0,g=g+Math.imul(tt,Tt)|0,f=f+Math.imul(J,It)|0,c=c+Math.imul(J,wt)|0,c=c+Math.imul(Y,It)|0,g=g+Math.imul(Y,wt)|0,f=f+Math.imul(G,Ct)|0,c=c+Math.imul(G,xt)|0,c=c+Math.imul(Q,Ct)|0,g=g+Math.imul(Q,xt)|0,f=f+Math.imul(X,kt)|0,c=c+Math.imul(X,Dt)|0,c=c+Math.imul(z,kt)|0,g=g+Math.imul(z,Dt)|0;var $r=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+($r>>>26)|0,$r&=67108863,f=Math.imul(it,ht),c=Math.imul(it,gt),c=c+Math.imul(rt,ht)|0,g=Math.imul(rt,gt),f=f+Math.imul(ot,yt)|0,c=c+Math.imul(ot,bt)|0,c=c+Math.imul(at,yt)|0,g=g+Math.imul(at,bt)|0,f=f+Math.imul(et,St)|0,c=c+Math.imul(et,Tt)|0,c=c+Math.imul(nt,St)|0,g=g+Math.imul(nt,Tt)|0,f=f+Math.imul(Z,It)|0,c=c+Math.imul(Z,wt)|0,c=c+Math.imul(tt,It)|0,g=g+Math.imul(tt,wt)|0,f=f+Math.imul(J,Ct)|0,c=c+Math.imul(J,xt)|0,c=c+Math.imul(Y,Ct)|0,g=g+Math.imul(Y,xt)|0,f=f+Math.imul(G,kt)|0,c=c+Math.imul(G,Dt)|0,c=c+Math.imul(Q,kt)|0,g=g+Math.imul(Q,Dt)|0;var Hr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,f=Math.imul(it,yt),c=Math.imul(it,bt),c=c+Math.imul(rt,yt)|0,g=Math.imul(rt,bt),f=f+Math.imul(ot,St)|0,c=c+Math.imul(ot,Tt)|0,c=c+Math.imul(at,St)|0,g=g+Math.imul(at,Tt)|0,f=f+Math.imul(et,It)|0,c=c+Math.imul(et,wt)|0,c=c+Math.imul(nt,It)|0,g=g+Math.imul(nt,wt)|0,f=f+Math.imul(Z,Ct)|0,c=c+Math.imul(Z,xt)|0,c=c+Math.imul(tt,Ct)|0,g=g+Math.imul(tt,xt)|0,f=f+Math.imul(J,kt)|0,c=c+Math.imul(J,Dt)|0,c=c+Math.imul(Y,kt)|0,g=g+Math.imul(Y,Dt)|0;var Xr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Xr>>>26)|0,Xr&=67108863,f=Math.imul(it,St),c=Math.imul(it,Tt),c=c+Math.imul(rt,St)|0,g=Math.imul(rt,Tt),f=f+Math.imul(ot,It)|0,c=c+Math.imul(ot,wt)|0,c=c+Math.imul(at,It)|0,g=g+Math.imul(at,wt)|0,f=f+Math.imul(et,Ct)|0,c=c+Math.imul(et,xt)|0,c=c+Math.imul(nt,Ct)|0,g=g+Math.imul(nt,xt)|0,f=f+Math.imul(Z,kt)|0,c=c+Math.imul(Z,Dt)|0,c=c+Math.imul(tt,kt)|0,g=g+Math.imul(tt,Dt)|0;var zr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(zr>>>26)|0,zr&=67108863,f=Math.imul(it,It),c=Math.imul(it,wt),c=c+Math.imul(rt,It)|0,g=Math.imul(rt,wt),f=f+Math.imul(ot,Ct)|0,c=c+Math.imul(ot,xt)|0,c=c+Math.imul(at,Ct)|0,g=g+Math.imul(at,xt)|0,f=f+Math.imul(et,kt)|0,c=c+Math.imul(et,Dt)|0,c=c+Math.imul(nt,kt)|0,g=g+Math.imul(nt,Dt)|0;var Gr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,f=Math.imul(it,Ct),c=Math.imul(it,xt),c=c+Math.imul(rt,Ct)|0,g=Math.imul(rt,xt),f=f+Math.imul(ot,kt)|0,c=c+Math.imul(ot,Dt)|0,c=c+Math.imul(at,kt)|0,g=g+Math.imul(at,Dt)|0;var Qr=(I+f|0)+((c&8191)<<13)|0;I=(g+(c>>>13)|0)+(Qr>>>26)|0,Qr&=67108863,f=Math.imul(it,kt),c=Math.imul(it,Dt),c=c+Math.imul(rt,kt)|0,g=Math.imul(rt,Dt);var Jr=(I+f|0)+((c&8191)<<13)|0;return I=(g+(c>>>13)|0)+(Jr>>>26)|0,Jr&=67108863,S[0]=Br,S[1]=Er,S[2]=Wr,S[3]=Nr,S[4]=_r,S[5]=Lr,S[6]=jr,S[7]=Ur,S[8]=qr,S[9]=Fr,S[10]=Kr,S[11]=Vr,S[12]=$r,S[13]=Hr,S[14]=Xr,S[15]=zr,S[16]=Gr,S[17]=Qr,S[18]=Jr,I!==0&&(S[19]=I,m.length++),m};Math.imul||(V=q);function Et(y,r,u){u.negative=r.negative^y.negative,u.length=y.length+r.length;for(var m=0,p=0,h=0;h<u.length-1;h++){var S=p;p=0;for(var I=m&67108863,f=Math.min(h,r.length-1),c=Math.max(0,h-y.length+1);c<=f;c++){var g=h-c,v=y.words[g]|0,M=r.words[c]|0,O=v*M,B=O&67108863;S=S+(O/67108864|0)|0,B=B+I|0,I=B&67108863,S=S+(B>>>26)|0,p+=S>>>26,S&=67108863}u.words[h]=I,m=S,S=p}return m!==0?u.words[h]=m:u.length--,u._strip()}function Nt(y,r,u){return Et(y,r,u)}o.prototype.mulTo=function(r,u){var m,p=this.length+r.length;return this.length===10&&r.length===10?m=V(this,r,u):p<63?m=q(this,r,u):p<1024?m=Et(this,r,u):m=Nt(this,r,u),m};function Pt(y,r){this.x=y,this.y=r}Pt.prototype.makeRBT=function(r){for(var u=new Array(r),m=o.prototype._countBits(r)-1,p=0;p<r;p++)u[p]=this.revBin(p,m,r);return u},Pt.prototype.revBin=function(r,u,m){if(r===0||r===m-1)return r;for(var p=0,h=0;h<u;h++)p|=(r&1)<<u-h-1,r>>=1;return p},Pt.prototype.permute=function(r,u,m,p,h,S){for(var I=0;I<S;I++)p[I]=u[r[I]],h[I]=m[r[I]]},Pt.prototype.transform=function(r,u,m,p,h,S){this.permute(S,r,u,m,p,h);for(var I=1;I<h;I<<=1)for(var f=I<<1,c=Math.cos(2*Math.PI/f),g=Math.sin(2*Math.PI/f),v=0;v<h;v+=f)for(var M=c,O=g,B=0;B<I;B++){var N=m[v+B],j=p[v+B],ue=m[v+B+I],U=p[v+B+I],K=M*ue-O*U;U=M*U+O*ue,ue=K,m[v+B]=N+ue,p[v+B]=j+U,m[v+B+I]=N-ue,p[v+B+I]=j-U,B!==f&&(K=c*M-g*O,O=c*O+g*M,M=K)}},Pt.prototype.guessLen13b=function(r,u){var m=Math.max(u,r)|1,p=m&1,h=0;for(m=m/2|0;m;m=m>>>1)h++;return 1<<h+1+p},Pt.prototype.conjugate=function(r,u,m){if(!(m<=1))for(var p=0;p<m/2;p++){var h=r[p];r[p]=r[m-p-1],r[m-p-1]=h,h=u[p],u[p]=-u[m-p-1],u[m-p-1]=-h}},Pt.prototype.normalize13b=function(r,u){for(var m=0,p=0;p<u/2;p++){var h=Math.round(r[2*p+1]/u)*8192+Math.round(r[2*p]/u)+m;r[p]=h&67108863,h<67108864?m=0:m=h/67108864|0}return r},Pt.prototype.convert13b=function(r,u,m,p){for(var h=0,S=0;S<u;S++)h=h+(r[S]|0),m[2*S]=h&8191,h=h>>>13,m[2*S+1]=h&8191,h=h>>>13;for(S=2*u;S<p;++S)m[S]=0;t(h===0),t((h&-8192)===0)},Pt.prototype.stub=function(r){for(var u=new Array(r),m=0;m<r;m++)u[m]=0;return u},Pt.prototype.mulp=function(r,u,m){var p=2*this.guessLen13b(r.length,u.length),h=this.makeRBT(p),S=this.stub(p),I=new Array(p),f=new Array(p),c=new Array(p),g=new Array(p),v=new Array(p),M=new Array(p),O=m.words;O.length=p,this.convert13b(r.words,r.length,I,p),this.convert13b(u.words,u.length,g,p),this.transform(I,S,f,c,p,h),this.transform(g,S,v,M,p,h);for(var B=0;B<p;B++){var N=f[B]*v[B]-c[B]*M[B];c[B]=f[B]*M[B]+c[B]*v[B],f[B]=N}return this.conjugate(f,c,p),this.transform(f,c,O,S,p,h),this.conjugate(O,S,p),this.normalize13b(O,p),m.negative=r.negative^u.negative,m.length=r.length+u.length,m._strip()},o.prototype.mul=function(r){var u=new o(null);return u.words=new Array(this.length+r.length),this.mulTo(r,u)},o.prototype.mulf=function(r){var u=new o(null);return u.words=new Array(this.length+r.length),Nt(this,r,u)},o.prototype.imul=function(r){return this.clone().mulTo(r,this)},o.prototype.imuln=function(r){var u=r<0;u&&(r=-r),t(typeof r=="number"),t(r<67108864);for(var m=0,p=0;p<this.length;p++){var h=(this.words[p]|0)*r,S=(h&67108863)+(m&67108863);m>>=26,m+=h/67108864|0,m+=S>>>26,this.words[p]=S&67108863}return m!==0&&(this.words[p]=m,this.length++),this.length=r===0?1:this.length,u?this.ineg():this},o.prototype.muln=function(r){return this.clone().imuln(r)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(r){var u=P(r);if(u.length===0)return new o(1);for(var m=this,p=0;p<u.length&&u[p]===0;p++,m=m.sqr());if(++p<u.length)for(var h=m.sqr();p<u.length;p++,h=h.sqr())u[p]!==0&&(m=m.mul(h));return m},o.prototype.iushln=function(r){t(typeof r=="number"&&r>=0);var u=r%26,m=(r-u)/26,p=67108863>>>26-u<<26-u,h;if(u!==0){var S=0;for(h=0;h<this.length;h++){var I=this.words[h]&p,f=(this.words[h]|0)-I<<u;this.words[h]=f|S,S=I>>>26-u}S&&(this.words[h]=S,this.length++)}if(m!==0){for(h=this.length-1;h>=0;h--)this.words[h+m]=this.words[h];for(h=0;h<m;h++)this.words[h]=0;this.length+=m}return this._strip()},o.prototype.ishln=function(r){return t(this.negative===0),this.iushln(r)},o.prototype.iushrn=function(r,u,m){t(typeof r=="number"&&r>=0);var p;u?p=(u-u%26)/26:p=0;var h=r%26,S=Math.min((r-h)/26,this.length),I=67108863^67108863>>>h<<h,f=m;if(p-=S,p=Math.max(0,p),f){for(var c=0;c<S;c++)f.words[c]=this.words[c];f.length=S}if(S!==0)if(this.length>S)for(this.length-=S,c=0;c<this.length;c++)this.words[c]=this.words[c+S];else this.words[0]=0,this.length=1;var g=0;for(c=this.length-1;c>=0&&(g!==0||c>=p);c--){var v=this.words[c]|0;this.words[c]=g<<26-h|v>>>h,g=v&I}return f&&g!==0&&(f.words[f.length++]=g),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(r,u,m){return t(this.negative===0),this.iushrn(r,u,m)},o.prototype.shln=function(r){return this.clone().ishln(r)},o.prototype.ushln=function(r){return this.clone().iushln(r)},o.prototype.shrn=function(r){return this.clone().ishrn(r)},o.prototype.ushrn=function(r){return this.clone().iushrn(r)},o.prototype.testn=function(r){t(typeof r=="number"&&r>=0);var u=r%26,m=(r-u)/26,p=1<<u;if(this.length<=m)return!1;var h=this.words[m];return!!(h&p)},o.prototype.imaskn=function(r){t(typeof r=="number"&&r>=0);var u=r%26,m=(r-u)/26;if(t(this.negative===0,"imaskn works only with positive numbers"),this.length<=m)return this;if(u!==0&&m++,this.length=Math.min(m,this.length),u!==0){var p=67108863^67108863>>>u<<u;this.words[this.length-1]&=p}return this._strip()},o.prototype.maskn=function(r){return this.clone().imaskn(r)},o.prototype.iaddn=function(r){return t(typeof r=="number"),t(r<67108864),r<0?this.isubn(-r):this.negative!==0?this.length===1&&(this.words[0]|0)<=r?(this.words[0]=r-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(r),this.negative=1,this):this._iaddn(r)},o.prototype._iaddn=function(r){this.words[0]+=r;for(var u=0;u<this.length&&this.words[u]>=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},o.prototype.isubn=function(r){if(t(typeof r=="number"),t(r<67108864),r<0)return this.iaddn(-r);if(this.negative!==0)return this.negative=0,this.iaddn(r),this.negative=1,this;if(this.words[0]-=r,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u<this.length&&this.words[u]<0;u++)this.words[u]+=67108864,this.words[u+1]-=1;return this._strip()},o.prototype.addn=function(r){return this.clone().iaddn(r)},o.prototype.subn=function(r){return this.clone().isubn(r)},o.prototype.iabs=function(){return this.negative=0,this},o.prototype.abs=function(){return this.clone().iabs()},o.prototype._ishlnsubmul=function(r,u,m){var p=r.length+m,h;this._expand(p);var S,I=0;for(h=0;h<r.length;h++){S=(this.words[h+m]|0)+I;var f=(r.words[h]|0)*u;S-=f&67108863,I=(S>>26)-(f/67108864|0),this.words[h+m]=S&67108863}for(;h<this.length-m;h++)S=(this.words[h+m]|0)+I,I=S>>26,this.words[h+m]=S&67108863;if(I===0)return this._strip();for(t(I===-1),I=0,h=0;h<this.length;h++)S=-(this.words[h]|0)+I,I=S>>26,this.words[h]=S&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(r,u){var m=this.length-r.length,p=this.clone(),h=r,S=h.words[h.length-1]|0,I=this._countBits(S);m=26-I,m!==0&&(h=h.ushln(m),p.iushln(m),S=h.words[h.length-1]|0);var f=p.length-h.length,c;if(u!=="mod"){c=new o(null),c.length=f+1,c.words=new Array(c.length);for(var g=0;g<c.length;g++)c.words[g]=0}var v=p.clone()._ishlnsubmul(h,1,f);v.negative===0&&(p=v,c&&(c.words[f]=1));for(var M=f-1;M>=0;M--){var O=(p.words[h.length+M]|0)*67108864+(p.words[h.length+M-1]|0);for(O=Math.min(O/S|0,67108863),p._ishlnsubmul(h,O,M);p.negative!==0;)O--,p.negative=0,p._ishlnsubmul(h,1,M),p.isZero()||(p.negative^=1);c&&(c.words[M]=O)}return c&&c._strip(),p._strip(),u!=="div"&&m!==0&&p.iushrn(m),{div:c||null,mod:p}},o.prototype.divmod=function(r,u,m){if(t(!r.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var p,h,S;return this.negative!==0&&r.negative===0?(S=this.neg().divmod(r,u),u!=="mod"&&(p=S.div.neg()),u!=="div"&&(h=S.mod.neg(),m&&h.negative!==0&&h.iadd(r)),{div:p,mod:h}):this.negative===0&&r.negative!==0?(S=this.divmod(r.neg(),u),u!=="mod"&&(p=S.div.neg()),{div:p,mod:S.mod}):(this.negative&r.negative)!==0?(S=this.neg().divmod(r.neg(),u),u!=="div"&&(h=S.mod.neg(),m&&h.negative!==0&&h.isub(r)),{div:S.div,mod:h}):r.length>this.length||this.cmp(r)<0?{div:new o(0),mod:this}:r.length===1?u==="div"?{div:this.divn(r.words[0]),mod:null}:u==="mod"?{div:null,mod:new o(this.modrn(r.words[0]))}:{div:this.divn(r.words[0]),mod:new o(this.modrn(r.words[0]))}:this._wordDiv(r,u)},o.prototype.div=function(r){return this.divmod(r,"div",!1).div},o.prototype.mod=function(r){return this.divmod(r,"mod",!1).mod},o.prototype.umod=function(r){return this.divmod(r,"mod",!0).mod},o.prototype.divRound=function(r){var u=this.divmod(r);if(u.mod.isZero())return u.div;var m=u.div.negative!==0?u.mod.isub(r):u.mod,p=r.ushrn(1),h=r.andln(1),S=m.cmp(p);return S<0||h===1&&S===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},o.prototype.modrn=function(r){var u=r<0;u&&(r=-r),t(r<=67108863);for(var m=(1<<26)%r,p=0,h=this.length-1;h>=0;h--)p=(m*p+(this.words[h]|0))%r;return u?-p:p},o.prototype.modn=function(r){return this.modrn(r)},o.prototype.idivn=function(r){var u=r<0;u&&(r=-r),t(r<=67108863);for(var m=0,p=this.length-1;p>=0;p--){var h=(this.words[p]|0)+m*67108864;this.words[p]=h/r|0,m=h%r}return this._strip(),u?this.ineg():this},o.prototype.divn=function(r){return this.clone().idivn(r)},o.prototype.egcd=function(r){t(r.negative===0),t(!r.isZero());var u=this,m=r.clone();u.negative!==0?u=u.umod(r):u=u.clone();for(var p=new o(1),h=new o(0),S=new o(0),I=new o(1),f=0;u.isEven()&&m.isEven();)u.iushrn(1),m.iushrn(1),++f;for(var c=m.clone(),g=u.clone();!u.isZero();){for(var v=0,M=1;(u.words[0]&M)===0&&v<26;++v,M<<=1);if(v>0)for(u.iushrn(v);v-- >0;)(p.isOdd()||h.isOdd())&&(p.iadd(c),h.isub(g)),p.iushrn(1),h.iushrn(1);for(var O=0,B=1;(m.words[0]&B)===0&&O<26;++O,B<<=1);if(O>0)for(m.iushrn(O);O-- >0;)(S.isOdd()||I.isOdd())&&(S.iadd(c),I.isub(g)),S.iushrn(1),I.iushrn(1);u.cmp(m)>=0?(u.isub(m),p.isub(S),h.isub(I)):(m.isub(u),S.isub(p),I.isub(h))}return{a:S,b:I,gcd:m.iushln(f)}},o.prototype._invmp=function(r){t(r.negative===0),t(!r.isZero());var u=this,m=r.clone();u.negative!==0?u=u.umod(r):u=u.clone();for(var p=new o(1),h=new o(0),S=m.clone();u.cmpn(1)>0&&m.cmpn(1)>0;){for(var I=0,f=1;(u.words[0]&f)===0&&I<26;++I,f<<=1);if(I>0)for(u.iushrn(I);I-- >0;)p.isOdd()&&p.iadd(S),p.iushrn(1);for(var c=0,g=1;(m.words[0]&g)===0&&c<26;++c,g<<=1);if(c>0)for(m.iushrn(c);c-- >0;)h.isOdd()&&h.iadd(S),h.iushrn(1);u.cmp(m)>=0?(u.isub(m),p.isub(h)):(m.isub(u),h.isub(p))}var v;return u.cmpn(1)===0?v=p:v=h,v.cmpn(0)<0&&v.iadd(r),v},o.prototype.gcd=function(r){if(this.isZero())return r.abs();if(r.isZero())return this.abs();var u=this.clone(),m=r.clone();u.negative=0,m.negative=0;for(var p=0;u.isEven()&&m.isEven();p++)u.iushrn(1),m.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;m.isEven();)m.iushrn(1);var h=u.cmp(m);if(h<0){var S=u;u=m,m=S}else if(h===0||m.cmpn(1)===0)break;u.isub(m)}while(!0);return m.iushln(p)},o.prototype.invm=function(r){return this.egcd(r).a.umod(r)},o.prototype.isEven=function(){return(this.words[0]&1)===0},o.prototype.isOdd=function(){return(this.words[0]&1)===1},o.prototype.andln=function(r){return this.words[0]&r},o.prototype.bincn=function(r){t(typeof r=="number");var u=r%26,m=(r-u)/26,p=1<<u;if(this.length<=m)return this._expand(m+1),this.words[m]|=p,this;for(var h=p,S=m;h!==0&&S<this.length;S++){var I=this.words[S]|0;I+=h,h=I>>>26,I&=67108863,this.words[S]=I}return h!==0&&(this.words[S]=h,this.length++),this},o.prototype.isZero=function(){return this.length===1&&this.words[0]===0},o.prototype.cmpn=function(r){var u=r<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this._strip();var m;if(this.length>1)m=1;else{u&&(r=-r),t(r<=67108863,"Number is too big");var p=this.words[0]|0;m=p===r?0:p<r?-1:1}return this.negative!==0?-m|0:m},o.prototype.cmp=function(r){if(this.negative!==0&&r.negative===0)return-1;if(this.negative===0&&r.negative!==0)return 1;var u=this.ucmp(r);return this.negative!==0?-u|0:u},o.prototype.ucmp=function(r){if(this.length>r.length)return 1;if(this.length<r.length)return-1;for(var u=0,m=this.length-1;m>=0;m--){var p=this.words[m]|0,h=r.words[m]|0;if(p!==h){p<h?u=-1:p>h&&(u=1);break}}return u},o.prototype.gtn=function(r){return this.cmpn(r)===1},o.prototype.gt=function(r){return this.cmp(r)===1},o.prototype.gten=function(r){return this.cmpn(r)>=0},o.prototype.gte=function(r){return this.cmp(r)>=0},o.prototype.ltn=function(r){return this.cmpn(r)===-1},o.prototype.lt=function(r){return this.cmp(r)===-1},o.prototype.lten=function(r){return this.cmpn(r)<=0},o.prototype.lte=function(r){return this.cmp(r)<=0},o.prototype.eqn=function(r){return this.cmpn(r)===0},o.prototype.eq=function(r){return this.cmp(r)===0},o.red=function(r){return new $(r)},o.prototype.toRed=function(r){return t(!this.red,"Already a number in reduction context"),t(this.negative===0,"red works only with positives"),r.convertTo(this)._forceRed(r)},o.prototype.fromRed=function(){return t(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(r){return this.red=r,this},o.prototype.forceRed=function(r){return t(!this.red,"Already a number in reduction context"),this._forceRed(r)},o.prototype.redAdd=function(r){return t(this.red,"redAdd works only with red numbers"),this.red.add(this,r)},o.prototype.redIAdd=function(r){return t(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,r)},o.prototype.redSub=function(r){return t(this.red,"redSub works only with red numbers"),this.red.sub(this,r)},o.prototype.redISub=function(r){return t(this.red,"redISub works only with red numbers"),this.red.isub(this,r)},o.prototype.redShl=function(r){return t(this.red,"redShl works only with red numbers"),this.red.shl(this,r)},o.prototype.redMul=function(r){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,r),this.red.mul(this,r)},o.prototype.redIMul=function(r){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,r),this.red.imul(this,r)},o.prototype.redSqr=function(){return t(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return t(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return t(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return t(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return t(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(r){return t(this.red&&!r.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,r)};var mn={k256:null,p224:null,p192:null,p25519:null};function _t(y,r){this.name=y,this.p=new o(r,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}_t.prototype._tmp=function(){var r=new o(null);return r.words=new Array(Math.ceil(this.n/13)),r},_t.prototype.ireduce=function(r){var u=r,m;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),m=u.bitLength();while(m>this.n);var p=m<this.n?-1:u.ucmp(this.p);return p===0?(u.words[0]=0,u.length=1):p>0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},_t.prototype.split=function(r,u){r.iushrn(this.n,0,u)},_t.prototype.imulK=function(r){return r.imul(this.k)};function Kn(){_t.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Kn,_t),Kn.prototype.split=function(r,u){for(var m=4194303,p=Math.min(r.length,9),h=0;h<p;h++)u.words[h]=r.words[h];if(u.length=p,r.length<=9){r.words[0]=0,r.length=1;return}var S=r.words[9];for(u.words[u.length++]=S&m,h=10;h<r.length;h++){var I=r.words[h]|0;r.words[h-10]=(I&m)<<4|S>>>22,S=I}S>>>=22,r.words[h-10]=S,S===0&&r.length>10?r.length-=10:r.length-=9},Kn.prototype.imulK=function(r){r.words[r.length]=0,r.words[r.length+1]=0,r.length+=2;for(var u=0,m=0;m<r.length;m++){var p=r.words[m]|0;u+=p*977,r.words[m]=u&67108863,u=p*64+(u/67108864|0)}return r.words[r.length-1]===0&&(r.length--,r.words[r.length-1]===0&&r.length--),r};function Gs(){_t.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(Gs,_t);function Qs(){_t.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(Qs,_t);function Rr(){_t.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(Rr,_t),Rr.prototype.imulK=function(r){for(var u=0,m=0;m<r.length;m++){var p=(r.words[m]|0)*19+u,h=p&67108863;p>>>=26,r.words[m]=h,u=p}return u!==0&&(r.words[r.length++]=u),r},o._prime=function(r){if(mn[r])return mn[r];var u;if(r==="k256")u=new Kn;else if(r==="p224")u=new Gs;else if(r==="p192")u=new Qs;else if(r==="p25519")u=new Rr;else throw new Error("Unknown prime "+r);return mn[r]=u,u};function $(y){if(typeof y=="string"){var r=o._prime(y);this.m=r.p,this.prime=r}else t(y.gtn(1),"modulus must be greater than 1"),this.m=y,this.prime=null}$.prototype._verify1=function(r){t(r.negative===0,"red works only with positives"),t(r.red,"red works only with red numbers")},$.prototype._verify2=function(r,u){t((r.negative|u.negative)===0,"red works only with positives"),t(r.red&&r.red===u.red,"red works only with red numbers")},$.prototype.imod=function(r){return this.prime?this.prime.ireduce(r)._forceRed(this):(b(r,r.umod(this.m)._forceRed(this)),r)},$.prototype.neg=function(r){return r.isZero()?r.clone():this.m.sub(r)._forceRed(this)},$.prototype.add=function(r,u){this._verify2(r,u);var m=r.add(u);return m.cmp(this.m)>=0&&m.isub(this.m),m._forceRed(this)},$.prototype.iadd=function(r,u){this._verify2(r,u);var m=r.iadd(u);return m.cmp(this.m)>=0&&m.isub(this.m),m},$.prototype.sub=function(r,u){this._verify2(r,u);var m=r.sub(u);return m.cmpn(0)<0&&m.iadd(this.m),m._forceRed(this)},$.prototype.isub=function(r,u){this._verify2(r,u);var m=r.isub(u);return m.cmpn(0)<0&&m.iadd(this.m),m},$.prototype.shl=function(r,u){return this._verify1(r),this.imod(r.ushln(u))},$.prototype.imul=function(r,u){return this._verify2(r,u),this.imod(r.imul(u))},$.prototype.mul=function(r,u){return this._verify2(r,u),this.imod(r.mul(u))},$.prototype.isqr=function(r){return this.imul(r,r.clone())},$.prototype.sqr=function(r){return this.mul(r,r)},$.prototype.sqrt=function(r){if(r.isZero())return r.clone();var u=this.m.andln(3);if(t(u%2===1),u===3){var m=this.m.add(new o(1)).iushrn(2);return this.pow(r,m)}for(var p=this.m.subn(1),h=0;!p.isZero()&&p.andln(1)===0;)h++,p.iushrn(1);t(!p.isZero());var S=new o(1).toRed(this),I=S.redNeg(),f=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);this.pow(c,f).cmp(I)!==0;)c.redIAdd(I);for(var g=this.pow(c,p),v=this.pow(r,p.addn(1).iushrn(1)),M=this.pow(r,p),O=h;M.cmp(S)!==0;){for(var B=M,N=0;B.cmp(S)!==0;N++)B=B.redSqr();t(N<O);var j=this.pow(g,new o(1).iushln(O-N-1));v=v.redMul(j),g=j.redSqr(),M=M.redMul(g),O=N}return v},$.prototype.invm=function(r){var u=r._invmp(this.m);return u.negative!==0?(u.negative=0,this.imod(u).redNeg()):this.imod(u)},$.prototype.pow=function(r,u){if(u.isZero())return new o(1).toRed(this);if(u.cmpn(1)===0)return r.clone();var m=4,p=new Array(1<<m);p[0]=new o(1).toRed(this),p[1]=r;for(var h=2;h<p.length;h++)p[h]=this.mul(p[h-1],r);var S=p[0],I=0,f=0,c=u.bitLength()%26;for(c===0&&(c=26),h=u.length-1;h>=0;h--){for(var g=u.words[h],v=c-1;v>=0;v--){var M=g>>v&1;if(S!==p[0]&&(S=this.sqr(S)),M===0&&I===0){f=0;continue}I<<=1,I|=M,f++,!(f!==m&&(h!==0||v!==0))&&(S=this.mul(S,p[I]),f=0,I=0)}c=26}return S},$.prototype.convertTo=function(r){var u=r.umod(this.m);return u===r?u.clone():u},$.prototype.convertFrom=function(r){var u=r.clone();return u.red=null,u},o.mont=function(r){return new Pe(r)};function Pe(y){$.call(this,y),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(Pe,$),Pe.prototype.convertTo=function(r){return this.imod(r.ushln(this.shift))},Pe.prototype.convertFrom=function(r){var u=this.imod(r.mul(this.rinv));return u.red=null,u},Pe.prototype.imul=function(r,u){if(r.isZero()||u.isZero())return r.words[0]=0,r.length=1,r;var m=r.imul(u),p=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=m.isub(p).iushrn(this.shift),S=h;return h.cmp(this.m)>=0?S=h.isub(this.m):h.cmpn(0)<0&&(S=h.iadd(this.m)),S._forceRed(this)},Pe.prototype.mul=function(r,u){if(r.isZero()||u.isZero())return new o(0)._forceRed(this);var m=r.mul(u),p=m.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),h=m.isub(p).iushrn(this.shift),S=h;return h.cmp(this.m)>=0?S=h.isub(this.m):h.cmpn(0)<0&&(S=h.iadd(this.m)),S._forceRed(this)},Pe.prototype.invm=function(r){var u=this.imod(r._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(typeof Vs>"u"||Vs,Sp)});var xf={};Yr(xf,{appHelpers:()=>Cf});module.exports=dd(xf);var Ic=require("@msafe/sui3-utils");var ae=require("@alphafi/alphafi-sdk"),Fe=require("@msafe/sui3-utils"),Jt=require("@mysten/bcs");var $n=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isClaimRewardTransaction())return this.decodeClaimReward();let e=this.getLiquidityChangeEvent();if(!e)throw new Error("No liquidity change event found. Unable to decode transaction.");let t=e.parsedJson,n=t.pool_id,o=ae.poolIdPoolNameMap[n];if(console.log("Decoder event data - ",t),console.log("Decoder poolName - ",o),this.isWithdrawAlphaEvent(e))return this.decodeWithdrawAlpha(t);if(this.isWithdrawEvent(t))return this.decodeWithdraw(o);if(this.isDoubleAssetDepositEvent(t,o))return this.decodeDoubleAssetDeposit(o,t);if(this.isSingleAssetDepositEvent(t,o))return this.decodeSingleAssetDeposit(o,t);throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}get inputs(){return this.transaction.getData().inputs}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}getLiquidityChangeEvent(){return this.simResult.events.find(e=>this.isLiquidityChangeEventType(e.type))}isClaimRewardTransaction(){return!!this.getMoveCallCommand("get_user_rewards_all")}isLiquidityChangeEventType(e){return e.includes("LiquidityChangeEvent")||e.includes("LiquidityChangeNewNewEvent")||e.includes("WithdrawEventV2")}isWithdrawAlphaEvent(e){return e.type.includes("WithdrawEventV2")}isWithdrawEvent(e){return e.event_type===1}isDoubleAssetDepositEvent(e,t){return e.event_type===0&&ae.poolInfo[t].assetTypes.length===2}isSingleAssetDepositEvent(e,t){return e.event_type===0&&ae.poolInfo[t].assetTypes.length===1}extractXTokensAmount(){let e=this.inputs.find(o=>o.Pure!==void 0);if(!e||!e.Pure?.bytes)throw new Error("Unable to extract xTokensAmount from inputs");let{bytes:t}=e.Pure,n;return t.length===12?n=Jt.bcs.u64().parse((0,Jt.fromBase64)(t)):t.length===24?n=Jt.bcs.u128().parse((0,Jt.fromBase64)(t)):t.length===44?n=Jt.bcs.u256().parse((0,Jt.fromBase64)(t)):n=Jt.bcs.u64().parse((0,Jt.fromBase64)(t)),n}decodeDoubleAssetDeposit(e,t){let{amount_a:n,amount_b:o}=t,i=Number(n)>0;return console.log("Decoder.decodeDoubleAssetDeposit",n,o,i),{txType:Fe.TransactionType.Other,type:"depositDoubleAsset",intentionData:{poolName:e,amount:i?n:o,isAmountA:i}}}decodeSingleAssetDeposit(e,t){let{amount:n}=t;if(console.log("Decoder.decodeSingleAssetDeposit",n),this.getLiquidityChangeEvent().type.includes(":alphafi_navi_pool:")){let{coin:i}=ae.singleAssetPoolCoinMap[e],{expo:s}=ae.coinsList[i];n=Math.floor(Number(n)/10**(9-s)).toString()}return{txType:Fe.TransactionType.Other,type:"depositSingleAsset",intentionData:{poolName:e,amount:n}}}decodeWithdraw(e){let t=this.extractXTokensAmount();return console.log("Decoder.decodeWithdraw",t),{txType:Fe.TransactionType.Other,type:"withdraw",intentionData:{poolName:e,xTokensAmount:t}}}decodeWithdrawAlpha(e){let t=this.extractXTokensAmount(),{amount_withdrawn_from_locked:n}=e;return console.log("Decoder.decodeWithdrawAlpha",t,n),{txType:Fe.TransactionType.Other,type:"withdrawAlpha",intentionData:{withdrawFromLocked:Number(n)>0,xTokensAmount:t}}}decodeClaimReward(){return{txType:Fe.TransactionType.Other,type:"claimReward",intentionData:{}}}};var gc=require("@alphafi/alphafi-sdk");var hc=Ut(require("sort-keys-recursive")),w=class{constructor(e){this.data=e}serialize(){return JSON.stringify((0,hc.default)(this.data))}};var Hn=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t;return await(0,gc.claimRewardTxb)(n.address)}static fromData(t){return new a(t)}};var yc=require("@alphafi/alphafi-sdk");var Xn=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{poolName:o,amount:i,isAmountA:s}=this.data;return await(0,yc.depositDoubleAssetTxb)(o,n.address,i,s)}static fromData(t){return console.log("DepositDoubleAssetIntention.fromData",t),new a(t)}};var bc=require("@alphafi/alphafi-sdk");var zn=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{poolName:o,amount:i}=this.data;return await(0,bc.depositSingleAssetTxb)(o,n.address,i)}static fromData(t){return console.log("DepositSingleAssetIntention.fromData",t),new a(t)}};var Sc=require("@alphafi/alphafi-sdk");var Gn=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{poolName:o,xTokensAmount:i}=this.data;return await(0,Sc.withdrawTxb)(i,o,n.address)}static fromData(t){return console.log("WithdrawIntention.fromData",t),new a(t)}};var Tc=require("@alphafi/alphafi-sdk");var Qn=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{withdrawFromLocked:o,xTokensAmount:i}=this.data;return await(0,Tc.withdrawAlphaTxb)(i,o,n.address)}static fromData(t){return console.log("WithdrawAlphaIntention.fromData",t),new a(t)}};var Jn=class{application="alphafi";supportSDK="@mysten/sui";async deserialize(e){let{transaction:t,suiClient:n,account:o}=e,i=await n.devInspectTransactionBlock({sender:t.getData().sender,transactionBlock:t});console.log("AlphaFiHelper Sim result - ",i);let l=new $n(t,i).decode();return{txType:Ic.TransactionType.Other,txSubType:l.type,intentionData:l.intentionData}}async build(e){let{account:t}=e;console.log("AlphaFi build transaction type",e.txSubType);let n;switch(e.txSubType){case"depositSingleAsset":n=zn.fromData(e.intentionData);break;case"depositDoubleAsset":n=Xn.fromData(e.intentionData);break;case"withdraw":n=Gn.fromData(e.intentionData);break;case"withdrawAlpha":n=Qn.fromData(e.intentionData);break;case"claimReward":n=Hn.fromData(e.intentionData);break;default:throw new Error("not implemented")}return n.build({account:t})}};var Hc=require("@msafe/sui3-utils");var Lt=require("@msafe/sui3-utils"),Yn=require("@mysten/sui/bcs"),Zn=require("bucket-protocol-sdk");var to=class{constructor(e){this.transaction=e}decode(){if(this.isSBUCKDepositTransaction())return this.decodeSBUCKDeposit();if(this.isSBUCKUnstakeTransaction())return this.decodeSBUCKUnstake();if(this.isSBUCKWithdrawTransaction())return this.decodeSBUCKWithdraw();if(this.isSBUCKClaimTransaction())return this.decodeSBUCKClaim();if(this.isLockedClaimTransaction())return this.decodeLockedClaim();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayTransaction())return this.decodeRepay();if(this.isWithdrawTransaction())return this.decodeWithdraw();if(this.isCloseTransaction())return this.decodeClose();if(this.isTankDepositTransaction())return this.decodeTankDeposit();if(this.isTankWithdrawTransaction())return this.decodeTankWithdraw();if(this.isTankClaimTransaction())return this.decodeTankClaim();if(this.isPsmTransaction())return this.decodePsm();throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}get inputs(){return this.transaction.getData().inputs}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}getMoveCallModuleCommand(e,t){return this.commands.find(n=>n.$kind==="MoveCall"&&n.MoveCall.module===e&&n.MoveCall.function===t)}getMoveCallPackageModuleCommand(e,t,n){return this.commands.find(o=>o.$kind==="MoveCall"&&o.MoveCall.package===e&&o.MoveCall.module===t&&o.MoveCall.function===n)}getMoveCallModuleCommands(e,t){return this.commands.filter(n=>n.$kind==="MoveCall"&&n.MoveCall.module===e&&n.MoveCall.function===t)}getSplitCoinsCommands(){return this.commands.filter(e=>e.$kind==="SplitCoins")}getTransferCommands(){return this.commands.filter(e=>e.$kind==="TransferObjects")}isPsmTransaction(){return!!this.getMoveCallCommand("charge_reservoir")||!!this.getMoveCallCommand("discharge_reservoir")}isStrapNewTransaction(){return!!this.getMoveCallModuleCommand("strap","new")}isBorrowTransaction(){return!!this.getMoveCallModuleCommand("bucket_operations","high_top_up")||!!this.getMoveCallModuleCommand("bucket_operations","high_borrow")||!!this.getMoveCallModuleCommand("bucket_operations","high_borrow_with_strap")}isRepayTransaction(){return!!this.getMoveCallModuleCommand("bucket_operations","fully_repay")||!!this.getMoveCallModuleCommand("bucket_operations","fully_repay_with_strap")||!!this.getMoveCallModuleCommand("bucket_operations","repay_and_withdraw")||!!this.getMoveCallModuleCommand("bucket_operations","repay_and_withdraw_with_strap")}isWithdrawTransaction(){return!!this.getMoveCallModuleCommand("buck","withdraw")||!!this.getMoveCallModuleCommand("buck","withdraw_with_strap")}isCloseTransaction(){return!!this.getMoveCallModuleCommand("bucket_operations","destroy_empty_strap")}isTankDepositTransaction(){return!!this.getMoveCallModuleCommand("tank_operations","deposit")}isTankWithdrawTransaction(){return!!this.getMoveCallModuleCommand("tank_operations","withdraw")}isTankClaimTransaction(){return!!this.getMoveCallModuleCommand("tank_operations","claim")}isSBUCKDepositTransaction(){return!!this.getMoveCallModuleCommand("buck","buck_to_sbuck")}isSBUCKWithdrawTransaction(){return!!this.getMoveCallModuleCommand("buck","sbuck_to_buck")}isSBUCKStakeTransaction(){return!!this.getMoveCallPackageModuleCommand(Zn.SBUCK_FOUNTAIN_PACKAGE_ID,"fountain_core","stake")}isSBUCKUnstakeTransaction(){return!!this.getMoveCallPackageModuleCommand(Zn.SBUCK_FOUNTAIN_PACKAGE_ID,"fountain_core","force_unstake")}isSBUCKClaimTransaction(){return!!this.getMoveCallPackageModuleCommand(Zn.SBUCK_FOUNTAIN_PACKAGE_ID,"fountain_core","claim")}isLockedClaimTransaction(){return!!this.getMoveCallModuleCommand("proof_rule","claim")||!!this.getMoveCallModuleCommand("lst_proof_rule","claim")}isLstUnlockTransaction(){return!!this.getMoveCallModuleCommand("lst_proof_rule","unlock")}decodePsm(){let e,t,n="0",o=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];return o.$kind==="Input"&&(n=this.getPureInputU64(o.Input)),this.getMoveCallCommand("charge_reservoir")?([e]=this.getMoveCallCommand("charge_reservoir").MoveCall.typeArguments,t=!1):([e]=this.getMoveCallCommand("discharge_reservoir").MoveCall.typeArguments,t=!0),console.log("Decoder.decodePsm",e,n,t),{txType:Lt.TransactionType.Other,type:"psm",intentionData:{coinType:e,amount:n,buckToCoin:t}}}decodeBorrow(){let e="",t="0",n,o=this.getStrapId(),i="0",s=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];if(s.$kind==="Input"&&(i=this.getPureInputU64(s.Input)),this.getMoveCallCommand("high_top_up")){let l=this.getMoveCallCommand("high_top_up").MoveCall;[e]=l.typeArguments;let d=l.arguments[1];d.$kind==="Input"&&(t=this.getPureInputU64(d.Input));let b=l.arguments[3];if(b.$kind==="Input"){let T=this.getPureAddresses(b.Input);T.length===1&&([n]=T)}}else if(this.getMoveCallCommand("high_borrow")){let l=this.getMoveCallCommand("high_borrow").MoveCall;[e]=l.typeArguments;let d=l.arguments[4];d.$kind==="Input"&&(t=this.getPureInputU64(d.Input));let b=l.arguments[5];if(b.$kind==="Input"){let T=this.getPureAddresses(b.Input);T.length===1&&([n]=T)}}else if(this.getMoveCallCommand("high_borrow_with_strap")){let l=this.getMoveCallCommand("high_borrow_with_strap").MoveCall;[e]=l.typeArguments;let d=l.arguments[5];d.$kind==="Input"&&(t=this.getPureInputU64(d.Input));let b=l.arguments[6];if(b.$kind==="Input"){let T=this.getPureAddresses(b.Input);T.length===1&&([n]=T)}}return{txType:Lt.TransactionType.Other,type:"borrow",intentionData:{collateralType:e,collateralAmount:i,borrowAmount:t,insertionPlace:n,strapId:o}}}decodeRepay(){let e="",t="0",n="0",i,s=this.getStrapId();if(this.getMoveCallCommand("fully_repay"))[e]=this.getMoveCallCommand("fully_repay").MoveCall.typeArguments;else if(this.getMoveCallCommand("fully_repay_with_strap"))[e]=this.getMoveCallCommand("fully_repay_with_strap").MoveCall.typeArguments;else if(this.getMoveCallCommand("repay_and_withdraw")){let l=this.getMoveCallCommand("repay_and_withdraw").MoveCall;[e]=l.typeArguments;let d=l.arguments[4];d.$kind==="Input"&&(n=this.getPureInputU64(d.Input));let b=l.arguments[5];if(b.$kind==="Input"){let C=this.getPureAddresses(b.Input);C.length===1&&([i]=C)}let T=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];T.$kind==="Input"&&(t=this.getPureInputU64(T.Input))}else if(this.getMoveCallCommand("repay_and_withdraw_with_strap")){let l=this.getMoveCallCommand("repay_and_withdraw_with_strap").MoveCall;[e]=l.typeArguments;let d=l.arguments[5];d.$kind==="Input"&&(n=this.getPureInputU64(d.Input));let b=l.arguments[6];if(b.$kind==="Input"){let C=this.getPureAddresses(b.Input);C.length===1&&([i]=C)}let T=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];T.$kind==="Input"&&(t=this.getPureInputU64(T.Input))}return{txType:Lt.TransactionType.Other,type:"repay",intentionData:{collateralType:e,repayAmount:t,withdrawAmount:n,isSurplus:!1,insertionPlace:i,strapId:s}}}decodeWithdraw(){let e="",t="0",n,o=this.getStrapId();if(this.getMoveCallCommand("withdraw_with_strap")){let i=this.getMoveCallCommand("withdraw_with_strap").MoveCall;[e]=i.typeArguments;let s=i.arguments[4];s.$kind==="Input"&&(t=this.getPureInputU64(s.Input));let l=i.arguments[5];if(l.$kind==="Input"){let d=this.getPureAddresses(l.Input);d.length===1&&([n]=d)}}else if(this.getMoveCallCommand("withdraw")){let i=this.getMoveCallCommand("withdraw").MoveCall;[e]=i.typeArguments;let s=i.arguments[3];s.$kind==="Input"&&(t=this.getPureInputU64(s.Input));let l=i.arguments[4];if(l.$kind==="Input"){let d=this.getPureAddresses(l.Input);d.length===1&&([n]=d)}}return{txType:Lt.TransactionType.Other,type:"withdraw",intentionData:{collateralType:e,withdrawAmount:t,insertionPlace:n,strapId:o}}}decodeClose(){let e="",t=this.getStrapId();return this.getMoveCallCommand("destroy_empty_strap")&&([e]=this.getMoveCallCommand("destroy_empty_strap").MoveCall.typeArguments),{txType:Lt.TransactionType.Other,type:"close",intentionData:{collateralType:e,strapId:t}}}decodeSBUCKDeposit(){let t=this.getMoveCallCommand("into_balance").MoveCall.typeArguments[0],n="0",i=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];i.$kind==="Input"&&(n=this.getPureInputU64(i.Input));let s=this.isSBUCKStakeTransaction();return console.log("Decoder.decodeSBUCKDeposit",t,n,s),{txType:Lt.TransactionType.Other,type:"sbuck-deposit",intentionData:{coinType:t,amount:n,isStake:s}}}decodeSBUCKUnstake(){let e="0",t=this.isSBUCKStakeTransaction();if(t){let d=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];d.$kind==="Input"&&(e=this.getPureInputU64(d.Input))}let n=[],o=this.getMoveCallModuleCommands("proof_rule","unlock");if(o.length>0)for(let l=0;l<o.length;l++){let d=o[l];n.push("")}else{let l=this.getMoveCallModuleCommands("fountain_core","force_unstake");for(let d=0;d<l.length;d++){let T=l[d].MoveCall.arguments[2];if(T.$kind==="Input"){let{objectId:C}=this.inputs[T.Input].UnresolvedObject;n.push(C)}}}let i=this.isSBUCKWithdrawTransaction(),s={stakeProofs:n,amount:e,isStake:t,toBuck:i};return console.log("Decoder.decodeSBUCKUnstake",s),{txType:Lt.TransactionType.Other,type:"sbuck-unstake",intentionData:s}}decodeSBUCKWithdraw(){let e="0",n=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];return n.$kind==="Input"&&(e=this.getPureInputU64(n.Input)),console.log("Decoder.SBUCKWithdraw",e),{txType:Lt.TransactionType.Other,type:"sbuck-withdraw",intentionData:{amount:e}}}decodeSBUCKClaim(){let e=[],t=this.getMoveCallModuleCommands("fountain_core","claim");for(let n=0;n<t.length;n++){let i=t[n].MoveCall.arguments[2];if(i.$kind==="Input"){let{objectId:s}=this.inputs[i.Input].UnresolvedObject;e.push(s)}}return console.log("Decoder.decodeSBUCKClaim",e),{txType:Lt.TransactionType.Other,type:"sbuck-claim",intentionData:{stakeProofs:e}}}decodeTankDeposit(){let e="0",n=this.getSplitCoinsCommands()[0].SplitCoins.amounts[0];n.$kind==="Input"&&(e=this.getPureInputU64(n.Input));let i=this.getMoveCallModuleCommand("tank_operations","deposit").MoveCall.typeArguments[0];return console.log("Decoder.decodeTankDeposit",i,e),{txType:Lt.TransactionType.Other,type:"tank-deposit",intentionData:{coinType:i,amount:e}}}decodeTankWithdraw(){let e=this.getMoveCallModuleCommand("tank_operations","withdraw").MoveCall,t=e.typeArguments[0],n="0",o=e.arguments[5];return o.$kind==="Input"&&(n=this.getPureInputU64(o.Input)),console.log("Decoder.decodeTankWithdraw",t,n),{txType:Lt.TransactionType.Other,type:"tank-withdraw",intentionData:{coinType:t,amount:n}}}decodeTankClaim(){let t=this.getMoveCallModuleCommand("tank_operations","claim").MoveCall.typeArguments[0];return console.log("Decoder.decodeTankClaim",t),{txType:Lt.TransactionType.Other,type:"tank-claim",intentionData:{coinType:t}}}decodeLockedClaim(){let e="",t=0,n=this.getMoveCallModuleCommands("proof_rule","claim");for(let i=0;i<n.length;i++)[e]=n[i].MoveCall.typeArguments,t++;let o=this.getMoveCallModuleCommands("lst_proof_rule","claim");for(let i=0;i<o.length;i++)[e]=o[i].MoveCall.typeArguments,t++;return console.log("Decoder.decodeLockedClaim",e,t),{txType:Lt.TransactionType.Other,type:"lock-claim",intentionData:{coinType:e,proofCount:t}}}getCoinInput(e){if(this.inputs[e].$kind!=="Object")throw new Error("not Object argument")}getStrapId(){let e;if(this.isStrapNewTransaction()?e="new":this.isLstUnlockTransaction()&&(e="locked"),!e){let t=this.getMoveCallModuleCommand("fountain","unstake");if(t){let n=t.MoveCall.arguments[2];n.$kind==="Input"&&(e=this.inputs[n.Input].UnresolvedObject.objectId)}}return e}getPureInputU64(e){let t=this.inputs[e];if(t.$kind!=="Pure")throw new Error("not pure argument");return Yn.bcs.U64.fromBase64(t.Pure.bytes)}getPureAddresses(e){let t=this.inputs[e];if(t.$kind!=="Pure")throw new Error("not pure argument");return Yn.bcs.vector(Yn.bcs.Address).fromBase64(t.Pure.bytes)}};var Dc=require("@msafe/sui3-utils");var Cc=require("@mysten/sui/transactions"),xc=require("bucket-protocol-sdk");var wc=require("bucket-protocol-sdk"),Rt=(a,e)=>{let t=a==="sui:mainnet"?"mainnet":"testnet";return new wc.BucketClient(t,e.address)};var kc=async(a,e,t)=>{let{coinType:n,amount:o,buckToCoin:i}=a,s=new Cc.Transaction,l=Rt(t,e);return await(0,xc.buildPsmTx)(l,s,n,o,i,e.address),s};var eo=class a extends w{constructor(t){super(t);this.data=t}txType=Dc.TransactionType.Other;txSubType="psm";async build(t){let{account:n,network:o}=t;return await kc(this.data,n,o)}static fromData(t){return new a(t)}};var Pc=require("@msafe/sui3-utils");var pn=require("@mysten/sui/transactions"),me=require("bucket-protocol-sdk");var vc=async(a,e,t)=>{let{collateralType:n,collateralAmount:o,borrowAmount:i,insertionPlace:s,strapId:l}=a,d=new pn.Transaction,b=Rt(t,e);return await(0,me.buildBorrowTx)(b,d,n,o,i,e.address,s,l),d},Ac=async(a,e,t)=>{let{collateralType:n,withdrawAmount:o,insertionPlace:i,strapId:s}=a,l=new pn.Transaction,d=Rt(t,e);return await(0,me.buildWithdrawTx)(d,l,n,o,e.address,i,s),l},Mc=async(a,e,t)=>{let{collateralType:n,repayAmount:o,withdrawAmount:i,isSurplus:s,insertionPlace:l,strapId:d}=a,b=new pn.Transaction,T=Rt(t,e);return await(0,me.buildRepayTx)(T,b,n,o,i,e.address,s,l,d),b},Oc=async(a,e,t)=>{let{collateralType:n,recipient:o,strapId:i}=a,s=new pn.Transaction,l=Rt(t,e);return await(0,me.buildCloseTx)(l,s,n,o,i),s};var no=class a extends w{constructor(t){super(t);this.data=t}txType=Pc.TransactionType.Other;txSubType="borrow";async build(t){let{account:n,network:o}=t;return await vc(this.data,n,o)}static fromData(t){return new a(t)}};var Rc=require("@msafe/sui3-utils");var oo=class a extends w{constructor(t){super(t);this.data=t}txType=Rc.TransactionType.Other;txSubType="repay";async build(t){let{account:n,network:o}=t;return await Mc(this.data,n,o)}static fromData(t){return new a(t)}};var Bc=require("@msafe/sui3-utils");var ao=class a extends w{constructor(t){super(t);this.data=t}txType=Bc.TransactionType.Other;txSubType="withdraw";async build(t){let{account:n,network:o}=t;return await Ac(this.data,n,o)}static fromData(t){return new a(t)}};var Ec=require("@msafe/sui3-utils");var io=class a extends w{constructor(t){super(t);this.data=t}txType=Ec.TransactionType.Other;txSubType="close";async build(t){let{account:n,network:o}=t;return await Oc(this.data,n,o)}static fromData(t){return new a(t)}};var fn=require("@msafe/sui3-utils");var dn=require("@mysten/sui/transactions"),pe=require("bucket-protocol-sdk");var Wc=async(a,e,t)=>{let{coinType:n,amount:o,isStake:i}=a,s=new dn.Transaction,l=Rt(t,e);return await(0,pe.buildSBUCKDepositTx)(l,s,n,o,e.address,i),s},Nc=async(a,e,t)=>{let{stakeProofs:n,amount:o,isStake:i,toBuck:s}=a,l=new dn.Transaction,d=Rt(t,e);return await(0,pe.buildSBUCKUnstakeTx)(d,l,n,o,e.address,i,s),l},_c=async(a,e,t)=>{let{amount:n}=a,o=new dn.Transaction,i=Rt(t,e);return await(0,pe.buildSBUCKWithdrawTx)(i,o,n,e.address),o},Lc=async(a,e,t)=>{let{stakeProofs:n}=a,o=new dn.Transaction,i=Rt(t,e);return await(0,pe.buildSBUCKClaimTx)(i,o,n,e.address),o};var ro=class a extends w{constructor(t){super(t);this.data=t}txType=fn.TransactionType.Other;txSubType="sbuck-deposit";async build(t){let{account:n,network:o}=t;return await Wc(this.data,n,o)}static fromData(t){return new a(t)}},so=class a extends w{constructor(t){super(t);this.data=t}txType=fn.TransactionType.Other;txSubType="sbuck-unstake";async build(t){let{account:n,network:o}=t;return await Nc(this.data,n,o)}static fromData(t){return new a(t)}},co=class a extends w{constructor(t){super(t);this.data=t}txType=fn.TransactionType.Other;txSubType="sbuck-withdraw";async build(t){let{account:n,network:o}=t;return await _c(this.data,n,o)}static fromData(t){return new a(t)}},lo=class a extends w{constructor(t){super(t);this.data=t}txType=fn.TransactionType.Other;txSubType="sbuck-claim";async build(t){let{account:n,network:o}=t;return await Lc(this.data,n,o)}static fromData(t){return new a(t)}};var ho=require("@msafe/sui3-utils");var uo=require("@mysten/sui/transactions"),Ke=require("bucket-protocol-sdk");var jc=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new uo.Transaction,s=Rt(t,e);return await(0,Ke.buildTankDepositTx)(s,i,n,o,e.address),i},Uc=async(a,e,t)=>{let{coinType:n,amount:o}=a,i=new uo.Transaction,s=Rt(t,e);return await(0,Ke.buildTankWithdrawTx)(s,i,n,o,e.address),i},qc=async(a,e,t)=>{let{coinType:n}=a,o=new uo.Transaction,i=Rt(t,e);return await(0,Ke.buildTankClaimTx)(i,o,n,e.address),o};var Fc=require("@mysten/sui/transactions"),Kc=require("bucket-protocol-sdk");var Vc=async(a,e,t)=>{let{coinType:n,proofCount:o}=a,i=new Fc.Transaction,s=Rt(t,e);return await(0,Kc.buildLockedClaimTx)(s,i,n,o,e.address),i};var mo=class a extends w{constructor(t){super(t);this.data=t}txType=ho.TransactionType.Other;txSubType="tank-deposit";async build(t){let{account:n,network:o}=t;return await jc(this.data,n,o)}static fromData(t){return new a(t)}},po=class a extends w{constructor(t){super(t);this.data=t}txType=ho.TransactionType.Other;txSubType="tank-withdraw";async build(t){let{account:n,network:o}=t;return await Uc(this.data,n,o)}static fromData(t){return new a(t)}},fo=class a extends w{constructor(t){super(t);this.data=t}txType=ho.TransactionType.Other;txSubType="tank-claim";async build(t){let{account:n,network:o}=t;return await qc(this.data,n,o)}static fromData(t){return new a(t)}};var $c=require("@msafe/sui3-utils");var go=class a extends w{constructor(t){super(t);this.data=t}txType=$c.TransactionType.Other;txSubType="lock-claim";async build(t){let{account:n,network:o}=t;return await Vc(this.data,n,o)}static fromData(t){return new a(t)}};var yo=class{application="bucket";supportSDK="@mysten/sui";async deserialize(e){console.log("Bucket helper deserialize input: ",e);let{transaction:t}=e,o=new to(t).decode();return{txType:Hc.TransactionType.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n,network:o}=e,i;switch(e.txSubType){case"psm":i=eo.fromData(e.intentionData);break;case"borrow":i=no.fromData(e.intentionData);break;case"withdraw":i=ao.fromData(e.intentionData);break;case"repay":i=oo.fromData(e.intentionData);break;case"close":i=io.fromData(e.intentionData);break;case"tank-deposit":i=mo.fromData(e.intentionData);break;case"tank-withdraw":i=po.fromData(e.intentionData);break;case"tank-claim":i=fo.fromData(e.intentionData);break;case"sbuck-deposit":i=ro.fromData(e.intentionData);break;case"sbuck-unstake":i=so.fromData(e.intentionData);break;case"sbuck-withdraw":i=co.fromData(e.intentionData);break;case"sbuck-claim":i=lo.fromData(e.intentionData);break;case"lock-claim":i=go.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var Zl=require("@msafe/sui3-utils");var al=require("@msafe/sui3-utils");var bo=require("@cetusprotocol/aggregator-sdk"),Xc=require("@cetusprotocol/farms-sdk"),zc=require("@cetusprotocol/sui-clmm-sdk"),Gc=require("@cetusprotocol/vaults-sdk"),Qc=require("@cetusprotocol/xcetus-sdk"),Re=require("@mysten/sui/client"),Yt=(a,e)=>{let t=zc.CetusClmmSDK.createSDK({env:"mainnet",sui_client:new Re.SuiClient({url:(0,Re.getFullnodeUrl)("mainnet")})});return t.setSenderAddress(e.address),t},qt=(a,e)=>{let t=Xc.CetusFarmsSDK.createSDK({env:"mainnet",sui_client:new Re.SuiClient({url:(0,Re.getFullnodeUrl)("mainnet")})});return t.setSenderAddress(e.address),t},hd="https://api-sui.cetus.zone/router_v2/find_routes",Jc=(a,e)=>{let t=new Re.SuiClient({url:"https://fullnode.mainnet.sui.io/"});return new bo.AggregatorClient({endpoint:hd,signer:e.address,client:t,env:bo.Env.Mainnet})},hn=(a,e)=>{let t=Gc.CetusVaultsSDK.createSDK({env:"mainnet"});return t.setSenderAddress(e.address),t},Ve=(a,e)=>{let t=Qc.CetusXcetusSDK.createSDK({env:"mainnet"});return t.setSenderAddress(e.address),t};var Yc=async(a,e,t)=>await Yt(t,e).Pool.createPoolPayload(a),Zc=async(a,e,t)=>await Yt(t,e).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),tl=async(a,e,t)=>await Yt(t,e).Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg),el=async(a,e,t)=>await Yt(t,e).Position.closePositionPayload(a),nl=async(a,e,t)=>await Yt(t,e).Position.removeLiquidityPayload(a),ol=async(a,e,t)=>await Yt(t,e).Rewarder.collectRewarderPayload(a);var So=class a extends w{constructor(t){super(t);this.data=t}txType=al.TransactionType.Other;txSubType="OpenAndAddLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Zc(i,n,o)}static fromData(t){return new a(t)}};var il=require("@msafe/sui3-utils");var To=class a extends w{constructor(t){super(t);this.data=t}txType=il.TransactionType.Other;txSubType="ClaimFeeAndMining";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await ol(i,n,o)}static fromData(t){return new a(t)}};var rl=require("@msafe/sui3-utils");var Io=class a extends w{constructor(t){super(t);this.data=t}txType=rl.TransactionType.Other;txSubType="CreatePool";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Yc(i,n,o)}static fromData(t){return new a(t)}};var sl=require("@msafe/sui3-utils");var wo=class a extends w{constructor(t){super(t);this.data=t}txType=sl.TransactionType.Other;txSubType="DecreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await nl(i,n,o)}static fromData(t){return new a(t)}};var yl=require("@msafe/sui3-utils");var cl=async(a,e,t)=>await qt(t,e).Farms.openPositionAddLiquidityStakePayload(a),ll=async(a,e,t)=>await qt(t,e).Farms.addLiquidityFixCoinPayload(a),ul=async(a,e,t)=>await qt(t,e).Farms.removeLiquidityPayload(a),ml=async(a,e,t)=>await qt(t,e).Farms.removeLiquidityPayload(a),pl=async(a,e,t)=>await qt(t,e).Farms.claimFeeAndClmmReward(a),dl=async(a,e,t)=>await qt(t,e).Farms.harvestPayload(a),fl=async(a,e,t)=>{let n=qt(t,e),o=Object.values(a);return await n.Farms.batchHarvestPayload(o)},hl=async(a,e,t)=>await qt(t,e).Farms.depositPayload(a),gl=async(a,e,t)=>await qt(t,e).Farms.withdrawPayload(a);var Co=class a extends w{constructor(t){super(t);this.data=t}txType=yl.TransactionType.Other;txSubType="FarmingOpenAndAddLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await cl(i,n,o)}static fromData(t){return new a(t)}};var bl=require("@msafe/sui3-utils");var xo=class a extends w{constructor(t){super(t);this.data=t}txType=bl.TransactionType.Other;txSubType="FarmingBatchHarvest";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await fl(i,n,o)}static fromData(t){return new a(t)}};var Sl=require("@msafe/sui3-utils");var ko=class a extends w{constructor(t){super(t);this.data=t}txType=Sl.TransactionType.Other;txSubType="FarmingClaimFeeAndReward";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await pl(i,n,o)}static fromData(t){return new a(t)}};var Tl=require("@msafe/sui3-utils");var Do=class a extends w{constructor(t){super(t);this.data=t}txType=Tl.TransactionType.Other;txSubType="FarmingDecreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await ul(i,n,o)}static fromData(t){return new a(t)}};var Il=require("@msafe/sui3-utils");var vo=class a extends w{constructor(t){super(t);this.data=t}txType=Il.TransactionType.Other;txSubType="FarmingHarvest";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await dl(i,n,o)}static fromData(t){return new a(t)}};var wl=require("@msafe/sui3-utils");var Ao=class a extends w{constructor(t){super(t);this.data=t}txType=wl.TransactionType.Other;txSubType="FarmingIncreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await ll(i,n,o)}static fromData(t){return new a(t)}};var Cl=require("@msafe/sui3-utils");var Mo=class a extends w{constructor(t){super(t);this.data=t}txType=Cl.TransactionType.Other;txSubType="FarmingRemoveLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await ml(i,n,o)}static fromData(t){return new a(t)}};var xl=require("@msafe/sui3-utils");var Oo=class a extends w{constructor(t){super(t);this.data=t}txType=xl.TransactionType.Other;txSubType="FarmingStake";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await hl(i,n,o)}static fromData(t){return new a(t)}};var kl=require("@msafe/sui3-utils");var Po=class a extends w{constructor(t){super(t);this.data=t}txType=kl.TransactionType.Other;txSubType="FarmingUnstake";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await gl(i,n,o)}static fromData(t){return new a(t)}};var Dl=require("@msafe/sui3-utils");var Ro=class a extends w{constructor(t){super(t);this.data=t}txType=Dl.TransactionType.Other;txSubType="IncreaseLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await tl(i,n,o)}static fromData(t){return new a(t)}};var Ml=require("@msafe/sui3-utils");var gn=require("@mysten/sui/transactions"),Bo=Ut(require("haedal-vault-sdk"));var gd=async(a,e,t)=>{let n=hn(t,e),o=new gn.Transaction;return o.setSender(e.address),n.Vest.buildRedeemPayload(a.params,o),o},yd=async(a,e,t)=>{let n=new Bo.default(Bo.vaults_mainnet);n.senderAddress=e.address;let o=new gn.Transaction;return o.setSender(e.address),await n?.Vest.buildRedeemPayload(a.params,o),o},vl=(a,e,t)=>{let n=Yt(t,e),o=new gn.Transaction;return n?.Vest.buildRedeemPayload(a.params,o),o},bd=async(a,e,t)=>{let n=Yt(t,e),o=qt(t,e),i=new gn.Transaction,s=await o.Farms.withdrawReturnPayload(a.withdrawParams,i);return n.Vest.buildRedeemPayload(a.redeemParms.map(l=>({...l,clmm_position_id:s})),i),o.Farms.depositPayload({...a.depositParams,clmm_position_id:s},i),i},Al=async(a,e,t)=>a.type==="clmm"?vl(a,e,t):a.type==="farms"?bd(a,e,t):a.type==="vaults"?gd(a,e,t):a.type==="haedalVaults"?yd(a,e,t):vl(a,e,t);var Eo=class a extends w{constructor(t){super(t);this.data=t}txType=Ml.TransactionType.Other;txSubType="PosVestingRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Al(i,n,o)}static fromData(t){return new a(t)}};var Ol=require("@msafe/sui3-utils");var Wo=class a extends w{constructor(t){super(t);this.data=t}txType=Ol.TransactionType.Other;txSubType="RemoveLiquidity";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await el(i,n,o)}static fromData(t){return new a(t)}};var El=require("@msafe/sui3-utils");var Pl=require("@cetusprotocol/aggregator-sdk"),Rl=require("@mysten/sui/transactions");var Bl=async(a,e,t)=>{let n=Jc(t,e),o=new Rl.Transaction;return await n.fastRouterSwap({...a,router:(0,Pl.restituteMsafeFastRouterSwapParams)(a.router),txb:o}),o};var No=class a extends w{constructor(t){super(t);this.data=t}txType=El.TransactionType.Other;txSubType="AggregatorSwap";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Bl(i,n,o)}static fromData(t){return new a(t)}};var _l=require("@msafe/sui3-utils");var Zr=require("@mysten/sui/transactions");var Wl=async(a,e,t)=>{let n=hn(t,e),o=new Zr.Transaction;return o.setSender(e.address),await n.Vaults.deposit(a,o),o},Nl=async(a,e,t)=>{let n=hn(t,e),o=new Zr.Transaction;return await n.Vaults.withdraw(a,o),o};var _o=class a extends w{constructor(t){super(t);this.data=t}txType=_l.TransactionType.Other;txSubType="AddVaultsPosition";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Wl(i,n,o)}static fromData(t){return new a(t)}};var Ll=require("@msafe/sui3-utils");var Lo=class a extends w{constructor(t){super(t);this.data=t}txType=Ll.TransactionType.Other;txSubType="RemoveVaultsPosition";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Nl(i,n,o)}static fromData(t){return new a(t)}};var Fl=require("@msafe/sui3-utils");var Ul=require("@mysten/sui/transactions"),jl={package_id:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",published_at:"0x355714a1eeb7ab1d80902da6c92001170cda1212edf524c32aa308a3ac177c31",cetus_coin_type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS"},ql=async(a,e,t)=>{console.log("getVestingRedeemTxb txbParams: ",a),console.log("getVestingRedeemTxb account: ",e),console.log("getVestingRedeemTxb network: ",t);let{pool:n,nftId:o,periods:i,CLOCK_ADDRESS:s}=a,l=new Ul.Transaction;return i.forEach(d=>{l.moveCall({target:`${jl.published_at}::router::redeem`,typeArguments:[jl.cetus_coin_type],arguments:[l.object(n),l.object(o),l.pure(d),l.object(s)]})}),l};var jo=class a extends w{constructor(t){super(t);this.data=t}txType=Fl.TransactionType.Other;txSubType="VestingRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await ql(i,n,o)}static fromData(t){return new a(t)}};var zl=require("@msafe/sui3-utils");var Kl=async(a,e,t)=>await Ve(t,e).XCetusModule.convertPayload(a),Vl=async(a,e,t)=>await Ve(t,e).XCetusModule.redeemLockPayload(a),$l=async(a,e,t)=>await Ve(t,e).XCetusModule.redeemDividendV3Payload(a.veNftId,a.rewardList),Hl=async(a,e,t)=>await Ve(t,e).XCetusModule.cancelRedeemPayload(a),Xl=async(a,e,t)=>await Ve(t,e).XCetusModule.redeemPayload(a);var Uo=class a extends w{constructor(t){super(t);this.data=t}txType=zl.TransactionType.Other;txSubType="xCETUSCancelRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Hl(i,n,o)}static fromData(t){return new a(t)}};var Gl=require("@msafe/sui3-utils");var qo=class a extends w{constructor(t){super(t);this.data=t}txType=Gl.TransactionType.Other;txSubType="xCETUSClaimStakingRwewards";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await $l(i,n,o)}static fromData(t){return new a(t)}};var Ql=require("@msafe/sui3-utils");var Fo=class a extends w{constructor(t){super(t);this.data=t}txType=Ql.TransactionType.Other;txSubType="xCETUSConvert";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Kl(i,n,o)}static fromData(t){return new a(t)}};var Jl=require("@msafe/sui3-utils");var Ko=class a extends w{constructor(t){super(t);this.data=t}txType=Jl.TransactionType.Other;txSubType="xCETUSRedeem";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Xl(i,n,o)}static fromData(t){return new a(t)}};var Yl=require("@msafe/sui3-utils");var Vo=class a extends w{constructor(t){super(t);this.data=t}txType=Yl.TransactionType.Other;txSubType="xCETUSRedeemLock";async build(t){let{account:n,network:o}=t,{txbParams:i}=this.data;return await Vl(i,n,o)}static fromData(t){return new a(t)}};var $o=class{application="cetus";supportSDK="@mysten/sui";async deserialize(e){console.log("Cetus helper deserialize input: ",e);let{txbParams:t,action:n}=e;return{txType:Zl.TransactionType.Other,txSubType:n,intentionData:{txbParams:{...t},action:n}}}async build(e){let{suiClient:t,account:n,network:o}=e,i;switch(e.txSubType){case"OpenAndAddLiquidity":i=So.fromData(e.intentionData);break;case"IncreaseLiquidity":i=Ro.fromData(e.intentionData);break;case"DecreaseLiquidity":i=wo.fromData(e.intentionData);break;case"RemoveLiquidity":i=Wo.fromData(e.intentionData);break;case"ClaimFeeAndMining":i=To.fromData(e.intentionData);break;case"FarmingOpenAndAddLiquidity":i=Co.fromData(e.intentionData);break;case"FarmingIncreaseLiquidity":i=Ao.fromData(e.intentionData);break;case"FarmingDecreaseLiquidity":i=Do.fromData(e.intentionData);break;case"FarmingRemoveLiquidity":i=Mo.fromData(e.intentionData);break;case"FarmingClaimFeeAndReward":i=ko.fromData(e.intentionData);break;case"FarmingHarvest":i=vo.fromData(e.intentionData);break;case"FarmingBatchHarvest":i=xo.fromData(e.intentionData);break;case"FarmingStake":i=Oo.fromData(e.intentionData);break;case"FarmingUnstake":i=Po.fromData(e.intentionData);break;case"xCETUSConvert":i=Fo.fromData(e.intentionData);break;case"xCETUSRedeemLock":i=Vo.fromData(e.intentionData);break;case"xCETUSClaimStakingRwewards":i=qo.fromData(e.intentionData);break;case"xCETUSCancelRedeem":i=Uo.fromData(e.intentionData);break;case"xCETUSRedeem":i=Ko.fromData(e.intentionData);break;case"VestingRedeem":i=jo.fromData(e.intentionData);break;case"AggregatorSwap":i=No.fromData(e.intentionData);break;case"AddVaultsPosition":i=_o.fromData(e.intentionData);break;case"RemoveVaultsPosition":i=Lo.fromData(e.intentionData);break;case"PosVestingRedeem":i=Eo.fromData(e.intentionData);break;case"CreatePool":i=Io.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var wu=require("@msafe/sui3-utils");var tu=Ut(require("sort-keys-recursive")),_=class{constructor(e){this.data=e}serialize(){return JSON.stringify((0,tu.default)(this.data))}};var yn=require("@mysten/sui.js/client");var ts={};Yr(ts,{contractId:()=>Id,default:()=>Dd,feeObjId:()=>xd,roleObjId:()=>wd,status:()=>Td,transaction:()=>Sd,upgradeCapObjId:()=>kd,vaultObjId:()=>Cd});var Sd="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",Td="success",Id="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",wd="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Cd="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",xd="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",kd="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",Dd={transaction:Sd,status:Td,contractId:Id,roleObjId:wd,vaultObjId:Cd,feeObjId:xd,upgradeCapObjId:kd};var es={};Yr(es,{contractId:()=>Md,default:()=>Ed,feeObjId:()=>Rd,roleObjId:()=>Od,status:()=>Ad,transaction:()=>vd,upgradeCapObjId:()=>Bd,vaultObjId:()=>Pd});var vd="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",Ad="success",Md="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",Od="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",Pd="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",Rd="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",Bd="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",Ed={transaction:vd,status:Ad,contractId:Md,roleObjId:Od,vaultObjId:Pd,feeObjId:Rd,upgradeCapObjId:Bd};var Wd=(0,yn.getFullnodeUrl)("testnet"),Nd=(0,yn.getFullnodeUrl)("testnet"),_d=(0,yn.getFullnodeUrl)("mainnet"),Ld=(0,yn.getFullnodeUrl)("mainnet"),jd="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",Ud="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",qd="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",Fd="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",eu=ts,nu=es,Kd=new Map([["dev",{env:"dev",rpc:{url:Wd},backend:{url:jd},contract:eu}],["stg",{env:"stg",rpc:{url:Nd},backend:{url:Ud},contract:eu}],["prev",{env:"prev",rpc:{url:_d},backend:{url:qd},contract:nu}],["prod",{env:"prod",rpc:{url:Ld},backend:{url:Fd},contract:nu}]]);function ou(a,e){let t=Kd.get(a);if(!t)throw new Error(`Env not supported: ${a}`);return e&&e.rpc&&(t.rpc=e.rpc),e&&e.backend&&(t.backend=e.backend),e&&e.contract&&(t.contract=e.contract),t}var au=require("@mysten/sui.js/client");var L=class extends Error{mpayErrorCode;context;constructor(e,t,n={}){let{cause:o,context:i}=n;o?super(`[MPay] ${t}: ${o}`):super(`[MPay] ${t}`),this.mpayErrorCode=e,this.context=i}};var Ho=class extends L{constructor(){super(11,"Backend is not specified")}};var Xo=class extends L{constructor(){super(1,"Wallet not connected")}};var re=Ut(require("axios"));var $e=class extends L{constructor(e,t){super(10,e,{context:t})}};var zo=class a{constructor(e){this.apiURL=e}static parseResponseData(e){if(e instanceof re.AxiosError)throw new $e(e.response?.statusText);if(e.status===200){if(e.data.success)return e.data.data;throw new $e(e.data.code)}throw new $e(e.status.toString())}async getIncomingStreams(e,t){let n=await re.default.post(`${this.apiURL}/stream`,{recipient:e,...t});return a.parseResponseData(n)}async getOutgoingStreams(e,t){let n=await re.default.post(`${this.apiURL}/stream`,{sender:e,...t});return a.parseResponseData(n)}async getStreamHistory(e){let t=await re.default.post(`${this.apiURL}/stream-events`,e),n=a.parseResponseData(t);return n.data.forEach(o=>{let i=o;return i.data.type==="create_stream"?i.data.balance=BigInt(i.data.balance):i.data.type==="cancel_stream"?i.data.withdrawAmount=BigInt(i.data.withdrawAmount):i.data.type==="claim"||i.data.type==="auto_claim"?i.data.claimAmount=BigInt(i.data.claimAmount):i.data.type==="set_auto_claim"&&(i.data.enabled=!!i.data.enabled),i.createdAt=new Date(i.createdAt),i}),n}async getAllCoinTypes(e){let t=await re.default.post(`${this.apiURL}/stream-info`,{address:e});return a.parseResponseData(t)}async getAllRecipients(e,t){let n=await re.default.post(`${this.apiURL}/stream-info`,{sender:e,status:t});return a.parseResponseData(n)}async getAllSenders(e,t){let n=await re.default.post(`${this.apiURL}/stream-info`,{recipient:e,status:t});return a.parseResponseData(n)}};var He=class a{signer;suiClient;envConfig;_backend;constructor(e){this.envConfig=e,this.suiClient=new au.SuiClient({url:e.rpc.url}),e.backend&&(this._backend=new zo(e.backend.url))}static new(e,t){let n=ou(e,t);return new a(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Ho;return this._backend}set backend(e){this._backend=e}connectWallet(e){this.signer=e}disconnect(){this.signer=void 0}get wallet(){if(!this.signer)throw new Xo;return this.signer}async walletAddress(){return this.wallet.address()}};var Ee=require("@mysten/sui.js/utils");var Cn=require("@mysten/sui.js/transactions");var rs=require("@mysten/sui.js/transactions"),wn=require("@mysten/sui.js/utils");var ns=50n,Go=10000n,iu=25n,os=100000000n;var Zt=class{constructor(e){this.object=e}moveArg(e){return e.object(this.object)}},bn=class{constructor(e){this.objects=e}moveArgs(e){return e.makeMoveVec({objects:this.objects.map(t=>e.object(t))})}},he=class a{constructor(e){this.result=e;return new Proxy(this,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(t,n){if(n in t)return Reflect.get(t,n);let o=s=>new a(t.result[s]);if(n===Symbol.iterator)return function*(){let s=0;for(;;)yield o(s),s++};if(typeof n=="symbol")return;let i=parseInt(n,10);if(!(Number.isNaN(i)||i<0))return o(i)}})}moveArg(){return this.result}};var as=require("buffer"),ru=require("@mysten/sui.js/utils");var Sn=class extends L{constructor(e,t){super(3,e,{context:t})}};var Qo=class{constructor(e){this.results=e}callResult(e){return this.results.results[e]}returnValue(e,t){return e.returnValues[t]}getValue(e=0,t=0){let n=this.callResult(e);return this.returnValue(n,t)}getAddress(e=0,t=0){let[n,o]=this.getValue(e,t);if(o!=="address")throw new Sn("Invalid contract return type.",{ctx:{expectType:"address",gotType:o}});return(0,ru.normalizeSuiAddress)(as.Buffer.from(n).toString("hex"))}getU64(e=0,t=0){let[n,o]=this.getValue(e,t);if(o!=="u64")throw new Sn("Invalid contract return type.",{ctx:{expectType:"u64",gotType:o}});return as.Buffer.from(n).readBigInt64LE()}};var is=require("@mysten/sui.js/bcs");var H=class extends L{constructor(e,t,n){super(2,`Invalid input: ${e}`,{context:{fieldKey:t,fieldValue:n}})}};var cu={groupId:"string",name:"string"},Vd=64;function lu(a){return uu(a),is.bcs.ser(cu,a).toString("base64")}function Tn(a){let e=is.bcs.de(cu,a,"base64");return uu(e),e}function uu(a){if(!su(a.name))throw new H("Invalid metadata: Name contains unknown character");if(!su(a.groupId))throw new H("Invalid metadata: Group ID contains unknown character");if(a.name.length>Vd)throw new H("Invalid metadata: Name exceed max length 64")}function su(a){return/^[\x00-\x7F]+$/.test(a)}var In=require("@mysten/sui.js/utils");function Jo(a,e){return(0,In.normalizeStructTag)(a)===(0,In.normalizeStructTag)(e)}function ge(a,e){return(0,In.normalizeStructTag)(a)===(0,In.normalizeStructTag)(e)}var Yo="txn.gas";var mu=require("nanoid");function pu(){return(0,mu.nanoid)()}var Be=class a{constructor(e,t,n){this.globals=e;this.feeContract=t;this.streamContract=n}static convertCreateStreamInfoToInternal(e){return{metadata:lu({name:e.name,groupId:pu()}),coinType:(0,wn.normalizeStructTag)(e.coinType),recipients:e.recipients.map(t=>({address:t.address,cliffAmount:t.cliffAmount,amountPerEpoch:t.amountPerStep})),epochInterval:e.interval,numberEpoch:e.steps,startTime:e.startTimeMs,cancelable:e.cancelable}}async buildCreateStreamTransactionBlock(e){let t=new rs.TransactionBlock,n=this.calculateFeesInternal(e),o=this.getCreateStreamCoinRequests(e,n),i=await this.wallet.requestCoins(o),s=await this.addMergeCoins(t,i[0]),l;o.length>1?l=await this.addMergeCoins(t,i[1]):l=s;for(let d=0;d<e.recipients.length;d++){let b=e.recipients[d],T=this.amountForRecipient(b,e.numberEpoch),C=this.getStreamFeeLocal(T),[x]=t.splitCoins(s,[t.pure(T+C,"u64")]),[k]=t.splitCoins(l,[t.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(t,{paymentCoin:new he(x),flatFeeCoin:new he(k),metadata:e.metadata,recipient:b.address,timeStart:e.startTime,cliff:b.cliffAmount,epochInterval:e.epochInterval,numEpoch:e.numberEpoch,amountPerEpoch:b.amountPerEpoch,cancelable:e.cancelable,coinType:e.coinType})}return t}calculateCreateStreamFees(e){let t=a.convertCreateStreamInfoToInternal(e);return this.calculateFeesInternal(t)}feeParams(){return{createFeePercent:{numerator:ns,denominator:Go},claimFeePercent:{numerator:iu,denominator:Go},flatFeePerStream:os}}async addMergeCoins(e,t){let n;return t.mergedCoins&&t.mergedCoins.length?(e.mergeCoins(e.object(t.primaryCoin),t.mergedCoins.map(o=>e.object(o))),n=e.object(t.primaryCoin)):t.primaryCoin===Yo?n=e.gas:n=e.object(t.primaryCoin),n}getCreateStreamCoinRequests(e,t){let n=e.coinType;return Jo(n,wn.SUI_TYPE_ARG)?[{coinType:n,amount:t.totalAmount+t.streamFeeAmount+t.flatFeeAmount}]:[{coinType:n,amount:t.totalAmount+t.streamFeeAmount},{coinType:wn.SUI_TYPE_ARG,amount:t.flatFeeAmount}]}calculateFeesInternal(e){let t=e.recipients.reduce((o,i)=>{let s=this.amountForRecipient(i,e.numberEpoch),l=this.getStreamFeeLocal(s);return{totalAmount:o.totalAmount+s,streamFeeAmount:o.streamFeeAmount+l}},{totalAmount:0n,streamFeeAmount:0n});return{flatFeeAmount:BigInt(e.recipients.length)*this.flatSuiFee,...t}}amountForRecipient(e,t){return BigInt(e.amountPerEpoch)*BigInt(t)+BigInt(e.cliffAmount)}get flatSuiFee(){return os}getStreamFeeLocal(e){return e*ns/Go}async getStreamFeeRemote(e){let t=this.feeContract.streamingFee(new rs.TransactionBlock,e),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:t});return new Qo(n).getU64()}get wallet(){return this.globals.wallet}};var ss=require("@mysten/sui.js/transactions");var du="0x0000000000000000000000000000000000000000000000000000000000000006";var Xe=class{constructor(e,t,n){this.moduleName=e;this.config=t;this.globals=n}addContractCall(e,t){let n=`${this.config.contractId}::${this.moduleName}::${t.method}`;return e.add(ss.Transactions.MoveCall({target:n,arguments:t.arguments.map(o=>o instanceof bn?o.moveArgs(e):o instanceof Zt?o.moveArg(e):o instanceof he?o.moveArg():e.pure(o)),typeArguments:t.typeArgs})),e}addTransactionBlock(e,t,n=[],o=[]){e.add(ss.Transactions.MoveCall({target:t,arguments:n.map(i=>i instanceof bn?i.moveArgs(e):i instanceof Zt?i.moveArg(e):i instanceof he?i.moveArg():e.pure(i)),typeArguments:o}))}makeObject(e){return typeof e=="string"?new Zt(e):e}vaultObject(){return new Zt(this.config.vaultObjId)}roleObject(){return new Zt(this.config.roleObjId)}feeObject(){return new Zt(this.config.feeObjId)}clockObject(){return new Zt(du)}};var ze=class a extends Xe{constructor(t,n){super(a.ModuleName,t,n);this.config=t;this.globals=n}static ModuleName="fee_module";static MethodName={set_streaming_fee:"set_streaming_fee",set_claim_fee:"set_claim_fee",set_streaming_flat_fee:"set_streaming_flat_fee",streaming_flat_fee:"streaming_flat_fee",streaming_fee:"streaming_fee",claim_fee:"claim_fee",fee_denominator:"fee_denominator"};setStreamingFee(t,n){let o=this.roleObject(),i=this.feeObject();return this.addContractCall(t,{method:a.MethodName.set_streaming_fee,arguments:[o,i,n],typeArgs:[]})}setStreamingFlatFee(t,n){let o=this.roleObject(),i=this.feeObject();return this.addContractCall(t,{method:a.MethodName.set_streaming_flat_fee,arguments:[o,i,n],typeArgs:[]})}setClaimFee(t,n){let o=this.roleObject(),i=this.feeObject();return this.addContractCall(t,{method:a.MethodName.set_claim_fee,arguments:[o,i,n],typeArgs:[]})}streamingFee(t,n){let o=this.feeObject();return this.addContractCall(t,{method:a.MethodName.streaming_fee,arguments:[o,n],typeArgs:[]})}claimFee(t,n){return this.addContractCall(t,{method:a.MethodName.claim_fee,arguments:[this.feeObject(),n],typeArgs:[]})}feeDenominator(t){return this.addContractCall(t,{method:a.MethodName.fee_denominator,arguments:[this.feeObject()],typeArgs:[]})}};var te=class a extends Xe{constructor(t,n){super(a.ModuleName,t,n);this.config=t;this.globals=n}static ModuleName="stream";static MethodName={create_stream:"create_stream",set_auto_claim:"set_auto_claim",cancel_stream:"cancel_stream",claim_stream:"claim_stream",claim_stream_by_proxy:"claim_stream_by_proxy",stream_current_epoch:"stream_current_epoch",now_milli_seconds:"now_milli_seconds"};createStream(t,n){let o=this.feeObject(),i=this.vaultObject(),s=this.makeObject(n.paymentCoin),l=this.makeObject(n.flatFeeCoin),d=this.clockObject();return this.addContractCall(t,{method:a.MethodName.create_stream,arguments:[o,i,s,l,n.metadata,n.recipient,n.timeStart,n.cliff,n.epochInterval,n.numEpoch,n.amountPerEpoch,n.cancelable,d],typeArgs:[n.coinType]})}setAutoClaim(t,n){let o=this.makeObject(n.streamId);return this.addContractCall(t,{method:a.MethodName.set_auto_claim,arguments:[o,n.enabled],typeArgs:[n.coinType]})}cancelStream(t,n){let o=this.makeObject(n.streamId),i=this.clockObject();return this.addContractCall(t,{method:a.MethodName.cancel_stream,arguments:[o,i],typeArgs:[n.coinType]})}claimStream(t,n){let o=this.makeObject(n.streamId),i=this.clockObject();return this.addContractCall(t,{method:a.MethodName.claim_stream,arguments:[o,i],typeArgs:[n.coinType]})}claimStreamByProxy(t,n){let o=this.makeObject(n.streamId),i=this.vaultObject(),s=this.feeObject(),l=this.clockObject();return this.addContractCall(t,{method:a.MethodName.claim_stream_by_proxy,arguments:[o,i,s,l],typeArgs:[n.coinType]})}get createStreamTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.create_stream}`}get setAutoClaimTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.set_auto_claim}`}get cancelStreamTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.cancel_stream}`}get claimStreamTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.claim_stream}`}get claimStreamByProxyTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.claim_stream_by_proxy}`}};var Ge=class{constructor(e){this.globals=e;let t=e.envConfig.contract;this.feeContract=new ze(t,e),this.streamContract=new te(t,e)}feeContract;streamContract;async createStreams(e){let t=Be.convertCreateStreamInfoToInternal(e);return this.createStreamHelper().buildCreateStreamTransactionBlock(t)}createStreamHelper(){return new Be(this.globals,this.feeContract,this.streamContract)}setAutoClaim(e,t,n){let o=new Cn.TransactionBlock;return this.streamContract.setAutoClaim(o,{streamId:e,enabled:t,coinType:n})}claimStream(e,t){let n=new Cn.TransactionBlock;return this.streamContract.claimStream(n,{streamId:e,coinType:t})}claimStreamByProxy(e,t){let n=new Cn.TransactionBlock;return this.streamContract.claimStreamByProxy(n,{streamId:e,coinType:t})}cancelStream(e,t){let n=new Cn.TransactionBlock;return this.streamContract.cancelStream(n,{streamId:e,coinType:t}),n}};var Qe=require("@mysten/sui.js/utils"),cs=require("luxon");var Zo=class extends L{constructor(e,t){super(12,`Transaction failed: ${t}`,{context:{status:e,msg:t}})}};var $d=1e3,ta=class{constructor(e){this.globals=e;this.coinMetaHelper=new ls(e.suiClient),this.createStreamHelper=new Ge(e).createStreamHelper()}coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(e){if(e.effects?.status.status!=="success")throw new Zo(e.effects?.status.status,e.effects?.status.error);return e.objectChanges.filter(t=>t.type==="created"&&t.objectType.startsWith(`${this.globals.envConfig.contract.contractId}::stream::Stream`)).map(t=>t.objectId)}calculateCreateStreamFees(e){return this.createStreamHelper.calculateCreateStreamFees(e)}feeParams(){return this.createStreamHelper.feeParams()}calculateStreamAmount(e){if(e.steps===0n)throw new H("Invalid stream steps: 0");let t=e.cliff?e.cliff:{numerator:0n,denominator:100n},n=e.totalAmount*t.numerator/t.denominator,o=(e.totalAmount-n)/e.steps,s={realTotalAmount:o*e.steps+n,cliffAmount:n,amountPerStep:o};return this.validateStreamAmount(s,e.totalAmount),s}calculateTimelineByInterval(e){if(e.steps===0n)throw new H("Invalid stream steps: 0");let t=e.timeStart.plus(e.interval.toMillis()*Number(e.steps)),n={timeStart:e.timeStart,timeEnd:t,interval:e.interval,steps:e.steps};return this.validateTimeline(n),n}calculateTimelineByTotalDuration(e){if(e.steps===0n)throw new H("Invalid stream steps: 0");let t=BigInt(e.total.toMillis())/e.steps,n=e.timeStart.plus(cs.Duration.fromMillis(Number(t*e.steps))),o={timeStart:e.timeStart,timeEnd:n,interval:cs.Duration.fromMillis(Number(t)),steps:e.steps};return this.validateTimeline(o),o}async getBalance(e,t){let n=await this.globals.suiClient.getBalance({owner:e,coinType:t}),o=await this.getCoinMeta(t);return{...n,coinType:(0,Qe.normalizeStructTag)(n.coinType),coinMeta:o}}async getAllBalance(e){let t=await this.globals.suiClient.getAllBalances({owner:e}),n=await Promise.all(t.map(o=>this.getCoinMeta(o.coinType)));return t.map((o,i)=>({...o,coinType:(0,Qe.normalizeStructTag)(o.coinType),coinMeta:n[i]}))}async getCoinMeta(e){return this.coinMetaHelper.getCoinMeta(e)}async simulateTransactionBlock(e){return this.globals.suiClient.devInspectTransactionBlock({transactionBlock:e,sender:await this.globals.wallet.address()})}validateStreamAmount(e,t){if(e.amountPerStep===0n)throw new H("Stream amount too small","totalAmount",t);if(e.cliffAmount>e.realTotalAmount)throw new H("Invalid cliff settings")}validateTimeline(e){if(e.interval.toMillis()<$d)throw new H("Interval shall be at least 1 second","interval",e.interval)}},ls=class{constructor(e){this.suiClient=e;this.coinMetaReg=new Map}coinMetaReg;async getCoinMeta(e){let t=(0,Qe.normalizeStructTag)(e||Qe.SUI_TYPE_ARG);if(this.coinMetaReg.has(t))return this.coinMetaReg.get(t);let n=await this.queryCoinMeta(t);return n&&this.coinMetaReg.set(t,n),n}async queryCoinMeta(e){return await this.suiClient.getCoinMetadata({coinType:e})||void 0}};var be=require("@mysten/sui.js/utils"),gs=require("luxon");var Dn=require("@mysten/sui.js/transactions"),vn=require("@mysten/sui.js/utils"),hu=require("luxon");var ea=class extends L{constructor(){super(7,"Connected wallet is not creator")}};var xn=class extends L{constructor(){super(8,"Connected wallet is not recipient")}};var kn=class extends L{constructor(e,t){super(6,e,{context:t})}};var At=class extends L{constructor(e,t={}){super(0,e,t)}};var na=class extends L{constructor(e){super(5,"Stream not found",{context:{streamId:e}})}};var aa=require("luxon"),fu=(1n<<64n)-1n,oa=1e3;function us(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/oa);return aa.DateTime.fromMillis(t*oa)}function ms(a){let e;typeof a=="number"?e=a:typeof a=="bigint"?e=Number(a):e=a.toMillis();let t=Math.round(e/oa);return aa.Duration.fromMillis(t*oa)}var ye=class a{constructor(e,t,n){this.globals=e;this.streamId=t;this.rawData=n;this.streamContract=new te(e.envConfig.contract,e)}streamContract;type="Stream";static async new(e,t){let n=await a.fetchStreamData(e,t);return new a(e,t,n)}static fromObjectData(e,t,n){let o=a.parseRawStreamData(t,n);return new a(e,t,o)}get info(){return{name:this.name,creator:this.creator,coinType:this.coinType,totalAmount:this.totalAmount,start:this.timeStart,end:this.timeEnd,cancelable:this.cancelable,cliffAmount:this.cliff,duration:this.duration,interval:this.interval,steps:this.totalSteps,nextReleaseDate:this.nextReleaseDate,nextReleaseAmount:this.nextReleaseAmount,groupId:this.groupId,streamId:this.streamId,recipient:this.recipient,progress:this.progress,autoClaim:this.autoClaim}}get groupCommonInfo(){return{name:this.name,groupId:this.groupId,creator:this.creator,start:this.timeStart,interval:this.interval,steps:this.totalSteps,cancelable:this.cancelable}}async refresh(){this.rawData=await a.fetchStreamData(this.globals,this.streamId)}refreshWithData(e){if(e.data?.objectId!==this.streamId)throw new At("Object Id does not align");this.rawData=a.parseRawStreamData(this.streamId,e)}async historyEvents(e){return this.globals.backend.getStreamHistory({streamId:this.streamId,pagination:e})}async cancel(){if(await this.globals.walletAddress()!==this.creator)throw new ea;let e=new Dn.TransactionBlock;return this.streamContract.cancelStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new xn;let e=new Dn.TransactionBlock;return this.streamContract.claimStream(e,{streamId:this.streamId,coinType:this.coinType}),e}async setAutoClaim(e){if(await this.globals.walletAddress()!==this.recipient)throw new xn;let t=new Dn.TransactionBlock;return this.streamContract.setAutoClaim(t,{streamId:this.streamId,coinType:this.coinType,enabled:e}),t}async claimByProxy(){let e=new Dn.TransactionBlock;return this.streamContract.claimStreamByProxy(e,{streamId:this.streamId,coinType:this.coinType}),e}get wallet(){return this.globals.wallet}get client(){return this.globals.suiClient}get coinType(){return(0,vn.normalizeStructTag)(this.rawData.coinType)}get progress(){return{status:this.streamStatus,total:this.totalAmount,streamed:this.streamedAmount,claimed:this.claimedAmount,claimable:this.claimable,canceled:this.canceledAmount}}get balance(){return this.rawData.balance}get autoClaim(){return this.rawData.autoClaim}get amountPerEpoch(){return this.rawData.config.amountPerEpoch}get cancelable(){return this.rawData.config.cancelable}get cliff(){return this.rawData.config.cliff}get creator(){return this.rawData.config.creator}get interval(){return ms(this.rawData.config.epochInterval)}get groupId(){let{metadata:e}=this.rawData.config;return Tn(e).groupId}get name(){let{metadata:e}=this.rawData.config;return Tn(e).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return us(this.rawData.config.timeStart)}get duration(){let e=this.rawData.config,t=e.epochInterval*e.totalEpoch;return ms(t)}get timeEnd(){return this.timeStart.plus(this.duration)}get totalSteps(){return this.rawData.config.totalEpoch}get claimable(){return this.streamedAmount-this.claimedAmount}get nextReleaseDate(){return this.currentEpoch===-1n?this.timeStart:this.currentEpoch>=this.totalSteps||this.isCanceled?null:us((this.currentEpoch+1n)*this.rawData.config.epochInterval+this.rawData.config.timeStart)}get nextReleaseAmount(){return this.currentEpoch===-1n?this.cliff:this.currentEpoch>=this.totalSteps||this.isCanceled?null:this.amountPerEpoch}get streamStatus(){let e=this.rawData.status.status;return e===16?"CANCELED":e===17?"SETTLED":e===1?"COMPLETED":this.currentEpoch>=this.totalSteps?"STREAMED":"STREAMING"}get streamedAmount(){return this.currentEpoch===-1n?0n:this.isCanceled?this.rawData.status.epochCanceled*this.amountPerEpoch+this.cliff:this.currentEpoch*this.amountPerEpoch+this.cliff}get claimedAmount(){return this.rawData.status.epochClaimed===fu?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let e=hu.DateTime.now().toMillis(),t=this.timeStart.toMillis();if(e<t)return-1n;let n=Math.floor((e-t)/Number(this.rawData.config.epochInterval));return BigInt(n)>Number(this.rawData.config.totalEpoch)?this.rawData.config.totalEpoch:BigInt(n)}get totalAmount(){let e=this.rawData.config;return e.amountPerEpoch*e.totalEpoch+e.cliff}get isCanceled(){let e=this.rawData.status.status;return e===16||e===17}get canceledAmount(){return this.isCanceled?this.totalAmount-this.streamedAmount:0n}static async fetchStreamData(e,t){let n=await e.suiClient.getObject({id:t,options:{showContent:!0,showType:!0}});return a.parseRawStreamData(t,n)}static parseRawStreamData(e,t){if(t.error)throw t.error.code==="notExists"?new na(e):new kn(`get stream data: ${t.error.code}`,{streamId:e,...t.error});let n=t.data.content;if(n.dataType!=="moveObject")throw new kn("Unexpected object type",{gotType:n.dataType});let{typeParams:o}=(0,vn.parseStructTag)(n.type),i=(0,vn.normalizeStructTag)(o[0]),s=n.fields,l=s.config.fields,d=s.status.fields;return{coinType:i,autoClaim:s.auto_claim,balance:BigInt(s.balance.fields.balance),config:{amountPerEpoch:BigInt(l.amount_per_epoch),cancelable:l.cancelable,cliff:BigInt(l.cliff),creator:l.creator,epochInterval:BigInt(l.epoch_interval),metadata:l.metadata,recipient:l.recipient,timeStart:BigInt(l.time_start),totalEpoch:BigInt(l.total_epoch)},status:{status:d.status,epochCanceled:BigInt(d.epoch_canceled),epochClaimed:BigInt(d.epoch_claimed)}}}};var Je=class extends L{constructor(e,t){super(9,`Invalid stream group: ${e}`,{context:t})}};async function ds(a){let e=[];for(;await a.hasNext();){let t=await a.next();e.push(t)}return e&&Array.isArray(e[0])?e.flat(1):e}var ps=class{constructor(e){this.requester=e;this.curPage=void 0,this.init=!0}curPage;init;async hasNext(){if(this.init)return this.curPage||(this.curPage=await this.requester.doNextRequest()),!!this.curPage.data?.length||this.curPage.hasNext;if(!this.curPage)throw new Error("invalid implementation of iterator");return this.curPage.hasNext}async next(){return this.init?(this.init=!1,this.curPage||(this.curPage=await this.requester.doNextRequest()),this.curPage.data):(this.curPage=await this.requester.doNextRequest(),this.curPage.data)}},Ye=class{constructor(e){this.requester=e;this.pager=new ps(e),this.curData=[],this.cursor=0}cursor;pager;curData;async hasNext(){return this.cursor<this.curData.length-1?!0:this.pager.hasNext()}async next(){for(this.cursor+=1;this.cursor>=this.curData.length;)if(await this.pager.hasNext())this.curData=await this.pager.next(),this.cursor=0;else throw new Error("not more data");return this.curData[this.cursor]}};var Hd=25;async function hs(a,e,t){let n=new An(e),o=new Mn(a,n,t);return await ds(o)}var An=class{constructor(e){this.ids=e;this.cursor=-1}cursor;async hasNext(){return this.cursor<this.ids.length-1}async next(){if(this.cursor+=1,this.cursor>=this.ids.length)throw new Error("invalid iterator implementation");return this.ids[this.cursor]}},Mn=class extends Ye{constructor(t,n,o){super(new fs(t,n,o));this.suiClient=t;this.idIter=n;this.options=o}},fs=class{constructor(e,t,n){this.suiClient=e;this.stringIter=t;this.options=n;this.filter=n?.filter,this.pageSize=n?.pageSize||Hd,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}filter;pageSize;objectOptions;async doNextRequest(){let e=[];for(;e.length<this.pageSize&&await this.stringIter.hasNext();){let i=await this.stringIter.next();i&&e.push(i)}let t=await this.suiClient.multiGetObjects({ids:e,options:this.objectOptions}),n;if(this.filter){let{filter:o}=this;n=t.filter(i=>o?.(i))}else n=t;return{data:n,hasNext:await this.stringIter.hasNext()}}};var ia=class a{constructor(e,t){this.globals=e;this.streams=t;if(t.length===0)throw new Je("stream size 0");let n=t.map(i=>i.groupId);if(new Set(n).size!==1)throw new H("Stream does not have same group ID")}type="StreamGroup";static async new(e,t){let n=await hs(e.suiClient,t);return n.forEach(o=>{if(!o)throw new At("stream group object data undefined")}),a.newFromObjectResponse(e,t,n)}static async newFromObjectResponse(e,t,n){let o=await a.parseGroupStreams(e,t,n);return new a(e,o)}static checkStreamGroup(e){let t=e.map(i=>i.groupCommonInfo),n=t[0],o=!0;return t.forEach(i=>{Xd(n,i)||(o=!1)}),o}async refresh(){let e=await hs(this.globals.suiClient,this.streams.map(t=>t.streamId));this.streams.forEach((t,n)=>{t.refreshWithData(e[n])})}get groupId(){return this.streams[0].groupId}get creator(){return this.streams[0].creator}get info(){return{groupId:this.groupId,streamIds:this.streams.map(e=>e.streamId),progress:this.progress,name:this.streams[0].name,creator:this.creator,coinType:this.streams[0].coinType,totalAmount:this.streams.reduce((e,t)=>e+t.totalAmount,0n),start:this.streams[0].timeStart,end:this.streams[0].timeEnd,cancelable:this.streams[0].cancelable,cliffAmount:this.streams.reduce((e,t)=>e+t.cliff,0n),duration:this.streams[0].duration,interval:this.streams[0].interval,steps:this.streams[0].totalSteps,nextReleaseAmount:this.streams.reduce((e,t)=>t.nextReleaseAmount===null?e:e+t.nextReleaseAmount,0n),nextReleaseDate:this.streams[0].nextReleaseDate}}get progress(){return{total:this.streams.reduce((e,t)=>e+t.totalAmount,0n),streamed:this.streams.reduce((e,t)=>e+t.streamedAmount,0n),claimed:this.streams.reduce((e,t)=>e+t.claimedAmount,0n),claimable:this.streams.reduce((e,t)=>e+t.claimable,0n),canceled:this.streams.reduce((e,t)=>e+t.canceledAmount,0n)}}async historyEvents(e){return this.globals.backend.getStreamHistory({groupId:this.groupId,pagination:e})}static async parseGroupStreams(e,t,n){let o=n.map((i,s)=>ye.fromObjectData(e,t[s],i)).filter(i=>!!i);if(new Set(o.map(i=>i.groupId)).size!==1)throw new Je("Not same group ID");if(!this.checkStreamGroup(o))throw new Je("Not same stream settings");return o}};function Xd(a,e){return a.name===e.name&&a.groupId===e.groupId&&a.creator===e.creator&&a.start.toMillis()===e.start.toMillis()&&a.interval.toMillis()===e.interval.toMillis()&&a.steps===e.steps&&a.cancelable===e.cancelable}var On=class a{constructor(e,t){this.it=e;this.pageSize=t}static async newIncoming(e){let t=await ra.newIncoming(e);return new a(t,e.pageSize)}static async newOutgoing(e){let t=await ra.newOutgoing(e);return new a(t,e.pageSize)}async hasNext(){return this.it.hasNext()}async next(){let e=[];for(;e.length<this.pageSize&&await this.it.hasNext();)e.push(await this.it.next());return e}},ra=class a{constructor(e){this.requester=e}cachedNext;static async newIncoming(e){let t=await sa.newIncomingQuery(e);return new a(t)}static async newOutgoing(e){let t=await sa.newOutgoingQuery(e);return new a(t)}async hasNext(){return this.cachedNext===void 0&&(this.cachedNext=await this.requester.doNextRequest()),this.cachedNext!==null}async next(){if(this.cachedNext===void 0){let t=await this.requester.doNextRequest();if(t===null)throw new At("No more results");return t}let e=this.cachedNext;if(this.cachedNext=void 0,e===null)throw new At("No more results");return e}},sa=class a{constructor(e,t,n,o){this.globals=e;this.recipient=t;this.groupRefs=n;this.query=o;this.current=0;let i=new An(n.flat().map(s=>s.streamId));this.objectIter=new Mn(e.suiClient,i)}current=0;objectIter;static async newIncomingQuery(e){let t=Yd(e.query),n=await e.globals.walletAddress(),i=(await e.globals.backend.getIncomingStreams(n,t)).filter(l=>(0,be.normalizeSuiAddress)(l.recipient)===(0,be.normalizeSuiAddress)(n)),s=gu(i);return new a(e.globals,n,s,e.query)}static async newOutgoingQuery(e){let t=Zd(e.query),n=await e.globals.walletAddress(),o=await e.globals.backend.getOutgoingStreams(n,t),i=gu(o);return new a(e.globals,n,i,e.query)}async doNextRequest(){if(this.current>=this.groupRefs.length)return null;let e=this.groupRefs[this.current];if(e.length===1){let t=await Qd(this.globals,e[0].streamId,this.objectIter);return this.current++,yu(t,this.query)?t:this.doNextRequest()}if(e.length>1){let t=await Jd(this.globals,e.map(n=>n.streamId),this.objectIter);return this.current++,Gd(t,this.query)?t:this.doNextRequest()}throw new At("Stream group with no stream")}};function gu(a){let e=new Map;return a.forEach(t=>{let n=e.get(t.groupId);n?(n.push(t),e.set(t.groupId,n)):e.set(t.groupId,[t])}),Array.from(e.values()).sort((t,n)=>gs.DateTime.fromISO(n[0].createDate).toMillis()-gs.DateTime.fromISO(t[0].createDate).toMillis())}function yu(a,e){if(e===void 0)return!0;let t=zd(a,e.status);if(e&&"claimable"in e&&e.claimable!==void 0){let n=e.claimable?a.progress.claimable!==0n:a.progress.claimable===0n;return t&&n}return t}function zd(a,e){return e===void 0?!0:Array.isArray(e)?e.includes(a.progress.status):a.progress.status===e}function Gd(a,e){if(!e)return!0;let t=!1;return a.streams.forEach(n=>{yu(n,e)&&(t=!0)}),t}async function Qd(a,e,t){let n=await bu(t,e);return ye.fromObjectData(a,e,n)}async function Jd(a,e,t){let n=[];for(;n.length<e.length;){let o=await bu(t,e[n.length]);n.push(o)}return ia.newFromObjectResponse(a,e,n)}async function bu(a,e){if(!await a.hasNext())throw new At("object iterator has been consumed");let t=await a.next();if(!t||t.error||t.data===void 0||t.data===null)throw new At("object iterator undefined response",{cause:t?.error});if(t?.data?.objectId!==e)throw new At("stream id not aligned");return t}function Yd(a){return{status:ys(a?.status),coinType:Su(a?.coinType),sender:Tu(a?.sender)}}function Zd(a){return{status:ys(a?.status),coinType:Su(a?.coinType),recipient:Tu(a?.recipient)}}function ys(a){return a===void 0||a.length===0?"all":Array.isArray(a)?a.reduce((e,t)=>{let n=ys(t);return!e||e===n?n:"all"},void 0):tf(a)}function tf(a){switch(a){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new H("Unknown stream filtered status")}}function Su(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>(0,be.normalizeStructTag)(e)):void 0:(0,be.normalizeStructTag)(a)}function Tu(a){if(a)return Array.isArray(a)?a.length!==0?a.map(e=>(0,be.normalizeSuiAddress)(e)):void 0:(0,be.normalizeSuiAddress)(a)}var ca=class extends L{constructor(t,n,o){super(4,`Not enough balance: ${t}`,{context:{coinType:t,requestAmount:n,gotAmount:o}});this.coinType=t;this.requestAmount=n;this.gotAmount=o}};var ef=25;async function Iu(a,e,t,n="0x2::sui::SUI",o=ef){let i=new bs(a,e,n,o),s=BigInt(0),l=[];for(;await i.hasNext()&&s<t;){let d=await i.next();d&&(l.push(d),s+=BigInt(d.balance))}if(s<t)throw new ca(n,t,s);return l}var bs=class extends Ye{constructor(t,n,o,i){super(new Ss(t,n,o,i));this.suiClient=t;this.owner=n;this.coinType=o;this.reqPageSize=i}},Ss=class{constructor(e,t,n,o){this.suiClient=e;this.owner=t;this.coinType=n;this.reqPageSize=o;if(o<=0)throw new At("Invalid reqPageSize")}nextCursor;async doNextRequest(){let e=await this.suiClient.getCoins({owner:this.owner,coinType:this.coinType,cursor:this.nextCursor,limit:this.reqPageSize});return this.nextCursor=e.nextCursor,{data:e.data,hasNext:e.hasNextPage}}};var Ts=class{constructor(e){this.msafe=e}get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(e){return this.msafe.requestCoins(e)}},la=class{constructor(e){this.account=e}async address(){return this.account.address}},Is=class{constructor(e,t){this.singleWallet=e;this.suiClient=t}get type(){return"single"}async address(){return this.singleWallet.address()}async requestCoins(e){return Promise.all(e.map(t=>this.requestCoin(t)))}async requestCoin(e){if(Jo(e.coinType,Ee.SUI_TYPE_ARG))return{primaryCoin:Yo};if(e.amount<=0)throw new H("Invalid coin request","coinAmount",e.amount);let t=await Iu(this.suiClient,await this.address(),e.amount,e.coinType);if(t.length===0)throw new At("no coins available");return{primaryCoin:t[0].coinObjectId,mergedCoins:t.slice(1).map(n=>n.coinObjectId)}}},ua=class{globals;helper;constructor(e,t){this.globals=He.new(e,t),this.helper=new ta(this.globals)}connectSingleWallet(e){let t=new Is(e,this.globals.suiClient);this.globals.connectWallet(t)}connectMSafeAccount(e){let t=new Ts(e);this.globals.connectWallet(t)}async createStream(e){return this.builder().createStreams(e)}async getStream(e){return ye.new(this.globals,e)}async getIncomingStreams(e,t=10){return On.newIncoming({globals:this.globals,query:e,pageSize:t})}async getOutgoingStreams(e,t=10){return On.newOutgoing({globals:this.globals,query:e,pageSize:t})}async getCoinTypesForStreamFilter(){let e=await this.wallet.address();return(await this.globals.backend.getAllCoinTypes(e)).map(n=>(0,Ee.normalizeStructTag)(n))}async getRecipientsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllRecipients(t,e)).map(o=>(0,Ee.normalizeSuiAddress)(o))}async getCreatorsForStreamFilter(e){let t=await this.wallet.address();return(await this.globals.backend.getAllSenders(t,e)).map(o=>(0,Ee.normalizeSuiAddress)(o))}get wallet(){return this.globals.wallet}builder(){return new Ge(this.globals)}};var Kt=class extends _{application="mpay";getClient(e,t){let n=new ua(e==="sui:mainnet"?"prod":"dev");return n.connectSingleWallet(new la(t)),n}};var Pn=class extends Kt{constructor(t){super(t);this.data=t}txType=wu.TransactionType.Stream;txSubType="Cancel";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).cancel()}};var Cu=require("@msafe/sui3-utils");var Rn=class extends Kt{constructor(t){super(t);this.data=t}txType=Cu.TransactionType.Stream;txSubType="ClaimByProxy";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).claimByProxy()}};var xu=require("@msafe/sui3-utils");var Bn=class extends Kt{constructor(t){super(t);this.data=t}txType=xu.TransactionType.Stream;txSubType="Claim";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).claim()}};var ku=require("@msafe/sui3-utils");var En=class extends Kt{constructor(t){super(t);this.data=t}txType=ku.TransactionType.Stream;txSubType="CreateStream";async build(t){let{network:n,account:o}=t;return this.getClient(n,o).createStream(this.data)}};var ws=require("@mysten/sui.js/bcs"),Se=require("@mysten/sui.js/utils"),Ze=class a{constructor(e,t){this.moveCall=e;this.txb=t}decodeSharedObjectId(e){let t=this.getInputParam(e);return a.getSharedObjectId(t)}decodeOwnedObjectId(e){let t=this.getInputParam(e);return a.getOwnedObjectId(t)}decodeInputU64(e){let t=this.decodePureArg(e,"u64");return BigInt(t)}decodeInputAddress(e){let t=this.decodePureArg(e,"address");return(0,Se.normalizeSuiAddress)(t)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,t){let n=this.getInputParam(e);return a.getPureInputValue(n,t)}getInputParam(e){let t=this.moveCall.arguments[e];if(t.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[t.index]}static getPureInputValue(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return ws.bcs.de(t,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Se.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Se.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Se.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Se.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return ws.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,Se.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var ma=class{constructor(e,t){this.globals=e;this.txb=t}decode(){let e=this.decodeCreateStreamInfo(),t=this.createStreamHelper().calculateCreateStreamFees(e);return{type:"CreateStream",info:e,fees:t}}decodeCreateStreamInfo(){let t=this.createStreamTransactions().map(n=>this.getCreationInfoFromMoveCall(n));return this.aggregateGroupStreamInfo(t)}createStreamTransactions(){let e=this.transactions.filter(t=>t.kind==="MoveCall"&&ge(t.target,this.contract.createStreamTarget));if(e.length===0)throw new At("No create stream transactions");return e.map(t=>new Ze(t,this.txb))}getCreationInfoFromMoveCall(e){let t=e.decodeInputString(4),{name:n,groupId:o}=Tn(t),i=e.decodeInputAddress(5),s=e.decodeInputU64(6),l=e.decodeInputU64(7),d=e.decodeInputU64(8),b=e.decodeInputU64(9),T=e.decodeInputU64(10),C=e.decodeInputBool(11),x=e.typeArg(0);return{name:n,groupId:o,recipient:i,timeStart:s,cliff:l,epochInterval:d,totalEpoch:b,amountPerEpoch:T,cancelable:C,coinType:x}}aggregateGroupStreamInfo(e){if(new Set(e.map(o=>JSON.stringify({name:o.name,groupId:o.groupId,timeStart:String(o.timeStart),epochInterval:String(o.epochInterval),totalEpoch:String(o.totalEpoch),cancelable:o.cancelable,coinType:o.coinType}))).size!==1)throw new H("Stream group not have common info");let n=e.map(o=>({address:o.recipient,amountPerStep:o.amountPerEpoch,cliffAmount:o.cliff}));return{name:e[0].name,coinType:e[0].coinType,recipients:n,interval:e[0].epochInterval,steps:e[0].totalEpoch,startTimeMs:e[0].timeStart,cancelable:e[0].cancelable}}mergeCoinTransactions(){return this.transactions.filter(e=>e.kind==="MergeCoins")}get transactions(){return this.txb.blockData.transactions}get contract(){return new te(this.globals.envConfig.contract,this.globals)}get feeContract(){return new ze(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new Be(this.globals,this.feeContract,this.contract)}getInputArg(e){if(e.kind!=="Input")throw new Error("not input type");return"value"in e?e:this.txb.blockData.inputs[e.index]}};var pa=class{constructor(e,t){this.globals=e;this.txb=t;this.contract=new te(e.envConfig.contract,e)}contract;decode(){if(this.isCreateStreamTransaction())return this.decodeCreateStreamTransaction();if(this.isClaimByProxyTransaction())return this.decodeClaimByProxyTransaction();if(this.isSetAutoClaimTransaction())return this.decodeSetAutoClaimTransaction();if(this.isCancelStreamTransaction())return this.decodeCancelStreamTransaction();if(this.isClaimStreamTransaction())return this.decodeClaimTransaction();throw new Error("Unknown stream transaction type")}get transactions(){return this.txb.blockData.transactions}isCreateStreamTransaction(){return this.transactions.findIndex(t=>t.kind==="MoveCall"&&ge(t.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ge(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ge(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ge(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&ge(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new ma(this.globals,this.txb).decode()}decodeSetAutoClaimTransaction(){let e=this.helper.decodeSharedObjectId(0),t=this.helper.decodeInputBool(1);return{type:"SetAutoClaim",streamId:e,enabled:t}}decodeClaimTransaction(){let e=this.helper.decodeSharedObjectId(0);return{type:"Claim",streamId:e}}decodeClaimByProxyTransaction(){let e=this.helper.decodeSharedObjectId(0);return{type:"ClaimByProxy",streamId:e}}decodeCancelStreamTransaction(){let e=this.helper.decodeSharedObjectId(0);return{type:"Cancel",streamId:e}}get helper(){let e=this.transactions[0];return new Ze(e,this.txb)}};var Du=require("@msafe/sui3-utils");var Wn=class extends Kt{constructor(t){super(t);this.data=t}txType=Du.TransactionType.Stream;txSubType="SetAutoClaim";async build(t){let{network:n,account:o}=t;return(await this.getClient(n,o).getStream(this.data.streamId)).setAutoClaim(this.data.enabled)}};var da=class{application="mpay";supportSDK="@mysten/sui.js";async deserialize(e){let{network:t,transactionBlock:n}=e,o=He.new(t==="sui:mainnet"?"prod":"dev"),s=new pa(o,n).decode(),l;switch(s.type){case"CreateStream":l=new En(s.info);break;case"SetAutoClaim":l=new Wn({streamId:s.streamId,enabled:s.enabled});break;case"Claim":l=new Bn({streamId:s.streamId});break;case"ClaimByProxy":l=new Rn({streamId:s.streamId});break;case"Cancel":l=new Pn({streamId:s.streamId});break;default:throw new Error(`Unknown transaction type: ${s}`)}return{txType:l.txType,txSubType:l.txSubType,intentionData:l.data}}async build(e){let{intentionData:t}=e,n;switch(e.txSubType){case"CreateStream":n=new En(t);break;case"Claim":n=new Bn(t);break;case"ClaimByProxy":n=new Rn(t);break;case"SetAutoClaim":n=new Wn(t);break;case"Cancel":n=new Pn(t);break;default:throw new Error("not implemented")}return n.build({...e})}};var Nn=require("@msafe/sui3-utils");var vu=require("@msafe/sui3-utils");var fa=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t;return(0,vu.buildCoinTransferTxb)(n,this.data,o.address)}static fromData(t){return new a(t)}};var Au=require("@msafe/sui3-utils");var ha=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t;return(0,Au.buildObjectTransferTxb)(n,this.data,o.address)}static fromData(t){return new a(t)}};var ga=class{application="msafe-core";supportSDK="@mysten/sui.js";constructor(){this.application=Nn.TransactionDefaultApplication}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(e){let{suiClient:t,account:n}=e,o;switch(e.txSubType){case Nn.TransactionSubTypes.assets.coin.send:o=fa.fromData(e.intentionData);break;case Nn.TransactionSubTypes.assets.object.send:o=ha.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var Uu=require("@msafe/sui3-utils");var Mu=!1,_n={ProtocolPackage:"0x81c408448d0d57b3e371ea94de1d40bf852784d3e225de1e74acab3e8395c18f",StorageId:"0xbb4e2f4b6205c2e2a2db47aeb4f830796ec7c005f88537ee775986639bc442fe",Incentive:"0xaaf735bf83ff564e1b219a0d644de894ef5bdc4b2250b126b2a46dd002331821",IncentiveV2:"0xf87a8acb8b81d14307894d12595541a73f19933f88e1326d5be349c7a6f7559c",gasBudget:5e7,PriceOracle:"0x1568865ed9a0b5ec414220e8f79b3d04c77acc82358f6e5ae4635687392ffbef",ReserveParentId:"0xe6d4c6610b86ce7735ea754596d71d72d10c7980b5052fc3c8cdf8d09fea9b4b",pool:{sui:{name:"SUI",assetId:0,poolId:"0x96df0fce3c471489f4debaaa762cf960b3d97820bd1f3f025ff8190730e958c5",fondPoolId:"0xf975bc2d4cca10e3ace8887e20afd77b46c383b4465eac694c4688344955dea4",type:"0x2::sui::SUI",coinType:"sui",reserveObjectId:"0xab644b5fd11aa11e930d1c7bc903ef609a9feaf9ffe1b23532ad8441854fbfaf",borrowBalanceParentId:"0xe7ff0daa9d090727210abe6a8b6c0c5cd483f3692a10610386e4dc9c57871ba7",supplyBalanceParentId:"0x589c83af4b035a3bc64c40d9011397b539b97ea47edf7be8f33d643606bf96f8"},wusdc:{name:"wUSDC",assetId:1,coinType:"wusdc",poolId:"0xa02a98f9c88db51c6f5efaaf2261c81f34dd56d86073387e0ef1805ca22e39c8",type:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",reserveObjectId:"0xeb3903f7748ace73429bd52a70fff278aac1725d3b58afa781f25ce3450ac203",borrowBalanceParentId:"0x8a3aaa817a811131c624658f6e77cba04ab5829293d2c49c1a9cce8ac9c8dec4",supplyBalanceParentId:"0x8d0a4467806458052d577c8cd2be6031e972f2b8f5f77fce98aa12cd85330da9"},usdt:{name:"USDT",coinType:"usdt",assetId:2,poolId:"0x0e060c3b5b8de00fb50511b7a45188c8e34b6995c01f69d98ea5a466fe10d103",type:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN",reserveObjectId:"0xb8c5eab02a0202f638958cc79a69a2d30055565caad1684b3c8bbca3bddcb322",borrowBalanceParentId:"0xc14d8292a7d69ae31164bafab7ca8a5bfda11f998540fe976a674ed0673e448f",supplyBalanceParentId:"0x7e2a49ff9d2edd875f82b76a9b21e2a5a098e7130abfd510a203b6ea08ab9257"},weth:{name:"WETH",coinType:"weth",assetId:3,poolId:"0x71b9f6e822c48ce827bceadce82201d6a7559f7b0350ed1daa1dc2ba3ac41b56",type:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN",reserveObjectId:"0xafecf4b57899d377cc8c9de75854c68925d9f512d0c47150ca52a0d3a442b735",borrowBalanceParentId:"0x7568d06a1b6ffc416a36c82791e3daf0e621cf19d4a2724fc6f74842661b6323",supplyBalanceParentId:"0xa668905b1ad445a3159b4d29b1181c4a62d864861b463dd9106cc0d97ffe8f7f"},cetus:{name:"CETUS",coinType:"cetus",assetId:4,poolId:"0x3c376f857ec4247b8ee456c1db19e9c74e0154d4876915e54221b5052d5b1e2e",type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS",reserveObjectId:"0x66a807c06212537fe46aa6719a00e4fa1e85a932d0b53ce7c4b1041983645133",borrowBalanceParentId:"0x4c3da45ffff6432b4592a39cdb3ce12f4a28034cbcb804bb071facc81fdd923d",supplyBalanceParentId:"0x6adc72faf2a9a15a583c9fb04f457c6a5f0b456bc9b4832413a131dfd4faddae"},voloSui:{name:"VoloSui",coinType:"voloSui",assetId:5,poolId:"0x9790c2c272e15b6bf9b341eb531ef16bcc8ed2b20dfda25d060bf47f5dd88d01",fondPoolId:"0xe2b5ada45273676e0da8ae10f8fe079a7cec3d0f59187d3d20b1549c275b07ea",type:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",reserveObjectId:"0xd4fd7e094af9819b06ea3136c13a6ae8da184016b78cf19773ac26d2095793e2",borrowBalanceParentId:"0x8fa5eccbca2c4ba9aae3b87fd44aa75aa5f5b41ea2d9be4d5321379384974984",supplyBalanceParentId:"0xe6457d247b6661b1cac123351998f88f3e724ff6e9ea542127b5dcb3176b3841"},haSui:{name:"HaedalSui",coinType:"haSui",assetId:6,poolId:"0x6fd9cb6ebd76bc80340a9443d72ea0ae282ee20e2fd7544f6ffcd2c070d9557a",fondPoolId:"0xa20e18085ce04be8aa722fbe85423f1ad6b1ae3b1be81ffac00a30f1d6d6ab51",type:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",reserveObjectId:"0x0c9f7a6ca561dc566bd75744bcc71a6af1dc3caf7bd32c099cd640bb5f3bb0e3",borrowBalanceParentId:"0x01f36898e020be6c3423e5c95d9f348868813cd4d0be39b0c8df9d8de4722b00",supplyBalanceParentId:"0x278b8e3d09c3548c60c51ed2f8eed281876ea58c392f71b7ff650cc9286d095b"},navx:{name:"NAVX",coinType:"navx",assetId:7,poolId:"0xc0e02e7a245e855dd365422faf76f87d9f5b2148a26d48dda6e8253c3fe9fa60",fondPoolId:"0x9dae0cf104a193217904f88a48ce2cf0221e8cd9073878edd05101d6b771fa09",type:"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX",reserveObjectId:"0x2e13b2f1f714c0c5fa72264f147ef7632b48ec2501f810c07df3ccb59d6fdc81",borrowBalanceParentId:"0xa5bf13075aa400cbdd4690a617c5f008e1fae0511dcd4f7121f09817df6c8d8b",supplyBalanceParentId:"0x59dedca8dc44e8df50b190f8b5fe673098c1273ac6168c0a4addf3613afcdee5"},wbtc:{name:"WBTC",coinType:"wbtc",assetId:8,poolId:"0xd162cbe40f8829ce71c9b3d3bf3a83859689a79fa220b23d70dc0300b777ae6e",type:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN",reserveObjectId:"0x8b4d81f004e4e9faf4540951a896b6d96e42598a270e6375f598b99742db767e",borrowBalanceParentId:"0x55e1f3c9e6e5cf9fff563bdd61db07a3826458c56ef72c455e049ab3b1b0e99c",supplyBalanceParentId:"0x821e505a0091b089edba94deaa14c2f2230d026bbaa7b85680554441aad447e0"},ausd:{name:"AUSD",coinType:"ausd",assetId:9,poolId:"0xc9208c1e75f990b2c814fa3a45f1bf0e85bb78404cfdb2ae6bb97de58bb30932",type:"0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD",reserveObjectId:"0x918889c6a9d9b93108531d4d59a4ebb9cc4d41689798ffc1d4aed6e1ae816ec0",borrowBalanceParentId:"0x551300b9441c9a3a16ca1d7972c1dbb4715e15004ccd5f001b2c2eee22fd92c1",supplyBalanceParentId:"0xe151af690355de8be1c0281fbd0d483c099ea51920a57c4bf8c9666fd36808fd"},nusdc:{name:"USDC",assetId:10,coinType:"nusdc",poolId:"0xa3582097b4c57630046c0c49a88bfc6b202a3ec0a9db5597c31765f7563755a8",type:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",reserveObjectId:"0x4c8a2c72a22ae8da803a8519798d312c86e74a9e0d6ec0eec2bfcf7e4b3fef5e",borrowBalanceParentId:"0xb0b0c7470e96cabbb4f1e8d06bef2fbea65f4dbac52afae8635d9286b1ea9a09",supplyBalanceParentId:"0x08b5ce8574ac3bc9327e66ad5decd34d07ee798f724ad01058e8855ac9acb605"},eth:{name:"ETH",assetId:11,coinType:"eth",poolId:"0x78ba01c21d8301be15690d3c30dc9f111871e38cfb0b2dd4b70cc6052fba41bb",type:"0xd0e89b2af5e4910726fbcd8b8dd37bb79b29e5f83f7491bca830e94f7f226d29::eth::ETH",reserveObjectId:"0x376faea6dfbffab9ea808474cb751d91222b6d664f38c0f1d23de442a8edb1ce",borrowBalanceParentId:"0xf0c6ce5cfaee96073876a5fab7426043f3a798b79502c4caeb6d9772cd35af1f",supplyBalanceParentId:"0xc0a0cb43620eb8a84d5a4a50a85650e7fa7ba81e660f9cc2863404fd84591d4b"},usdy:{name:"USDY",assetId:12,coinType:"usdy",poolId:"0x4b6253a9f8cf7f5d31e6d04aed4046b9e325a1681d34e0eff11a8441525d4563",type:"0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY",reserveObjectId:"",borrowBalanceParentId:"",supplyBalanceParentId:""}},borrowFee:.003,borrowFeeAddress:"0x70b9b10704263cf53392849e33b1f5fd16005869b4198ed5524836bad1234ea2"};async function Cs(){if(!Mu)try{let a=await fetch("https://open-api.naviprotocol.io/api/msafe").then(i=>i.json()),{packageId:e,borrowFee:t,borrowFeeAddress:n,pool:o}=a;e&&(_n.ProtocolPackage=e),t&&(_n.borrowFee=t),n&&(_n.borrowFeeAddress=n),o&&(_n.pool=o),Mu=!0}catch(a){console.error(a.message)}}var Xt=_n;var Te=require("@msafe/sui3-utils"),xs=require("@mysten/sui.js/bcs"),Ie=require("@mysten/sui.js/utils");var ya=class{constructor(e){this.txb=e}decode(){if(console.log("txb",this.txb),this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isEntryBorrowTransaction())return this.decodeEntryBorrow();if(this.isEntryBorrowWithFeeTransaction())return this.decodeEntryBorrow();if(this.isEntryMultiDepositTransaction())return this.decodeEntryMultiDeposit();if(this.isEntryDepositTransaction())return this.decodeEntryDeposit();if(this.isEntryRepayTransaction())return this.decodeEntryRepay();if(this.isEntryWithdrawTransaction())return this.decodeEntryWithdraw();if(this.isEntryClaimAndDepositTransaction())return this.decodeEntryClaimAndDeposit();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(e){return this.transactions.find(t=>t.kind==="MoveCall"&&t.target===e)}isClaimRewardTransaction(){return!!this.transactions.find(t=>!!(t.kind==="MoveCall"&&t.target.includes("claim_reward")))}isEntryBorrowTransaction(){return!!this.getMoveCallTransaction(`${Xt.ProtocolPackage}::incentive_v3::entry_borrow`)}isEntryBorrowWithFeeTransaction(){return!!this.getMoveCallTransaction(`${Xt.ProtocolPackage}::incentive_v3::borrow`)}isEntryMultiDepositTransaction(){let e=`${Xt.ProtocolPackage}::incentive_v3::entry_deposit`,t=this.transactions.filter(o=>o.kind==="MoveCall"&&o.target===e);return this.transactions.find(o=>o.kind==="MoveCall"&&o.target.includes("claim_reward"))?!1:t.length>1}isEntryClaimAndDepositTransaction(){let e=`${Xt.ProtocolPackage}::incentive_v3::entry_deposit`,t=this.transactions.filter(o=>o.kind==="MoveCall"&&o.target===e);return!!(this.transactions.find(o=>o.kind==="MoveCall"&&o.target.includes("claim_reward"))&&t.length>0)}isEntryDepositTransaction(){return!!this.getMoveCallTransaction(`${Xt.ProtocolPackage}::incentive_v3::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${Xt.ProtocolPackage}::incentive_v3::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${Xt.ProtocolPackage}::incentive_v3::withdraw`)}findPoolByAssetId(e){let t=Object.values(Xt.pool).find(n=>n.assetId===e);if(!t)throw new Error("Pool not found");return t}decodeEntryClaimAndDeposit(){return{txType:Te.TransactionType.Other,type:"EntryClaimAndDeposit",intentionData:{type:"entry_claim_and_deposit"}}}decodeClaimReward(){return console.log("decode claims"),{txType:Te.TransactionType.Other,type:"ClaimReward",intentionData:{type:"claim_reward"}}}decodeEntryBorrow(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:Te.TransactionType.Other,type:"EntryBorrow",intentionData:{amount:t,assetId:e}}}decodeEntryMultiDeposit(){let e=[],t=`${Xt.ProtocolPackage}::incentive_v3::entry_deposit`;return this.transactions.forEach(n=>{if(n.kind==="MoveCall"&&n.target===t){let o=new ba(n,this.txb),i=o.decodeInputU8(3),s=o.decodeInputU64(5);e.push({assetId:i,amount:s})}}),{txType:Te.TransactionType.Other,type:"EntryMultiDeposit",intentionData:{list:e}}}decodeEntryDeposit(){let e=this.helper.decodeInputU8(3),t=this.helper.decodeInputU64(5);return{txType:Te.TransactionType.Other,type:"EntryDeposit",intentionData:{amount:t,assetId:e}}}decodeEntryRepay(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(6);return{txType:Te.TransactionType.Other,type:"EntryRepay",intentionData:{amount:t,assetId:e}}}decodeEntryWithdraw(){let e=this.helper.decodeInputU8(4),t=this.helper.decodeInputU64(5);return{txType:Te.TransactionType.Other,type:"EntryWithdraw",intentionData:{amount:t,assetId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(Xt.ProtocolPackage));return new ba(e,this.txb)}},ba=class a{constructor(e,t){this.moveCall=e;this.txb=t}decodeSharedObjectId(e){let t=this.getInputParam(e);return a.getSharedObjectId(t)}decodeOwnedObjectId(e){let t=this.getInputParam(e);return a.getOwnedObjectId(t)}decodeInputU64(e){let t=this.decodePureArg(e,"u64");return Number(t)}decodeInputU8(e){let t=this.decodePureArg(e,"u8");return Number(t)}decodeInputAddress(e){let t=this.decodePureArg(e,"address");return(0,Ie.normalizeSuiAddress)(t)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,t){let n=this.getInputParam(e);return a.getPureInputValue(n,t)}getInputParam(e){let t=this.moveCall.arguments[e];if(t.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[t.index]}static getPureInputValue(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return xs.bcs.de(t,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Ie.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Ie.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Ie.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Ie.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return xs.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,Ie.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var Vt=require("navi-sdk");async function tn(a,e,t,n){return await(0,Vt.depositCoin)(a,e,t,n),a}async function Ou(a,e,t,n){let[o]=await(0,Vt.withdrawCoin)(a,e,t);return a.transferObjects([o],a.pure(n)),a}async function Pu(a,e,t,n){let[o]=await(0,Vt.borrowCoin)(a,e,t);return a.transferObjects([o],a.pure.address(n)),a}async function ks(a,e,t,n){return await(0,Vt.repayDebt)(a,e,t,n),a}async function Ru(a,e){return await(0,Vt.claimAllRewardsPTB)(a,e)}async function Bu(a,e){return await(0,Vt.claimAllRewardsResupplyPTB)(a,e)}var Sa=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{type:n}=this.data;return console.log("claim reward",n),await Ru(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};var Ta=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{type:n}=this.data;return console.log("claim reward and supply",n),await Bu(t.suiClient,t.account.address)}static fromData(t){return new a(t)}};var Wu=require("@mysten/sui.js/transactions");var Eu=require("navi-sdk");function ee(a){return Object.values(Eu.pool).find(e=>String(e.assetId)===String(a))}var Ia=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,i=new Wu.TransactionBlock;console.log("build",this.data);let s=ee(n);return await Pu(i,s,o,t.account.address)}static fromData(t){return new a(t)}};var Nu=require("@mysten/sui.js/transactions");async function en(a,e,t){let n=await a.getCoins({owner:e,coinType:t});return console.log("getTokenObjs",e,n),n}var wa=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{assetId:i,amount:s}=this.data,l=new Nu.TransactionBlock;console.log("build",this.data);let d=ee(i);if(i===0){let[x]=l.splitCoins(l.gas,[s]);return await tn(l,d,x,s)}let b=await en(n,o.address,d.type);if(!b.data[0])throw new Error(`Insufficient balance for ${d.name} Token`);let T=b.data[0].coinObjectId;if(b.data.length>=2){let x=1;for(;x<b.data.length;)l.mergeCoins(T,[b.data[x].coinObjectId]),x++}return await tn(l,d,l.object(T),s)}static fromData(t){return new a(t)}};var _u=require("@mysten/sui.js/transactions");var Ca=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{assetId:i,amount:s}=this.data,l=new _u.TransactionBlock;console.log("build",this.data);let d=ee(i);if(i===0){let[C]=l.splitCoins(l.gas,[s]);return ks(l,d,C,s)}let b=await en(n,o.address,d.type);if(!b.data[0])throw new Error(`Insufficient balance for ${d.name} Token`);let T=b.data[0].coinObjectId;if(b.data.length>=2){let C=1;for(;C<b.data.length;)l.mergeCoins(T,[b.data[C].coinObjectId]),C++}return ks(l,d,l.object(T),s)}static fromData(t){return new a(t)}};var Lu=require("@mysten/sui.js/transactions");var xa=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{assetId:n,amount:o}=this.data,i=new Lu.TransactionBlock;console.log("build",this.data);let s=ee(n);return await Ou(i,s,o,t.account.address)}static fromData(t){return new a(t)}};var ju=require("@mysten/sui.js/transactions");var ka=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,{list:i}=this.data,s=new ju.TransactionBlock;console.log("build",this.data);for(let l=0;l<i.length;l++){let{assetId:d,amount:b}=i[l],T=ee(d);if(d===0){let[k]=s.splitCoins(s.gas,[b]);await tn(s,T,k,b);continue}let C=await en(n,o.address,T.type);if(!C.data[0])throw new Error(`Insufficient balance for ${T.name} Token`);let x=C.data[0].coinObjectId;if(C.data.length>=2){let k=1;for(;k<C.data.length;)s.mergeCoins(x,[C.data[k].coinObjectId]),k++}await tn(s,T,s.object(x),b)}return s}static fromData(t){return new a(t)}};var Da=class{application="navi";supportSDK="@mysten/sui.js";async deserialize(e){await Cs();let{transactionBlock:t}=e,o=new ya(t).decode();return{txType:Uu.TransactionType.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(await Cs(),e.txSubType){case"EntryDeposit":o=wa.fromData(e.intentionData);break;case"EntryBorrow":o=Ia.fromData(e.intentionData);break;case"EntryRepay":o=Ca.fromData(e.intentionData);break;case"EntryWithdraw":o=xa.fromData(e.intentionData);break;case"EntryMultiDeposit":o=ka.fromData(e.intentionData);break;case"ClaimReward":o=Sa.fromData(e.intentionData);break;case"EntryClaimAndDeposit":o=Ta.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var Ln=require("@msafe/sui3-utils"),qu=require("@mysten/bcs"),Fu=require("@mysten/sui/transactions"),Ku=Ut(require("sort-keys-recursive")),Vu="msafe-plain-tx",$u=Ln.TransactionSubTypes.others.plain,Ds=class a{constructor(e){this.data=e}application=Vu;txType=Ln.TransactionType.Other;txSubType=$u;serialize(){return JSON.stringify((0,Ku.default)(this.data))}async build(e){return Fu.Transaction.from((0,qu.fromHex)(this.data.content))}static fromData(e){return new a(e)}},va=class{application;supportSDK="@mysten/sui";constructor(){this.application=Vu}async deserialize(e){let{content:t}=e.appContext;return{txType:Ln.TransactionType.Other,txSubType:$u,intentionData:{content:t}}}async build(e){let{suiClient:t,network:n,account:o}=e;return Ds.fromData(e.intentionData).build({suiClient:t,network:n,account:o})}};var Ms=require("@mysten/sui/client"),Hu=require("@mysten/sui/transactions"),Oa=require("@mysten/sui.js/client"),Xu=require("@mysten/sui.js/transactions");var nn=require("@open-rpc/client-js");var af={"-32700":"ParseError","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError"},vs=class extends Error{},Aa=class extends vs{code;type;constructor(e,t){super(e),this.code=t,this.type=af[t]??"ServerError"}};function rf(a){let e=new URL(a);return e.protocol=e.protocol.replace("http","ws"),e.toString()}var sf={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},Ma=class{endpoint;options;#n=0;#a=0;#t=null;#e=null;#i=new Set;#o=new Map;constructor(e,t={}){this.endpoint=e,this.options={...sf,...t},this.endpoint&&this.endpoint.startsWith("http")&&(this.endpoint=rf(this.endpoint))}async makeRequest(e,t){let n=await this.#r();return new Promise((o,i)=>{this.#n+=1,this.#o.set(this.#n,{resolve:o,reject:i,timeout:setTimeout(()=>{this.#o.delete(this.#n),i(new Error(`Request timeout: ${e}`))},this.options.callTimeout)}),n.send(JSON.stringify({jsonrpc:"2.0",id:this.#n,method:e,params:t}))}).then(({error:o,result:i})=>{if(o)throw new Aa(o.message,o.code);return i})}#r(){return this.#e?this.#e:(this.#e=new Promise(e=>{this.#t?.close(),this.#t=new this.options.WebSocketConstructor(this.endpoint),this.#t.addEventListener("open",()=>{this.#a=0,e(this.#t)}),this.#t.addEventListener("close",()=>{this.#a++,this.#a<=this.options.maxReconnects&&setTimeout(()=>{this.#s()},this.options.reconnectTimeout)}),this.#t.addEventListener("message",({data:t})=>{let n;try{n=JSON.parse(t)}catch(o){console.error(new Error(`Failed to parse RPC message: ${t}`,{cause:o}));return}if("id"in n&&n.id!=null&&this.#o.has(n.id)){let{resolve:o,timeout:i}=this.#o.get(n.id);clearTimeout(i),o(n)}else if("params"in n){let{params:o}=n;this.#i.forEach(i=>{i.subscriptionId===o.subscription&&o.subscription===i.subscriptionId&&i.onMessage(o.result)})}})}),this.#e)}async#s(){return this.#t?.close(),this.#e=null,Promise.allSettled([...this.#i].map(e=>e.subscribe(this)))}async subscribe(e){let t=new As(e);return this.#i.add(t),await t.subscribe(this),()=>t.unsubscribe(this)}},As=class{subscriptionId=null;input;subscribed=!1;constructor(e){this.input=e}onMessage(e){this.subscribed&&this.input.onMessage(e)}async unsubscribe(e){let{subscriptionId:t}=this;return this.subscribed=!1,t==null?!1:(this.subscriptionId=null,e.makeRequest(this.input.unsubscribe,[t]))}async subscribe(e){this.subscriptionId=null,this.subscribed=!0;let t=await e.makeRequest(this.input.method,this.input.params);this.subscribed&&(this.subscriptionId=t)}};var we=class{rpcClient;websocketClient;constructor({url:e,websocket:{url:t,...n}={},rpc:o}){let i=new nn.HTTPTransport(o?.url??e,{headers:{"Content-Type":"application/json",...o?.headers}});this.rpcClient=new nn.Client(new nn.RequestManager([i])),this.websocketClient=new Ma(t??e,n)}async request(e){return await this.rpcClient.request(e)}async subscribe(e){let t=await this.websocketClient.subscribe(e);return async()=>!!await t()}};var Pa=class a{apps;constructor(){this.apps=new Map}static fromHelpers(e){let t=new a;for(let n=0;n<e.length;n++){let o=e[n];switch(o.supportSDK){case"@mysten/sui.js":t.addLegacyHelper(o);break;case"@mysten/sui":t.addHelper(o);break;default:throw new Error(`${o.application}: ${o.supportSDK} SDK not supported`)}}return t}addLegacyHelper(e){this.apps.set(e.application,new Ps(e))}addHelper(e){this.apps.set(e.application,new Os(e))}getAppHelper(e){let t=this.apps.get(e);if(!t)throw new Error(`${e} not registered`);return t}},Os=class{constructor(e){this.helper=e}async deserialize(e){let t=new Ms.SuiClient({transport:new we({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=new Oa.SuiClient({transport:new we({url:e.clientUrl,rpc:{url:e.clientUrl}})}),o=await e.transactionBlock.build({client:n}),i=Hu.Transaction.from(o);return this.helper.deserialize({...e,suiClient:t,transaction:i})}async build(e){let t=new Ms.SuiClient({transport:new we({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<1e8)throw new Error("Insufficient gas fee");let o=await this.helper.build({...e,suiClient:t});o.setSender(e.account.address);let i=await o.build({client:t});return Xu.TransactionBlock.from(i)}},Ps=class{constructor(e){this.helper=e}async deserialize(e){let t=new Oa.SuiClient({transport:new we({url:e.clientUrl,rpc:{url:e.clientUrl}})});return this.helper.deserialize({...e,transactionBlock:e.transactionBlock,suiClient:t})}async build(e){let t=new Oa.SuiClient({transport:new we({url:e.clientUrl,rpc:{url:e.clientUrl}})}),n=await t.getBalance({owner:e.account.address});if(Number(n.totalBalance)<1e8)throw new Error("Insufficient gas fee");return this.helper.build({...e,suiClient:t})}};var om=require("@msafe/sui3-utils"),am=require("@mysten/sui/client"),im=require("@scallop-io/sui-scallop-sdk");var Mt=require("@msafe/sui3-utils"),Es=require("@scallop-io/sui-scallop-sdk");var zu=require("@mysten/sui/utils"),Ce=class{constructor(e,t){this.transaction=e;this.scallopClient=t;this.scallopClient=t,this.inputs=e.getData().inputs,this.commands=e.getData().commands,this.movecallsAsSet=new Set(this.commands.filter(this.isMoveCall).map(n=>`${n.MoveCall.package}::${n.MoveCall.module}::${n.MoveCall.function}`))}inputs;commands;movecallsAsSet;get address(){return this.scallopClient.address}get utils(){return this.scallopClient.utils}get coreId(){return{protocolPkg:this.address.get("core.packages.protocol.id"),market:this.address.get("core.market"),version:this.address.get("core.version"),coinDecimalsRegistry:this.address.get("core.coinDecimalsRegistry"),xOracle:this.address.get("core.oracles.xOracle"),spoolPkg:this.address.get("spool.id"),borrowIncentivePkg:this.address.get("borrowIncentive.id"),veScaPkgId:this.address.get("vesca.id"),veScaObjId:this.address.get("vesca.object"),scoin:this.address.get("scoin.id"),referral:this.address.get("referral.id")}}matchMoveCallCommand(e,t){let{address:n,module:o,name:i}=(0,zu.parseStructTag)(t);return e?e.package===n&&e.module===o&&e.function===i:!1}isMoveCall(e){return e.$kind==="MoveCall"&&!!e.MoveCall}filterMoveCallCommands(e,t){return this.isMoveCall(e)&&this.matchMoveCallCommand(e.MoveCall,t)}getMoveCallCommands(e){let t=new Set(e),n=e.reduce((i,s,l)=>(i[s]=l,i),{}),o=[];return this.commands.forEach(i=>{this.isMoveCall(i)&&i.MoveCall&&t.has(i.MoveCall.package)&&(o[n[i.MoveCall.package]]=i.MoveCall)}),o}hasMoveCallCommand(e){return this.movecallsAsSet.has(e)}};var Ra=require("@mysten/sui/bcs"),xe=require("@mysten/sui/utils"),Rs=class a{constructor(e,t,n=0){this.moveCall=e;this.transaction=t;let o=[];e?.MoveCall&&t.getData().commands.filter((i,s)=>{if(i.$kind==="MoveCall"){let l=`${i.MoveCall.package}::${i.MoveCall.module}::${i.MoveCall.function}`,d=`${e.MoveCall.package}::${e.MoveCall.module}::${e.MoveCall.function}`;return l===d?(o.push(s),!0):!1}return!1}),this.cmdIdx=o[n]}cmdIdx;get txBlockTransactions(){return this.transaction.blockData.transactions[this.cmdIdx]}decodeSharedObjectId(e){let t=this.getInputParam(e);return a.getSharedObjectId(t)}decodeOwnedObjectId(e){let t=this.getInputParam(e);return a.getOwnedObjectId(t)}decodeInputU64(e){let t=this.decodePureArg(e,"U64");return Number(t)}decodeInputU8(e){let t=this.decodePureArg(e,"U8");return Number(t)}decodeInputAddress(e){let t=this.decodePureArg(e,"Address");return(0,xe.normalizeSuiAddress)(t)}decodeInputString(e){return this.decodePureArg(e,"String")}decodeInputBool(e){return this.decodePureArg(e,"Bool")}decodePureArg(e,t){let n=this.getInputParam(e);return a.getPureInputValue(n,t)}getInputParam(e){let t=this.txBlockTransactions.arguments[e];if(t.kind!=="Input")throw new Error("not input type");return t}getNestedInputParam(e){let t=this.txBlockTransactions.arguments[e];if(t.kind!=="NestedResult")throw new Error("not input type");return this.transaction.blockData.transactions[t.index]}static getPureInputValue(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure,o=Ra.bcs[t];return Ra.bcs[t].parse(new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,xe.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,xe.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,xe.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,xe.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let t=e.value.Pure;return Ra.bcs.U64.parse(new Uint8Array(t))}typeArg(e){return(0,xe.normalizeStructTag)(this.txBlockTransactions.typeArguments[e])}txArg(e){return this.transaction.blockData.inputs[e]}},W=Rs;var Bs=class{constructor(e,t){this.splitCoin=e;this.txb=t}getAmountInput(){return this.splitCoin.amounts.map(e=>{if(e.kind==="Input")return Number(W.getPureInputValue(e,"U64"))}).filter(e=>e!==void 0)}},Bt=Bs;var ke=require("@mysten/sui/utils"),Gu=async(a,e)=>{let t=await a.scallopSuiKit.client.getObject({id:e,options:{showContent:!0}});if(t?.data?.content?.dataType!=="moveObject")return!1;let o=t.data.content.fields.lock_key?.fields.name;if(!o)return!1;let i=a.address.get("borrowIncentive.object");return o===`${i.slice(2)}::incentive_account::IncentiveProgramLockKey`},on={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},$t={unstakeObligation:(a,e,t)=>a.moveCall(`${on.id}::user::unstake`,[on.incentivePools,on.incentiveAccounts,a.object(e),a.object(t),ke.SUI_CLOCK_OBJECT_ID],[(0,ke.normalizeStructTag)(ke.SUI_TYPE_ARG)]),redeem_rewards:(a,e,t,n)=>a.moveCall(`${on.id}::user::redeem_rewards`,[on.incentivePools,on.incentiveAccounts,a.object(e),a.object(t),ke.SUI_CLOCK_OBJECT_ID],[(0,ke.normalizeStructTag)(n)])};var Qu=(a,e)=>{let t=[];for(let n=0;n<a.length;n+=e)t.push(a.slice(n,n+e));return t};var Ba=class extends Ce{decode(){if(this.isSupplyWithStakeSpoolTransaction())return this.decodeSupplyWithStakeSpool();if(this.isUnstakeAndWithdrawTransaction())return this.decodeUnstakeAndWithdraw();if(this.isStakeSpoolTransaction())return this.decodeStakeSpool();if(this.isDepositCollateralTransaction())return this.decodeDepositCollateral();if(this.isWithdrawCollateralTransaction())return this.decodeWithdrawCollateral();if(this.isWithdrawLendingScoinTransaction())return this.decodeWithdrawLendingScoin();if(this.isWithdrawLendingTransaction())return this.decodeWithdrawLending();if(this.isSupplyLendingTransaction())return this.decodeSupplyLending();if(this.isBorrowWithReferralTransaction())return this.decodeBorrowWithReferral();if(this.isBorrowWithBoostTransaction())return this.decodeBorrowWithBoost();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayWithBoostTransaction())return this.decodeRepayWithBoost();if(this.isRepayTransaction())return this.decodeRepay();if(this.isUnstakeSpoolTransaction())return this.decodeUnstakeSpool();if(this.isMigrateAndClaim())return this.decodeMigrateAndClaim();if(this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isOpenObligationTransaction())return this.decodeOpenObligation();if(this.isMigrateScoinTransaction())return this.decodeMigrateScoin()}isMigrateScoinTransaction(){return this.hasMoveCallCommand(`${this.coreId.scoin}::s_coin_converter::mint_s_coin`)}isSupplyLendingTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::mint::mint`)}isSupplyWithStakeSpoolTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.protocolPkg}::mint::mint`),t=this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::stake`);return e&&t}isUnstakeAndWithdrawTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::unstake`),t=this.hasMoveCallCommand(`${this.coreId.protocolPkg}::redeem::redeem`);return e&&t}isStakeSpoolTransaction(){return this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::stake`)}isWithdrawLendingTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::redeem::redeem`)}isWithdrawLendingScoinTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.protocolPkg}::redeem::redeem`),t=this.hasMoveCallCommand(`${this.coreId.scoin}::s_coin_converter::burn_s_coin`);return e&&t}isDepositCollateralTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`)}isWithdrawCollateralTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`)}isBorrowTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::borrow::borrow`)}isBorrowWithBoostTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.protocolPkg}::borrow::borrow`),t=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`);return e&&t}isBorrowWithReferralTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::borrow::borrow_with_referral`)}isRepayTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::repay::repay`)}isRepayWithBoostTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.protocolPkg}::repay::repay`),t=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`);return e&&t}isUnstakeSpoolTransaction(){return this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::unstake`)}isCreateStakeAccountTransaction(){return this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::new_spool_account`)}isClaimRewardTransaction(){let e=this.hasMoveCallCommand(`${this.coreId.spoolPkg}::user::redeem_rewards`),t=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`);return e||t}isOpenObligationTransaction(){return this.hasMoveCallCommand(`${this.coreId.protocolPkg}::open_obligation::open_obligation`)}isMigrateAndClaim(){let e=this.hasMoveCallCommand(`${Es.OLD_BORROW_INCENTIVE_PROTOCOL_ID}::user::redeem_rewards`),t=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`),n=this.hasMoveCallCommand(`${this.coreId.borrowIncentivePkg}::user::stake`);return e&&(t||n)}get helperClaimLendingReward(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::redeem_rewards`)).map(t=>new W(t,this.transaction))}get helperClaimBorrowV2Reward(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`)).map(t=>new W(t,this.transaction))}get helperStakeObligationWithVeSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`));return new W(e,this.transaction)}get helperClaimBorrowReward(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${Es.OLD_BORROW_INCENTIVE_PROTOCOL_ID}::user::redeem_rewards`)).map(t=>new W(t,this.transaction))}get helperMint(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::mint::mint`));return new W(e,this.transaction)}get helperUnstakes(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::unstake`)).map(t=>new W(t,this.transaction))}get helperRedeems(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::redeem::redeem`)).map(t=>new W(t,this.transaction))}get helperRedeem(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::redeem::redeem`));return new W(e,this.transaction)}get helperBurnScoin(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.scoin}::s_coin_converter::burn_s_coin`));return new W(e,this.transaction)}get helperStake(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::stake`));return new W(e,this.transaction)}get helperUnstake(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.spoolPkg}::user::unstake`));return new W(e,this.transaction)}get helperDepositCollateral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`));return new W(e,this.transaction)}get helperWithdrawCollateral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`));return new W(e,this.transaction)}get helperBorrow(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::borrow::borrow`));return new W(e,this.transaction)}get helperBorrowWithReferral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::borrow::borrow_with_referral`));return new W(e,this.transaction)}get helperRepay(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.protocolPkg}::repay::repay`));return new W(e,this.transaction)}decodeMigrateScoin(){return{txType:Mt.TransactionType.Other,type:"MigrateScoin",intentionData:{}}}decodeMigrateAndClaim(){let e;this.helperStakeObligationWithVeSca.moveCall&&(e=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9));let t=this.helperClaimBorrowReward[0].decodeOwnedObjectId(2),n=this.helperClaimBorrowReward[0].decodeSharedObjectId(3),o=this.utils.parseCoinNameFromType(this.helperClaimBorrowReward[0].typeArg(0));return{txType:Mt.TransactionType.Other,type:"MigrateAndClaim",intentionData:{obligationKey:t,obligationId:n,rewardCoinName:o,veScaKey:e}}}decodeOpenObligation(){return{txType:Mt.TransactionType.Other,type:"OpenObligation",intentionData:{}}}decodeSupplyLending(){let e=this.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),t=this.helperMint.getNestedInputParam(2),n=new Bt(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Mt.TransactionType.Other,type:"SupplyLending",intentionData:{amount:n,coinName:e}}}decodeWithdrawLending(){let e=this.utils.parseCoinNameFromType(this.helperRedeem.typeArg(0)),t=this.helperRedeem.getNestedInputParam(2),n=new Bt(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Mt.TransactionType.Other,type:"WithdrawLending",intentionData:{amount:n,coinName:e}}}decodeWithdrawLendingScoin(){let e=this.utils.parseCoinNameFromType(this.helperRedeem.typeArg(0));console.log({coinName:e});let t=this.helperBurnScoin.getNestedInputParam(1),n=new Bt(t,this.transaction).getAmountInput().reduce((o,i)=>o+i,0);return{txType:Mt.TransactionType.Other,type:"WithdrawLending",intentionData:{amount:n,coinName:e}}}decodeDepositCollateral(){let e=this.utils.parseCoinNameFromType(this.helperDepositCollateral.typeArg(0)),t=this.helperDepositCollateral.getNestedInputParam(3),n=new Bt(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o=this.helperDepositCollateral.decodeSharedObjectId(1);return{txType:Mt.TransactionType.Other,type:"DepositCollateral",intentionData:{amount:n,obligationId:o,collateralCoinName:e}}}decodeWithdrawCollateral(){let e=this.utils.parseCoinNameFromType(this.helperWithdrawCollateral.typeArg(0)),t=this.helperWithdrawCollateral.decodeInputU64(5),n=this.helperWithdrawCollateral.decodeSharedObjectId(1),o=this.helperWithdrawCollateral.decodeOwnedObjectId(2);return{txType:Mt.TransactionType.Other,type:"WithdrawCollateral",intentionData:{amount:t,collateralCoinName:e,obligationKey:o,obligationId:n}}}decodeBorrow(){let e=this.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),t=this.helperBorrow.decodeInputU64(5),n=this.helperBorrow.decodeSharedObjectId(1),o=this.helperBorrow.decodeOwnedObjectId(2);return{txType:Mt.TransactionType.Other,type:"Borrow",intentionData:{amount:t,coinName:e,obligationKey:o,obligationId:n}}}decodeBorrowWithBoost(){let e=this.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),t=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9),n=this.helperBorrow.decodeInputU64(5),o=this.helperBorrow.decodeSharedObjectId(1),i=this.helperBorrow.decodeOwnedObjectId(2);return{txType:Mt.TransactionType.Other,type:"BorrowWithBoost",intentionData:{amount:n,coinName:e,obligationKey:i,obligationId:o,veScaKey:t}}}decodeBorrowWithReferral(){let e=this.utils.parseCoinNameFromType(this.helperBorrowWithReferral.typeArg(0)),t;this.helperStakeObligationWithVeSca.moveCall&&(t=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9));let n=this.helperBorrowWithReferral.decodeInputU64(6),o=this.helperBorrowWithReferral.decodeSharedObjectId(1),i=this.helperBorrowWithReferral.decodeOwnedObjectId(2);return{txType:Mt.TransactionType.Other,type:"BorrowWithReferral",intentionData:{amount:n,coinName:e,obligationKey:i,obligationId:o,veScaKey:t}}}decodeRepay(){let e=this.utils.parseCoinNameFromType(this.helperRepay.typeArg(0)),t=this.helperRepay.getNestedInputParam(3),n=new Bt(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o=this.helperRepay.decodeSharedObjectId(1);return{txType:Mt.TransactionType.Other,type:"Repay",intentionData:{amount:n,obligationId:o,coinName:e}}}decodeRepayWithBoost(){let e=this.utils.parseCoinNameFromType(this.helperRepay.typeArg(0)),t=this.helperStakeObligationWithVeSca.decodeOwnedObjectId(9),n=this.helperRepay.getNestedInputParam(3),o=new Bt(n,this.transaction).getAmountInput().reduce((s,l)=>s+l,0),i=this.helperRepay.decodeSharedObjectId(1);return{txType:Mt.TransactionType.Other,type:"RepayWithBoost",intentionData:{amount:o,obligationId:i,coinName:e,veScaKey:t}}}decodeStakeSpool(){let e;this.isCreateStakeAccountTransaction()||(e=this.helperStake.decodeOwnedObjectId(1));let t=0;if(this.helperBurnScoin.moveCall){let i=this.helperBurnScoin.getNestedInputParam(1);t=new Bt(i,this.transaction).getAmountInput().reduce((s,l)=>s+l,0)}if(this.helperStake.moveCall&&t===0){let i=this.helperStake.getNestedInputParam(2);t=new Bt(i,this.transaction).getAmountInput().reduce((s,l)=>s+l,0)}let n=this.helperStake.typeArg(0),o=this.utils.parseCoinNameFromType(n);return{txType:Mt.TransactionType.Other,type:"StakeSpool",intentionData:{amount:t,marketCoinName:o,stakeAccountId:e}}}decodeUnstakeSpool(){let e=this.helperUnstake.decodeOwnedObjectId(1),t=this.helperUnstake.decodeInputU64(2),n=this.helperUnstake.typeArg(0),o=this.utils.parseCoinNameFromType(n);return{txType:Mt.TransactionType.Other,type:"UnstakeSpool",intentionData:{amount:t,marketCoinName:o,stakeAccountId:e}}}decodeSupplyWithStakeSpool(){let e=this.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),t=this.helperMint.getNestedInputParam(2),n=new Bt(t,this.transaction).getAmountInput().reduce((i,s)=>i+s,0),o;return this.isCreateStakeAccountTransaction()||(o=this.helperStake.decodeOwnedObjectId(1)),{txType:Mt.TransactionType.Other,type:"SupplyAndStakeLending",intentionData:{amount:n,coinName:e,stakeAccountId:o}}}decodeUnstakeAndWithdraw(){let e=[];this.helperUnstakes.forEach(o=>{let i=o.decodeOwnedObjectId(1),s=o.decodeInputU64(2);e.push({id:i,coin:s})});let t=this.utils.parseCoinNameFromType(this.helperRedeems[0].typeArg(0)),n=0;if(this.helperBurnScoin.moveCall){let o=this.helperBurnScoin.getNestedInputParam(1);n=new Bt(o,this.transaction).getAmountInput().reduce((i,s)=>i+s,0)}return{txType:Mt.TransactionType.Other,type:"WithdrawAndUnstakeLending",intentionData:{amount:n,coinName:t,stakeAccountId:e}}}decodeClaimReward(){let e=[],t=[],n=[];return this.helperClaimLendingReward.forEach(o=>{let i=o.decodeOwnedObjectId(2),s=o.typeArg(0),l=this.utils.parseCoinNameFromType(s);e.push({stakeMarketCoinName:l,stakeAccountId:i})}),this.helperClaimBorrowV2Reward.forEach(o=>{let i=o.decodeSharedObjectId(4),s=o.decodeOwnedObjectId(3),l=this.utils.parseCoinNameFromType(o.typeArg(0));t.push({obligationId:s,obligationKey:i,rewardCoinName:l})}),this.helperClaimBorrowReward.forEach(o=>{let i=o.decodeSharedObjectId(2),s=o.decodeOwnedObjectId(3),l=this.utils.parseCoinNameFromType(o.typeArg(0));n.push({obligationId:s,obligationKey:i,rewardCoinName:l})}),{txType:Mt.TransactionType.Other,type:"ClaimIncentiveReward",intentionData:{lendingIncentive:e,borrowIncentiveV2:t,borrowIncentive:n}}}};var Ea=require("@msafe/sui3-utils");var Wa=class extends Ce{decode(){if(this.isCreateReferralLink())return this.decodeCreateReferralLink();if(this.isClaimRevenueReferral())return this.decodeClaimRevenueReferral();if(this.isBindReferral())return this.decodeBindReferral()}isClaimRevenueReferral(){return this.hasMoveCallCommand(`${this.coreId.referral}::referral_revenue_pool::claim_revenue_with_ve_sca_key`)}isCreateReferralLink(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_placeholder_key`)}isBindReferral(){return this.hasMoveCallCommand(`${this.coreId.referral}::referral_bindings::bind_ve_sca_referrer`)}get helperClaimRevenueReferral(){return this.commands.filter(t=>this.filterMoveCallCommands(t,`${this.coreId.referral}::referral_revenue_pool::claim_revenue_with_ve_sca_key`)).map(t=>new W(t,this.transaction))}get helperBindReferral(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.referral}::referral_bindings::bind_ve_sca_referrer`));return new W(e,this.transaction)}decodeCreateReferralLink(){return{txType:Ea.TransactionType.Other,type:"CreateReferralLink",intentionData:{}}}decodeClaimRevenueReferral(){let e=this.helperClaimRevenueReferral[0].decodeOwnedObjectId(2),t=this.helperClaimRevenueReferral.map(n=>n.typeArg(0));return{txType:Ea.TransactionType.Other,type:"ClaimRevenueReferral",intentionData:{veScaKey:e,coins:t}}}decodeBindReferral(){let e=this.helperBindReferral.decodePureArg(1,"Address");return{txType:Ea.TransactionType.Other,type:"BindReferral",intentionData:{veScaKey:e}}}};var ne=require("@msafe/sui3-utils"),Ju=require("@scallop-io/sui-scallop-sdk");var Na=class extends Ce{async decode(){if(this.isExtendPeriodAndStakeMoreSca())return this.decodePeriodAndStakeMoreSca();if(this.isStakeScaFirsTime()||this.isStakeMoreSca())return this.decodeStakeSca();if(this.isRenewExpiredVeSca())return this.decodeRenewExpiredVeSca();if(this.isExtendPeriod())return this.decodeExtendStakePeriod();if(this.isRedeemSca())return this.decodeRedeemSca();if(this.isMergeVeSca())return this.decodeMergeVesca();if(this.isSplitVeSca())return this.decodeSplitVesca();if(this.isVeScaObligationBindings())return this.decodeVeScaObligationBindings();if(await this.isTransferVeScaKey())return this.decodeTransferVeScaKey()}isStakeScaFirsTime(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`)}isExtendPeriodAndStakeMoreSca(){let e=this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`),t=this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`);return!!e&&!!t}isRedeemSca(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::redeem`)}isStakeMoreSca(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`)}isExtendPeriod(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`)}isRenewExpiredVeSca(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`)}isMergeVeSca(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::merge`)}isSplitVeSca(){return this.hasMoveCallCommand(`${this.coreId.veScaPkgId}::ve_sca::split`)}isVeScaObligationBindings(){let e=this.commands.filter(l=>this.filterMoveCallCommands(l,`${this.coreId.borrowIncentivePkg}::user::unstake_v2`)),t=this.commands.filter(l=>this.filterMoveCallCommands(l,`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`)),n=this.commands.filter(l=>this.filterMoveCallCommands(l,`${this.coreId.borrowIncentivePkg}::user::deactivate_boost_v2`)),o=e.length>0&&t.length>0&&e.length===t.length,i=n.length>0;return this.commands.length===e.length+t.length+n.length&&(o||i)}async isTransferVeScaKey(){let e=this.commands.filter(d=>d.$kind==="TransferObjects");if(e.length!==1)return!1;let{objects:t}=e[0].TransferObjects,n=t.filter(d=>d.$kind==="Input").map(({Input:d})=>d);if(n.length!==t.length)return!1;let o=new Set(n),i=this.inputs.filter((d,b)=>d.$kind==="Object"&&o.has(b)).map(d=>d.Object.ImmOrOwnedObject),s=`${this.coreId.veScaObjId}::ve_sca::VeScaKey`,l=Qu(i.map(({objectId:d})=>d),50);for(let d=0;d<l.length;d++){let b=l[d];if((await this.scallopClient.scallopSuiKit.queryGetObjects(b,{showType:!0})).some(C=>C.type!==s))return!1}return i.length>0}get helperStakeMoreSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`));return new W(e,this.transaction)}get helperStakeSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`));return new W(e,this.transaction)}get helperExtendStakePeriod(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`));return new W(e,this.transaction)}get helperRedeemSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::redeem`));return new W(e,this.transaction)}get helperRenewExpired(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`));return new W(e,this.transaction)}get helperOldUnstakeObligation(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${Ju.OLD_BORROW_INCENTIVE_PROTOCOL_ID}::user::unstake`));return new W(e,this.transaction)}get helperUnstakeObligation(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::unstake_v2`));return new W(e,this.transaction)}get helperStakeObligationWithVeSca(){let e=this.commands.find(t=>this.filterMoveCallCommands(t,`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`));return new W(e,this.transaction)}getMergeSplitVeScaHelper(e){let t=this.commands.find(n=>this.filterMoveCallCommands(n,`${this.coreId.veScaPkgId}::ve_sca::${e}`));return new W(t,this.transaction)}getVeScaObligationBindingHelpers(){let e=`${this.coreId.borrowIncentivePkg}::user::unstake_v2`,t=`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca_v2`,n=`${this.coreId.borrowIncentivePkg}::user::deactivate_boost_v2`,o=[],i=0,s=0,l=0;return this.commands.forEach(d=>{this.filterMoveCallCommands(d,e)?(o.push({action:"unstake",helper:new W(d,this.transaction,i)}),i++):this.filterMoveCallCommands(d,t)?(o.push({action:"stake",helper:new W(d,this.transaction,s)}),s++):this.filterMoveCallCommands(d,n)&&(o.push({action:"deactivate",helper:new W(d,this.transaction,l)}),l++)}),o}decodeRedeemSca(){let e=this.helperRedeemSca.decodeOwnedObjectId(1);return{txType:ne.TransactionType.Other,type:"RedeemSca",intentionData:{veScaKey:e}}}decodeRenewExpiredVeSca(){let e=this.helperRenewExpired.getNestedInputParam(4),t=this.helperRenewExpired.decodeInputU64(5),n=new Bt(e,this.transaction).getAmountInput().reduce((D,P)=>D+P,0),o=this.helperRenewExpired.decodeOwnedObjectId(1),i=!!this.helperRedeemSca.moveCall,s=[],l=[],d=[];this.helperOldUnstakeObligation.moveCall&&(s=[this.helperOldUnstakeObligation.decodeOwnedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(l=[this.helperUnstakeObligation.decodeOwnedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(d=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let b=!1,T=!1,C,x,k=[{condition:s,isOld:!0},{condition:l,isOld:!1},{condition:d,isOld:!1}];for(let D=0;D<k.length;D++)k[D].condition.length>1&&([x,C]=k[D].condition,b=!0,T=k[D].isOld);return{txType:ne.TransactionType.Other,type:"RenewExpStakePeriod",intentionData:{amount:n,unlockTime:t,obligationId:C,obligationKey:x,veScaKey:o,isHaveRedeem:i,isObligationLocked:b,isOldBorrowIncentive:T}}}decodeExtendStakePeriod(){let e=this.helperExtendStakePeriod.decodeInputU64(4),t=this.helperExtendStakePeriod.decodeOwnedObjectId(1),n=[],o=[],i=[];this.helperOldUnstakeObligation.moveCall&&(n=[this.helperOldUnstakeObligation.decodeOwnedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(o=[this.helperUnstakeObligation.decodeOwnedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(i=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let s=!1,l=!1,d,b,T=[{condition:n,isOld:!0},{condition:o,isOld:!1},{condition:i,isOld:!1}];for(let C=0;C<T.length;C++)T[C].condition.length>1&&([b,d]=T[C].condition,s=!0,l=T[C].isOld);return{txType:ne.TransactionType.Other,type:"ExtendStakePeriod",intentionData:{unlockTime:e,obligationId:d,obligationKey:b,veScaKey:t,isObligationLocked:s,isOldBorrowIncentive:l}}}decodePeriodAndStakeMoreSca(){let e=this.helperStakeMoreSca.getNestedInputParam(4),t=this.helperExtendStakePeriod.decodeInputU64(4),n=new Bt(e,this.transaction).getAmountInput().reduce((k,D)=>k+D,0),o=[],i=[],s,l=[];this.helperOldUnstakeObligation.moveCall&&(o=[this.helperOldUnstakeObligation.decodeOwnedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(i=[this.helperUnstakeObligation.decodeOwnedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(s=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(l=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let d=!1,b=!1,T,C,x=[{condition:o,isOld:!0},{condition:i,isOld:!1},{condition:l,isOld:!1}];for(let k=0;k<x.length;k++)x[k].condition.length>1&&([C,T]=x[k].condition,d=!0,b=x[k].isOld);return{txType:ne.TransactionType.Other,type:"ExtendPeriodAndStakeMore",intentionData:{amount:n,veScaKey:s,unlockTime:t,obligationId:T,obligationKey:C,isOldBorrowIncentive:b,isObligationLocked:d}}}decodeStakeSca(){let e,t;this.helperStakeSca.moveCall&&this.helperStakeMoreSca.moveCall===void 0?(e=this.helperStakeSca.getNestedInputParam(3),t=this.helperStakeSca.decodeInputU64(4)):e=this.helperStakeMoreSca.getNestedInputParam(4);let n=new Bt(e,this.transaction).getAmountInput().reduce((k,D)=>k+D,0),o=[],i=[],s,l=[];this.helperOldUnstakeObligation.moveCall&&(o=[this.helperOldUnstakeObligation.decodeOwnedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(i=[this.helperUnstakeObligation.decodeOwnedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(s=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(l=[this.helperStakeObligationWithVeSca.decodeOwnedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let d=!1,b=!1,T,C,x=[{condition:o,isOld:!0},{condition:i,isOld:!1},{condition:l,isOld:!1}];for(let k=0;k<x.length;k++)x[k].condition.length>1&&([C,T]=x[k].condition,d=!0,b=x[k].isOld);return{txType:ne.TransactionType.Other,type:"StakeSca",intentionData:{amount:n,unlockTime:t,obligationId:T,obligationKey:C,veScaKey:s,isObligationLocked:d,isOldBorrowIncentive:b}}}decodeMergeVesca(){let e=this.getMergeSplitVeScaHelper("merge"),t={targetVeScaKey:e.decodeOwnedObjectId(1),sourceVeScaKey:e.decodeOwnedObjectId(2)};return{txType:ne.TransactionType.Other,type:"MergeVeSca",intentionData:t}}decodeSplitVesca(){let e=this.getMergeSplitVeScaHelper("split"),t={targetVeScaKey:e.decodeOwnedObjectId(1),splitAmount:e.decodeInputU64(4)};return{txType:ne.TransactionType.Other,type:"SplitVeSca",intentionData:t}}decodeVeScaObligationBindings(){let e=this.getVeScaObligationBindingHelpers(),t=(o,i)=>{switch(o){case"stake":return{veScaKey:i.decodeOwnedObjectId(9),obligationId:i.decodeSharedObjectId(4),obligationKey:i.decodeOwnedObjectId(3)};case"unstake":return{obligationId:i.decodeSharedObjectId(4),obligationKey:i.decodeOwnedObjectId(3)};case"deactivate":return{veScaKey:i.decodeOwnedObjectId(4),obligationId:i.decodeSharedObjectId(3)};default:throw new Error(`Invalid action ${o}`)}},n=e.map(({action:o,helper:i})=>({action:o,args:t(o,i)}));return{txType:ne.TransactionType.Other,type:"VeScaObligationBindings",intentionData:{bindingDatas:n}}}decodeTransferVeScaKey(){let e=this.commands.filter(s=>s.$kind==="TransferObjects"),{objects:t}=e[0].TransferObjects,n=t.filter(s=>s.$kind==="Input").map(({Input:s})=>s);if(n.length!==t.length)return!1;let o=new Set(n),i=this.inputs.filter((s,l)=>s.$kind==="Object"&&o.has(l)).map(s=>s.Object.ImmOrOwnedObject);return{xType:ne.TransactionType.Other,type:"TransferVeScaKeys",intentionData:{veScaKeys:i}}}};var Yu=Ut(require("sort-keys-recursive")),A=class{constructor(e){this.data=e}get application(){return"msafe-core"}serialize(){return JSON.stringify((0,Yu.default)(this.data))}isObligationLocked=async(e,t)=>{let n=await e.getObject({id:typeof t=="string"?t:t.objectId,options:{showContent:!0}}),o=!1;return n&&n?.data.content?.dataType==="moveObject"&&"lock_key"in n.data.content.fields&&(o=!!n.data.content.fields.lock_key),o};async buildTxWithRefreshObligation(e,t,n){let o=e.builder.createTxBlock();o.setSender(t.walletAddress);let{obligationId:i,obligationKey:s}=t;return await this.isObligationLocked(e.scallopSuiKit.client,i)?(await o.unstakeObligationQuick(i,s),await n(e,o,t),await o.stakeObligationWithVeScaQuick(i,s,t.veScaKey)):await n(e,o,t),o}};var _a=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async borrow({account:t,scallopClient:n}){let{coinName:o,amount:i,obligationId:s,obligationKey:l}=this.data,d=t.address;return(await this.buildTxWithRefreshObligation(n,{walletAddress:d,obligationId:s,obligationKey:l},async(T,C)=>{let x=await C.borrowQuick(+i,o,s,l);C.transferObjects([x],d)})).txBlock}async build(t){return this.borrow(t)}static fromData(t){return new a(t)}};var La=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async borrowWithBoost(t,n){let{obligationId:o,obligationKey:i,veScaKey:s,amount:l,coinName:d}=this.data;return(await this.buildTxWithRefreshObligation(t,{walletAddress:n,obligationId:o,obligationKey:i,veScaKey:s},async(T,C)=>{let x=await C.borrowQuick(+l,d,o,i);C.transferObjects([x],n)})).txBlock}async build(t){return this.borrowWithBoost(t.scallopClient,t.account.address)}static fromData(t){return new a(t)}};var ja=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async borrowWithReferral({account:t,scallopClient:n}){let o=t.address,{obligationId:i,obligationKey:s,veScaKey:l,coinName:d,amount:b}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:i,obligationKey:s,veScaKey:l},async(C,x)=>{let k=x.claimReferralTicket(d),D=await x.borrowWithReferralQuick(+b,d,k,i,s);x.burnReferralTicket(k,d),x.transferObjects([D],o)})).txBlock}async build(t){return this.borrowWithReferral(t)}static fromData(t){return new a(t)}};var Zu=require("@mysten/sui/utils");var Ua=class a extends A{txType;txSubType;constructor(e={}){super(e)}async claimIncentiveRewards(e,t){let n=e.builder.createTxBlock();n.setSender(t);let o=await e.query.getAllStakeAccounts(t),i=await e.query.getLendings(void 0,t),s=await e.query.getObligations(t),l=Object.values(await e.query.getObligationAccounts(t)??[]),d=(()=>{let x=[...e.constants.whitelist.spool].map(k=>e.utils.parseCoinName(k));return Object.values(i??[]).filter(k=>!!k&&x.includes(k.coinName)).reduce((k,D)=>{let P=e.utils.parseMarketCoinName(D.coinName);return k[P]||(k[P]=0),k[P]+=D.availableClaimCoin,k},{})})(),b={};Object.entries(o).forEach(([x,k])=>{for(let D=0;D<k.length;D++){let P=k[D];if(!d[x])continue;let q=n.claim(P.id,x);b.sui?b.sui.push(q):b.sui=[q]}});let T=(()=>{let x={};return x.sui=Object.values(d).reduce((k,D)=>k+D,0),l.forEach(k=>{Object.values(k.borrowIncentives).forEach(D=>{D&&D.rewards.forEach(P=>{x[P.coinName]||(x[P.coinName]=0),x[P.coinName]?x[P.coinName]+=P.availableClaimCoin:x[P.coinName]=P.availableClaimCoin})})}),x})();if(s.length>0&&l.length>0)for(let x=0;x<l.length;x++){let k=l[x],D=!1,P=s.find(V=>V.id===k.obligationId)?.keyId,q={};if(P){if(Object.values(k.borrowIncentives).forEach(V=>{if(V){let Et=V.rewards.filter(Nt=>{let Pt=Nt.coinName;return Nt.availableClaimCoin>0&&!q[Pt]});D=Et.length>0,Et.forEach(Nt=>{let Pt=n.claimBorrowIncentive(k.obligationId,P,Nt.coinName);q[Nt.coinName]=!0,b[Nt.coinName]?b[Nt.coinName].push(Pt):b[Nt.coinName]=[Pt]})}}),T.sui>0){let V=$t.redeem_rewards(n,P,k.obligationId,Zu.SUI_TYPE_ARG);b.sui?b.sui.push(V):b.sui=[V]}if(D&&await Gu(e.query,k.obligationId)){n.unstakeObligation(k.obligationId,P);let Et=await e.query.getBindedVeScaKey(k.obligationId);Et?n.stakeObligationWithVesca(k.obligationId,P,Et):n.stakeObligation(k.obligationId,P)}}}let C=(await Promise.all(Object.entries(b).map(async([x,k])=>{let D=k[0];if(k.length>1&&n.mergeCoins(D,k.slice(1)),x==="sui"){n.mergeCoins(n.gas,[D]);return}return await e.builder.utils.mergeSimilarCoins(n,D,e.utils.parseCoinType(x),t),D}))).filter(x=>!!x);return C.length>0&&n.transferObjects(C,t),n.txBlock}async build(e){return this.claimIncentiveRewards(e.scallopClient,e.account.address)}static fromData(e={}){return new a(e)}};var qa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.depositCollateral(this.data.collateralCoinName,+this.data.amount,!1,this.data.obligationId)}static fromData(t){return new a(t)}};var Fa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async migrateAndClaim({account:t,scallopClient:n}){let o=t.address,{obligationKey:i,obligationId:s,rewardCoinName:l,veScaKey:d}=this.data,b=n.builder.createTxBlock();b.setSender(o);let T=$t.redeem_rewards(b,i,s,n.utils.parseCoinType(l));return b.transferObjects([T],o),await b.unstakeObligationQuick(s,i),d?await b.stakeObligationWithVeScaQuick(s,i,d):await b.stakeObligationQuick(s,i),b.txBlock}async build(t){return this.migrateAndClaim(t)}static fromData(t){return new a(t)}};var Ka=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.migrateAllMarketCoin(!1,!1)}static fromData(t){return new a(t)}};var Va=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.openObligation(!1)}static fromData(t){return new a(t)}};var $a=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async repay({account:t,scallopClient:n}){let o=t.address,{coinName:i,amount:s,obligationId:l,obligationKey:d}=this.data;return(await this.buildTxWithRefreshObligation(n,{walletAddress:o,obligationId:l,obligationKey:d},async(T,C)=>{await C.repayQuick(+s,i,l)})).txBlock}async build(t){return this.repay(t)}static fromData(t){return new a(t)}};var Ha=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async repayWithBoost({account:t,scallopClient:n}){let o=t.address,{coinName:i,amount:s,obligationId:l,veScaKey:d}=this.data,b=n.builder.createTxBlock();b.setSender(o);let T=n.constants.whitelist.borrowing.has(i);return T&&await b.unstakeObligationQuick(l,void 0),await b.repayQuick(+s,i,l),T&&await b.stakeObligationWithVeScaQuick(l,void 0,d),b.txBlock}async build(t){return this.repayWithBoost(t)}static fromData(t){return new a(t)}};var Xa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.deposit(this.data.coinName,+this.data.amount,!1,t.account.address)}static fromData(t){return new a(t)}};var za=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.unstake(this.data.marketCoinName,+this.data.amount,!1)}static fromData(t){return new a(t)}};var Ga=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async unstakeAndWithdraw(t,n,o){let i=t.builder.createTxBlock();i.setSender(o);let{stakeAccountId:s,amount:l,coinName:d}=this.data,b=[];for(let T=0;T<s.length;T++){let{id:C,coin:x}=s[T],k=t.utils.parseMarketCoinName(d),[D]=await i.unstakeQuick(x,k,C);if(D){let P=i.withdraw(D,d);b.push(P)}}if(l>0){let T=await i.withdrawQuick(l,d);b.push(T)}return b.length>1&&i.mergeCoins(b[0],b.slice(1)),i.transferObjects(b,o),i.txBlock}async build(t){return this.unstakeAndWithdraw(t.scallopClient,this.data,t.account.address)}static fromData(t){return new a(t)}};var Qa=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.withdrawCollateral(this.data.collateralCoinName,Number(this.data.amount),!1,this.data.obligationId,this.data.obligationKey,t.account.address)}static fromData(t){return new a(t)}};var Ja=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){return t.scallopClient.withdraw(this.data.coinName,Number(this.data.amount),!1,t.account.address)}static fromData(t){return new a(t)}};var Ya=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async bindReferral({account:t,scallopClient:n}){let o=t.address,i=n.builder.createTxBlock();return i.setSender(o),i.bindToReferral(this.data.veScaKey),i.txBlock}async build(t){return this.bindReferral(t)}static fromData(t){return new a(t)}};var Za=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async claimRevenueReferral({account:t,scallopClient:n}){let{veScaKey:o,coins:i}=this.data,s=t.address,l=n.builder.createTxBlock();l.setSender(s);let d=i.map(b=>n.utils.parseCoinNameFromType(b));return await l.claimReferralRevenueQuick(o,d),l.txBlock}async build(t){return this.claimRevenueReferral(t)}static fromData(t){return new a(t)}};var ti=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async createReferralLink({account:t,scallopClient:n}){let o=t.address,i=n.builder.createTxBlock();i.setSender(o);let s=i.mintEmptyVeSca();return i.transferObjects([s],o),i.txBlock}async build(t){return this.createReferralLink(t)}static fromData(t){return new a(t)}};var tm=require("@scallop-io/sui-scallop-sdk");var ei=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async extendPeriodAndStakeMoreSca({account:t,scallopClient:n}){let{amount:o,veScaKey:i,unlockTime:s,obligationId:l,obligationKey:d,isOldBorrowIncentive:b,isObligationLocked:T}=this.data,C=t.address,x=n.builder.createTxBlock();x.setSender(C);let k=await n.utils.selectCoins(o,tm.SCA_COIN_TYPE,C),[D,P]=x.takeAmountFromCoins(k,o);return x.extendLockPeriod(i,s),x.extendLockAmount(i,D),x.transferObjects([P],C),!l||!d||(T&&(b?$t.unstakeObligation(x,l,d):x.unstakeObligation(l,d)),x.stakeObligationWithVesca(l,d,i)),x.txBlock}async build(t){return this.extendPeriodAndStakeMoreSca(t)}static fromData(t){return new a(t)}};var ni=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async extendStakeScaLockPeriod({account:t,scallopClient:n}){let o=t.address,{veScaKey:i,unlockTime:s,obligationId:l,obligationKey:d,isObligationLocked:b,isOldBorrowIncentive:T}=this.data,C=n.builder.createTxBlock();return C.setSender(o),C.extendLockPeriod(i,s),l&&d&&(b&&(T?$t.unstakeObligation(C,d,l):C.unstakeObligation(l,d)),C.stakeObligationWithVesca(l,d,i)),C.txBlock}async build(t){return this.extendStakeScaLockPeriod(t)}static fromData(t){return new a(t)}};var oi=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async handleUnsubForKeys(t,n,o){let{targetVeScaKey:i,sourceVeScaKey:s}=this.data,[l,d]=await Promise.all([n.getBindedObligationId(i),n.getBindedObligationId(s)]);l&&await t.unstakeObligationQuick(l),d&&await t.unstakeObligationQuick(d),o(t,i,s),l&&await t.stakeObligationWithVeScaQuick(l,void 0,i),d&&await t.stakeObligationWithVeScaQuick(d,void 0,s)}async build(t){let{scallopClient:n,account:{address:o}}=t,i=n.builder.createTxBlock();return i.setSender(o),await this.handleUnsubForKeys(i,n.query,async(s,l,d)=>{s.mergeVeSca(i.object(l),i.object(d))}),i.txBlock}static fromData(t){return new a(t)}};var ai=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async redeemSca({account:t,scallopClient:n}){let{veScaKey:o}=this.data,i=t.address,s=n.builder.createTxBlock();return s.setSender(i),await s.redeemScaQuick({veScaKey:o}),s.txBlock}async build(t){return this.redeemSca(t)}static fromData(t){return new a(t)}};var em=require("@scallop-io/sui-scallop-sdk");var ii=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async renewExpiredStakeSca({account:t,scallopClient:n}){let o=t.address,{amount:i,unlockTime:s,veScaKey:l,isHaveRedeem:d,obligation:b,obligationKey:T,isObligationLocked:C,isOldBorrowIncentive:x}=this.data,k=n.builder.createTxBlock();if(k.setSender(o),d){let V=k.redeemSca(l);k.transferObjects([V],o)}let D=await n.builder.utils.selectCoins(i,em.SCA_COIN_TYPE,o),[P,q]=k.takeAmountFromCoins(D,i);return k.transferObjects([q],o),k.renewExpiredVeSca(l,P,s),!b||!T||(C&&(x?$t.unstakeObligation(k,T,b):k.unstakeObligation(b,T)),k.stakeObligationWithVesca(b,T,l)),k.txBlock}async build(t){return this.renewExpiredStakeSca(t)}static fromData(t){return new a(t)}};var ri=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async handleUnsubForKeys(t,n,o){let{targetVeScaKey:i,splitAmount:s}=this.data,l=await n.getBindedObligationId(i);l&&await t.unstakeObligationQuick(l),o(t,i,s.toString()),l&&await t.stakeObligationWithVeScaQuick(l,void 0,i)}async build(t){let{scallopClient:n,account:{address:o}}=t,i=n.builder.createTxBlock();return i.setSender(o),await this.handleUnsubForKeys(i,n.query,(s,l,d)=>{let b=s.splitVeSca(l,d.toString());s.transferObjects([b],o)}),i.txBlock}static fromData(t){return new a(t)}};var nm=require("@scallop-io/sui-scallop-sdk");var si=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async stakeSca({account:t,scallopClient:n}){let o=t.address,{amount:i,isObligationLocked:s,isOldBorrowIncentive:l,obligationId:d,obligationKey:b,unlockTime:T,veScaKey:C}=this.data,x=n.builder.createTxBlock();x.setSender(o);let k=await n.utils.selectCoins(i,nm.SCA_COIN_TYPE,o),[D,P]=x.takeAmountFromCoins(k,i),q;return C?x.extendLockAmount(C,D):q=x.lockSca(D,T),d&&b&&(s&&(l?$t.unstakeObligation(x,b,d):x.unstakeObligation(d,b)),x.stakeObligationWithVesca(d,b,C||q)),C||x.transferObjects([q,P],o),x.txBlock}async build(t){return this.stakeSca(t)}static fromData(t){return new a(t)}};var ci=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async supplyAndStake({account:t,scallopClient:n}){let o=t.address,{amount:i,coinName:s,stakeAccountId:l}=this.data,d=n.builder.createTxBlock();d.setSender(o);let b=await d.depositQuick(+i,s),T=n.utils.parseMarketCoinName(s);if(n.constants.whitelist.spool.has(T))return d.txBlock;let C=await n.query.getStakeAccounts(T,o),x=l||(C.length>0?C[0].id:void 0);if(x)await d.stakeQuick(b,T,x);else{let k=d.createStakeAccount(T);await d.stakeQuick(b,T,k),d.transferObjects([k],o)}return d.txBlock}async build(t){return this.supplyAndStake(t)}static fromData(t){return new a(t)}};var li=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;handleAction(t,{action:n,args:o}){switch(n){case"deactivate":return t.deactivateBoost(o.obligationId,o.veScaKey);case"stake":return t.stakeObligationWithVesca(o.obligationId,o.obligationKey,o.veScaKey);case"unstake":return t.unstakeObligation(o.obligationId,o.obligationKey);default:throw new Error("Invalid action")}}async build(t){let{scallopClient:n,account:{address:o}}=t,i=n.builder.createTxBlock();i.setSender(o);let{bindingDatas:s}=this.data;return s.forEach(l=>this.handleAction(i,l)),i.txBlock}static fromData(t){return new a(t)}};var ui=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{scallopClient:n,account:{address:o}}=t,i=n.builder.createTxBlock();i.setSender(o);let{veScaKeys:s}=this.data;return i.transferObjects(s.map(l=>i.objectRef(l)),i.pure.address(o)),i.txBlock}static fromData(t){return new a(t)}};var mi=class a extends A{constructor(t){super(t);this.data=t}txType;txSubType;async withdrawUnlockedSca({account:t,scallopClient:n}){let{vescaKey:o}=this.data,i=t.address,s=n.builder.createTxBlock();return s.setSender(i),await s.redeemScaQuick({veScaKey:o}),s.txBlock}async build(t){return this.withdrawUnlockedSca(t)}static fromData(t){return new a(t)}};var pi=class{application="scallop";supportSDK="@mysten/sui";scallopClient;async initScallopClient(e,t){if(!this.scallopClient){let n=new im.Scallop({addressId:"67c44a103fe1b8c454eb9699",walletAddress:e,suiClients:[t],fullnodeUrls:[t.transport.rpcClient.requestManager.transports[0]?.uri??(0,am.getFullnodeUrl)("mainnet")]});this.scallopClient=await n.createScallopClient()}}async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;await this.initScallopClient(o.address,n),console.log("transaction",t);let i=new Ba(t,this.scallopClient),s=new Wa(t,this.scallopClient),l=new Na(t,this.scallopClient),d=i.decode()||s.decode()||await l.decode();if(!d)throw new Error("Unknown transaction type");return{txType:om.TransactionType.Other,txSubType:d.type,intentionData:d.intentionData}}async build(e){let{suiClient:t,account:n,network:o,txSubType:i,intentionData:s}=e;await this.initScallopClient(n.address,t);let l;switch(i){case"SupplyLending":l=Xa.fromData(s);break;case"WithdrawLending":l=Ja.fromData(s);break;case"Borrow":l=_a.fromData(s);break;case"Repay":l=$a.fromData(s);break;case"DepositCollateral":l=qa.fromData(s);break;case"WithdrawCollateral":l=Qa.fromData(s);break;case"OpenObligation":l=Va.fromData(s);break;case"UnstakeSpool":l=za.fromData(s);break;case"ClaimIncentiveReward":l=Ua.fromData(s);break;case"BorrowWithBoost":l=La.fromData(s);break;case"StakeSca":l=si.fromData(s);break;case"ExtendStakePeriod":l=ni.fromData(s);break;case"ExtendPeriodAndStakeMore":l=ei.fromData(s);break;case"RenewExpStakePeriod":l=ii.fromData(s);break;case"WithdrawStakedSca":l=mi.fromData(s);break;case"SupplyAndStakeLending":l=ci.fromData(s);break;case"WithdrawAndUnstakeLending":l=Ga.fromData(s);break;case"RedeemSca":l=ai.fromData(s);break;case"MigrateAndClaim":l=Fa.fromData(s);break;case"BorrowWithReferral":l=ja.fromData(s);break;case"CreateReferralLink":l=ti.fromData(s);break;case"ClaimRevenueReferral":l=Za.fromData(s);break;case"BindReferral":l=Ya.fromData(s);break;case"MigrateScoin":l=Ka.fromData(s);break;case"RepayWithBoost":l=Ha.fromData(s);break;case"MergeVeSca":l=oi.fromData(s);break;case"SplitVeSca":l=ri.fromData(s);break;case"VeScaObligationBindings":{l=li.fromData(s);break}case"TransferVeScaKeys":{l=ui.fromData(s);break}default:throw new Error("not implemented")}return l.build({suiClient:t,account:n,network:o,scallopClient:this.scallopClient})}};var vm=require("@msafe/sui3-utils");var cn=require("@msafe/sui3-utils"),ve=require("@mysten/sui/utils");var ym=require("@suilend/sui-fe");var gm=require("@msafe/sui3-utils"),De=require("@suilend/sdk");var Ne=require("@msafe/sui3-utils"),rn=require("@mysten/bcs"),an=require("@mysten/sui/utils"),_e=require("@suilend/sui-fe"),Ns=Ut(require("bignumber.js"));var di=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isDepositTransaction())return this.decodeDeposit();if(this.isWithdrawTransaction())return this.decodeWithdraw();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayTransaction())return this.decodeRepay();if(this.isClaimTransaction())return this.decodeClaim();if(this.isClaimAndDepositTransaction())return this.decodeClaimAndDeposit();throw new Error("Unknown transaction type")}get inputs(){return console.log("this.transaction.getData().inputs",this.transaction.getData().inputs),this.transaction.getData().inputs}get commands(){return console.log("this.transaction.getData().commands",this.transaction.getData().commands),this.transaction.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}hasDepositTransactionMoveCallCommands(){return!!this.getMoveCallCommand("deposit_liquidity_and_mint_ctokens")&&!!this.getMoveCallCommand("deposit_ctokens_into_obligation")}hasClaimTransactionMoveCallCommands(){return!!this.getMoveCallCommand("claim_rewards")}isDepositTransaction(){return!this.hasClaimTransactionMoveCallCommands()&&this.hasDepositTransactionMoveCallCommands()}isWithdrawTransaction(){return!!this.getMoveCallCommand("withdraw_ctokens")&&!!this.getMoveCallCommand("redeem_ctokens_and_withdraw_liquidity_request")}isBorrowTransaction(){return!!this.getMoveCallCommand("borrow_request")}isRepayTransaction(){return!!this.getMoveCallCommand("repay")}isClaimTransaction(){return this.hasClaimTransactionMoveCallCommands()&&!this.hasDepositTransactionMoveCallCommands()}isClaimAndDepositTransaction(){return this.hasClaimTransactionMoveCallCommands()&&this.hasDepositTransactionMoveCallCommands()}decodeDeposit(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("lending_market::MintEvent"))},t=(0,an.normalizeStructTag)(e.MintEvent.parsedJson.coin_type.name),n=e.MintEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeDeposit",t,n),{txType:Ne.TransactionType.Other,type:"deposit",intentionData:{coinType:t,value:n}}}decodeWithdraw(){let e={withdraw_ctokens:this.getMoveCallCommand("withdraw_ctokens")},t={RedeemEvent:this.simResult.events.find(d=>d.type.includes("lending_market::RedeemEvent"))},n=(0,an.normalizeStructTag)(t.RedeemEvent.parsedJson.coin_type.name),o=t.RedeemEvent.parsedJson.liquidity_amount;console.log("Decoder.decodeWithdraw",n,o);let i=e.withdraw_ctokens.MoveCall.arguments[4].Input,s=new Ns.default((0,rn.toHex)((0,rn.fromBase64)(this.inputs[i].Pure.bytes)),16).toString(),l=s===_e.MAX_U64.toString();return console.log("decodeWithdraw - isMax:",l,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",_e.MAX_U64.toString()),l&&(o=_e.MAX_U64.toString()),{txType:Ne.TransactionType.Other,type:"withdraw",intentionData:{coinType:n,value:o}}}decodeBorrow(){let e={borrow_request:this.getMoveCallCommand("borrow_request")},t={BorrowEvent:this.simResult.events.find(d=>d.type.includes("lending_market::BorrowEvent"))},n=(0,an.normalizeStructTag)(t.BorrowEvent.parsedJson.coin_type.name),o=`${+t.BorrowEvent.parsedJson.liquidity_amount-+t.BorrowEvent.parsedJson.origination_fee_amount}`;console.log("Decoder.decodeBorrow",n,o);let i=e.borrow_request.MoveCall.arguments[4].Input,s=new Ns.default((0,rn.toHex)((0,rn.fromBase64)(this.inputs[i].Pure.bytes)),16).toString(),l=s===_e.MAX_U64.toString();return console.log("decodeBorrow - isMax:",l,"inputIndex:",i,"inputValue:",s,"MAX_U64.toString():",_e.MAX_U64.toString()),l&&(o=_e.MAX_U64.toString()),{txType:Ne.TransactionType.Other,type:"borrow",intentionData:{coinType:n,value:o}}}decodeRepay(){let e={RepayEvent:this.simResult.events.find(o=>o.type.includes("lending_market::RepayEvent"))},t=(0,an.normalizeStructTag)(e.RepayEvent.parsedJson.coin_type.name),n=e.RepayEvent.parsedJson.liquidity_amount;return console.log("Decoder.decodeRepay",t,n),{txType:Ne.TransactionType.Other,type:"repay",intentionData:{coinType:t,value:n}}}decodeClaim(){let e={ClaimReward:this.simResult.events.filter(n=>n.type.includes("lending_market::ClaimReward"))},t={};for(let n=0;n<e.ClaimReward.length;n++){let o=e.ClaimReward[n],i=(0,an.normalizeStructTag)(o.parsedJson.coin_type.name),s=o.parsedJson.liquidity_amount;t[i]=`${+(t[i]??"0")+ +s}`}return console.log("Decoder.decodeClaimRewards",t),{txType:Ne.TransactionType.Other,type:"claim",intentionData:{value:t}}}decodeClaimAndDeposit(){return{txType:Ne.TransactionType.Other,type:"claimAndDeposit",intentionData:this.decodeClaim().intentionData}}};var sm=require("@mysten/sui/transactions");var rm=Ut(require("sort-keys-recursive")),jt=class{constructor(e){this.data=e}serialize(){return JSON.stringify((0,rm.default)(this.data))}};var fi=class a extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:l}=t;if(console.log("BorrowIntention.build",n,o,i,s,l),!s||!l)throw new Error("Obligation not found");let d=new sm.Transaction;return await i.borrowAndSendToUser(o.address,s.id,l.id,this.data.coinType,this.data.value,d),d}static fromData(t){return console.log("BorrowIntention.fromData",t),new a(t)}};var mm=require("@mysten/sui/transactions");var cm=require("@mysten/sui/utils"),sn=require("@suilend/sdk"),lm=require("@suilend/sui-fe"),um=Ut(require("bignumber.js")),lf=(a,e)=>{let t={[sn.Side.DEPOSIT]:[],[sn.Side.BORROW]:[]};return a.lendingMarket.reserves.forEach(n=>{[sn.Side.DEPOSIT,sn.Side.BORROW].forEach(o=>{let i=o===sn.Side.DEPOSIT?n.depositsPoolRewardManager:n.borrowsPoolRewardManager,s=e.userRewardManagers.find(l=>l.poolRewardManagerId===i.id);s&&(t[o]=i.poolRewards.map((l,d)=>({reserveArrayIndex:n.arrayIndex,rewardIndex:BigInt(d),rewardCoinType:(0,cm.normalizeStructTag)(l.coinType.name),side:o})).filter(l=>!(0,lm.isSendPoints)(l.rewardCoinType)&&!!s.rewards[Number(l.rewardIndex)]&&new um.default(s.rewards[Number(l.rewardIndex)].earnedRewards.value.toString()).gt(0)))})}),Object.values(t).flat()},hi=lf;var gi=class a extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:l}=t;if(console.log("ClaimIntention.build",n,o,i,s,l),!s||!l)throw new Error("Obligation not found");let d=new mm.Transaction;return i.claimRewardsAndSendToUser(o.address,s.id,hi(i,l),d),d}static fromData(t){return console.log("ClaimIntention.fromData",t),new a(t)}};var pm=require("@mysten/sui/transactions");var yi=class a extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:l}=t;if(console.log("ClaimAndDepositIntention.build",n,o,i,s,l),!s||!l)throw new Error("Obligation not found");let d=new pm.Transaction;return i.claimRewardsAndDeposit(o.address,s.id,hi(i,l),d),d}static fromData(t){return console.log("ClaimAndDepositIntention.fromData",t),new a(t)}};var dm=require("@mysten/sui/transactions");var bi=class a extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:l}=t;console.log("DepositIntention.build",n,o,i,s,l);let d=new dm.Transaction;return await i.depositIntoObligation(o.address,this.data.coinType,this.data.value,d,s?.id),d}static fromData(t){return console.log("DepositIntention.fromData",t),new a(t)}};var fm=require("@mysten/sui/transactions");var Si=class a extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:l}=t;if(console.log("RepayIntention.build",n,o,i,s,l),!s||!l)throw new Error("Obligation not found");let d=new fm.Transaction;return await i.repayIntoObligation(o.address,l.id,this.data.coinType,this.data.value,d),d}static fromData(t){return console.log("RepayIntention.fromData",t),new a(t)}};var hm=require("@mysten/sui/transactions");var Ti=class a extends jt{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,obligationOwnerCap:s,obligation:l}=t;if(console.log("WithdrawIntention.build",n,o,i,s,l),!s||!l)throw new Error("Obligation not found");let d=new hm.Transaction;return await i.withdrawAndSendToUser(o.address,s.id,l.id,this.data.coinType,this.data.value,d),d}static fromData(t){return console.log("WithdrawIntention.fromData",t),new a(t)}};var Ii=async(a,e)=>{let t=await De.SuilendClient.initialize(De.LENDING_MARKET_ID,De.LENDING_MARKET_TYPE,a),n=await De.SuilendClient.getObligationOwnerCaps(e.address,t.lendingMarket.$typeArgs,a),o=await Promise.all(n.map(i=>De.SuilendClient.getObligation(i.obligationId,t.lendingMarket.$typeArgs,a)));return console.log("XXX getUtils - suilendClient:",t,"obligations:",o,"obligationOwnerCaps:",n),{suilendClient:t,obligationOwnerCaps:n,obligations:o}},wi=class{application="Suilend";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await Ii(n,o));let i=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SuilendAppHelper.deserialize - simResult:",i,"utils:",this.utils,"suiClient:",n);let l=new di(t,i).decode();return{txType:gm.TransactionType.Other,txSubType:l.type,intentionData:l.intentionData}}async build(e){let{network:t,txSubType:n,intentionData:o,suiClient:i,account:s}=e;this.utils||(this.utils=await Ii(i,s));let l;switch(n){case"deposit":l=bi.fromData(o);break;case"withdraw":l=Ti.fromData(o);break;case"borrow":l=fi.fromData(o);break;case"repay":l=Si.fromData(o);break;case"claim":l=gi.fromData(o);break;case"claimAndDeposit":l=yi.fromData(o);break;default:throw new Error("not implemented")}let d=window.localStorage.getItem("obligationId"),b=this.utils.obligations?.find(C=>C.id===d)??this.utils.obligations?.[0],T=this.utils.obligationOwnerCaps?.find(C=>C.obligationId===b?.id);return l.build({network:t,suiClient:i,account:s,suilendClient:this.utils.suilendClient,obligationOwnerCap:T,obligation:b})}};var _s=async(a,e)=>{let t=await Ii(a,e),n=await fetch(`${ym.API_URL}/springsui/lst-info`),o=await n.json();if(n?.statusCode===500)throw new Error("Failed to fetch SpringSui LST data");let s=Object.fromEntries(Object.values(o).map(l=>[l.LIQUID_STAKING_INFO.type,l.LIQUID_STAKING_INFO]));return{...t,LIQUID_STAKING_INFO_MAP:s}};var Ci=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isStakeTransaction())return this.decodeStake();if(this.isStakeAndDepositTransaction())return this.decodeStakeAndDeposit();if(this.isConvertTransaction())return this.decodeConvert();if(this.isConvertAndDepositTransaction())return this.decodeConvertAndDeposit();if(this.isUnstakeTransaction())return this.decodeUnstake();throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}hasSuilendDepositTransactionMoveCallCommands(){return!!this.getMoveCallCommand("deposit_liquidity_and_mint_ctokens")&&!!this.getMoveCallCommand("deposit_ctokens_into_obligation")}hasMintMoveCallCommands(){return!!this.getMoveCallCommand("mint")}hasRedeemMoveCallCommands(){return!!this.getMoveCallCommand("redeem")}isStakeTransaction(){return this.hasMintMoveCallCommands()&&!this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}isStakeAndDepositTransaction(){return this.hasMintMoveCallCommands()&&!this.hasRedeemMoveCallCommands()&&this.hasSuilendDepositTransactionMoveCallCommands()}isConvertTransaction(){return this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}isConvertAndDepositTransaction(){return this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&this.hasSuilendDepositTransactionMoveCallCommands()}isUnstakeTransaction(){return!this.hasMintMoveCallCommands()&&this.hasRedeemMoveCallCommands()&&!this.hasSuilendDepositTransactionMoveCallCommands()}decodeStake(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::MintEvent"))},t=(0,ve.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStake",n),{txType:cn.TransactionType.Other,type:"stake",intentionData:{amount:n,outCoinType:t}}}decodeStakeAndDeposit(){let e={MintEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::MintEvent"))},t=(0,ve.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),n=e.MintEvent.parsedJson.event.sui_amount_in;return console.log("Decoder.decodeStakeAndDeposit",n),{txType:cn.TransactionType.Other,type:"stakeAndDeposit",intentionData:{amount:n,outCoinType:t}}}decodeConvert(){let e={RedeemEvent:this.simResult.events.find(i=>i.type.includes("liquid_staking::RedeemEvent")),MintEvent:this.simResult.events.find(i=>i.type.includes("liquid_staking::MintEvent"))},t=(0,ve.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=(0,ve.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvert",o),{txType:cn.TransactionType.Other,type:"convert",intentionData:{amount:o,inCoinType:t,outCoinType:n}}}decodeConvertAndDeposit(){let e={RedeemEvent:this.simResult.events.find(i=>i.type.includes("liquid_staking::RedeemEvent")),MintEvent:this.simResult.events.find(i=>i.type.includes("liquid_staking::MintEvent"))},t=(0,ve.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=(0,ve.normalizeStructTag)(e.MintEvent.parsedJson.event.typename.name),o=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeConvertAndDeposit",o),{txType:cn.TransactionType.Other,type:"convertAndDeposit",intentionData:{amount:o,inCoinType:t,outCoinType:n}}}decodeUnstake(){let e={RedeemEvent:this.simResult.events.find(o=>o.type.includes("liquid_staking::RedeemEvent"))},t=(0,ve.normalizeStructTag)(e.RedeemEvent.parsedJson.event.typename.name),n=e.RedeemEvent.parsedJson.event.lst_amount_in;return console.log("Decoder.decodeUnstake",n),{txType:cn.TransactionType.Other,type:"unstake",intentionData:{amount:n,inCoinType:t}}}};var Sm=require("@mysten/sui/transactions"),jn=require("@suilend/springsui-sdk");var bm=Ut(require("sort-keys-recursive")),Ht=class{constructor(e){this.data=e}serialize(){return JSON.stringify((0,bm.default)(this.data))}};var xi=class a extends Ht{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:l,obligation:d}=t;console.log("ConvertIntention.build",n,o,i,s,l,d);let b=await jn.LstClient.initialize(n,Object.values(s).find(x=>x.type===this.data.inCoinType)),T=await jn.LstClient.initialize(n,Object.values(s).find(x=>x.type===this.data.outCoinType)),C=new Sm.Transaction;return(0,jn.convertLstsAndRebalanceAndSendToUser)(b,T,C,o.address,this.data.amount),C}static fromData(t){return console.log("ConvertIntention.fromData",t),new a(t)}};var Tm=require("@mysten/sui/transactions"),Di=require("@suilend/sdk"),Un=require("@suilend/springsui-sdk");var ki=class a extends Ht{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:l,obligation:d}=t;console.log("ConvertAndDepositIntention.build",n,o,i,s,l,d);let b=await Un.LstClient.initialize(n,Object.values(s).find(P=>P.type===this.data.inCoinType)),T=await Un.LstClient.initialize(n,Object.values(s).find(P=>P.type===this.data.outCoinType)),C=new Tm.Transaction,{obligationOwnerCapId:x,didCreate:k}=(0,Di.createObligationIfNoneExists)(i,C,l),D=(0,Un.convertLstsAndRebalance)(b,T,C,o.address,this.data.amount);return i.deposit(D,this.data.outCoinType,x,C),k&&(0,Di.sendObligationToUser)(x,o.address,C),C}static fromData(t){return console.log("ConvertAndDepositIntention.fromData",t),new a(t)}};var Im=require("@mysten/sui/transactions"),wm=require("@suilend/springsui-sdk");var vi=class a extends Ht{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:l,obligation:d}=t;console.log("StakeIntention.build",n,o,i,s,l,d);let b=await wm.LstClient.initialize(n,Object.values(s).find(C=>C.type===this.data.outCoinType)),T=new Im.Transaction;return b.mintAmountAndRebalanceAndSendToUser(T,o.address,this.data.amount),T}static fromData(t){return console.log("StakeIntention.fromData",t),new a(t)}};var Cm=require("@mysten/sui/transactions"),Mi=require("@suilend/sdk"),xm=require("@suilend/springsui-sdk");var Ai=class a extends Ht{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:l,obligation:d}=t;console.log("StakeAndDepositIntention.build",n,o,i,s,l,d);let b=await xm.LstClient.initialize(n,Object.values(s).find(D=>D.type===this.data.outCoinType)),T=new Cm.Transaction,{obligationOwnerCapId:C,didCreate:x}=(0,Mi.createObligationIfNoneExists)(i,T,l),k=b.mintAmountAndRebalance(T,o.address,this.data.amount);return i.deposit(k,this.data.outCoinType,C,T),x&&(0,Mi.sendObligationToUser)(C,o.address,T),T}static fromData(t){return console.log("StakeAndDepositIntention.fromData",t),new a(t)}};var km=require("@mysten/sui/transactions"),Dm=require("@suilend/springsui-sdk");var Oi=class a extends Ht{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o,suilendClient:i,LIQUID_STAKING_INFO_MAP:s,obligationOwnerCap:l,obligation:d}=t;console.log("UnstakeIntention.build",n,o,i,s,l,d);let b=await Dm.LstClient.initialize(n,Object.values(s).find(C=>C.type===this.data.inCoinType)),T=new km.Transaction;return b.redeemAmountAndRebalanceAndSendToUser(T,o.address,this.data.amount),T}static fromData(t){return console.log("UnstakeIntention.fromData",t),new a(t)}};var Pi=class{application="SpringSui";supportSDK="@mysten/sui";utils;async deserialize(e){let{transaction:t,suiClient:n,account:o}=e;this.utils||(this.utils=await _s(n,o));let i=await n.devInspectTransactionBlock({sender:o.address,transactionBlock:t});console.log("SpringSuiAppHelper.deserialize",i);let l=new Ci(t,i).decode();return{txType:vm.TransactionType.Other,txSubType:l.type,intentionData:l.intentionData}}async build(e){let{network:t,txSubType:n,intentionData:o,suiClient:i,account:s}=e;this.utils||(this.utils=await _s(i,s));let l;switch(n){case"stake":l=vi.fromData(o);break;case"stakeAndDeposit":l=Ai.fromData(o);break;case"convert":l=xi.fromData(o);break;case"convertAndDeposit":l=ki.fromData(o);break;case"unstake":l=Oi.fromData(o);break;default:throw new Error("not implemented")}return l.build({network:t,suiClient:i,account:s,suilendClient:this.utils.suilendClient,LIQUID_STAKING_INFO_MAP:this.utils.LIQUID_STAKING_INFO_MAP,obligationOwnerCap:this.utils.obligationOwnerCaps?.[0],obligation:this.utils.obligations?.[0]})}};var Om=require("@msafe/sui3-utils");var Ls=require("@msafe/sui3-utils");var Ri=class{constructor(e,t){this.transaction=e;this.simResult=t}decode(){if(this.isMintTransaction()){let e=this.getLiquidityChangeEvent("MintEvent");if(!e)throw new Error("No liquidity change event found. Unable to decode transaction.");let t=e.parsedJson;return console.log("Decoder event data - ",t),this.decodeMint(t)}if(this.isRedeemTransaction()){let e=this.getLiquidityChangeEvent("RedeemEvent");if(!e)throw new Error("No liquidity change event found. Unable to decode transaction.");let t=e.parsedJson;return console.log("Decoder event data - ",t),this.decodeRedeem(t)}throw new Error("Unknown transaction type")}get commands(){return this.transaction.getData().commands}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}getLiquidityChangeEvent(e){return this.simResult.events.find(t=>this.isLiquidityChangeEventType(t.type,e))}isLiquidityChangeEventType(e,t){return e.includes(t)}isMintTransaction(){return!!this.getMoveCallCommand("mint")}isRedeemTransaction(){return!!this.getMoveCallCommand("redeem")}decodeMint(e){let{event:{sui_amount_in:t}}=e;return console.log("Decoder.decodeMint",t),{txType:Ls.TransactionType.Other,type:"mint",intentionData:{amount:t}}}decodeRedeem(e){let{event:{lst_amount_in:t}}=e;return console.log("Decoder.decodeRedeem",t),{txType:Ls.TransactionType.Other,type:"redeem",intentionData:{amount:t}}}};var Am=require("@alphafi/stsui-sdk");var Bi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{amount:o}=this.data,i={lstInfo:"0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5",lstCointype:"0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI"},l=await new Am.LST(i).mint(o,n.address);return l.setGasBudget(1e8),l}static fromData(t){return console.log("MintIntention.fromData",t),new a(t)}};var Mm=require("@alphafi/stsui-sdk");var Ei=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{account:n}=t,{amount:o}=this.data,i={lstInfo:"0x1adb343ab351458e151bc392fbf1558b3332467f23bda45ae67cd355a57fd5f5",lstCointype:"0xd1b72982e40348d069bb1ff701e634c117bb5f741f44dff91e472d3b01461e55::stsui::STSUI"},l=await new Mm.LST(i).redeem(o,n.address);return l.setGasBudget(1e8),l}static fromData(t){return console.log("RedeemIntention.fromData",t),new a(t)}};var Wi=class{application="stsui";supportSDK="@mysten/sui";async deserialize(e){let{transaction:t,suiClient:n}=e,o=await n.devInspectTransactionBlock({sender:t.getData().sender,transactionBlock:t});console.log("StSuiHelper Sim result - ",o);let s=new Ri(t,o).decode();return{txType:Om.TransactionType.Other,txSubType:s.type,intentionData:s.intentionData}}async build(e){let{account:t}=e;console.log("StSui build transaction type",e.txSubType);let n;switch(e.txSubType){case"mint":n=Bi.fromData(e.intentionData);break;case"redeem":n=Ei.fromData(e.intentionData);break;default:throw new Error("build not implemented")}return n.build({account:t})}};var tp=require("@msafe/sui3-utils"),ep=require("turbos-clmm-sdk");var Wt=require("@msafe/sui3-utils"),Le=require("@mysten/bcs"),je=require("@mysten/sui/bcs"),Pm=require("turbos-clmm-sdk");var zt={PackageId:"0x02fe4933f4521250e55a15441096d1d4a38a7311195b0bca126fc0138c1f5a97",Claim:"0x0c822cec42f7ca703696b4232f1c47b348330c23580172a29aab465bc071d894",turbosCoinType:"0x5d1f47ea69bb0de31c313d7acf89b890dbb8991ea8e03c6c355171f84bb1ba4a::turbos::TURBOS"},Gt={PackageId:"0xdee9"};var df=(a,e,t,n)=>{if(a===1)switch(n.findIndex(s=>s===e)){case 0:return[!0,!0];case 1:return[!0,!1];case 2:return[!1,!0];case 3:return[!1,!1];default:throw new Error(`not target: ${e}`)}switch(t.findIndex(i=>i===e)){case 0:return[!0];case 1:return[!1];default:throw new Error(`not target: ${e}`)}},Ni=class{constructor(e,t,n){this.txb=e;this.turbosSdk=t;this.config=n}get transactions(){return this.txb.getData().commands}get swap1Layer(){return[`${this.config.PackageId}::swap_router::swap_a_b`,`${this.config.PackageId}::swap_router::swap_b_a`]}get swap2Layer(){return[`${this.config.PackageId}::swap_router::swap_a_b_b_c`,`${this.config.PackageId}::swap_router::swap_a_b_c_b`,`${this.config.PackageId}::swap_router::swap_b_a_b_c`,`${this.config.PackageId}::swap_router::swap_b_a_c_b`]}async decode(e){if(this.isSwapTransaction())return this.decodeSwap();if(this.isAddLiquidityTransaction())return this.decodeAddLiquidity();if(this.isIncreaseLiquidityTransaction())return this.decodeIncreaseLiquidity(e);if(this.isRemoveLiquidityTransaction())return this.decodeRemoveLiquidity(e);if(this.isDecreaseLiquidityTransaction())return this.decodeDecreaseLiquidity(e);if(this.isRemoveLiquidityWithReturnTransaction())return this.decodeRemoveLiquidityWithReturn(e);if(this.isDecreaseLiquidityWithReturnTransaction())return this.decodeDecreaseLiquidityWithReturn(e);if(this.isCollectFeeTransaction())return this.decodeCollectFee();if(this.isCollectRewardTransaction())return this.decodeCollectReward();if(this.isBurnTransaction())return this.decodeBurn();if(this.isPrixClaimTransaction())return this.decodePrixClaim();if(this.isPrixJoinTransaction())return this.decodePrixJoin();if(this.isSwapExactBaseForQuoteTransaction())return this.decodeSwapExactBaseForQuote();if(this.isSwapExactQuoteForBaseTransaction())return this.decodeSwapExactQuoteForBase();throw new Error("Unknown transaction type")}getMoveCallTransaction(e){return this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===e:!1)}getMoveCallsTransaction(e){return e.every(t=>this.transactions.find(n=>n.$kind==="MoveCall"?`${n.MoveCall.package}::${n.MoveCall.module}::${n.MoveCall.function}`===t:!1))}getSwapMoveCallTransaction(e){return this.transactions.find(t=>{if(t.$kind==="MoveCall"){let n=`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`;return!!e.includes(n)}return!1})}isSwapTransaction(){return!!this.getSwapMoveCallTransaction([...this.swap1Layer,...this.swap2Layer])}isAddLiquidityTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::mint`)}isIncreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::increase_liquidity`)}isDecreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::decrease_liquidity`)}isDecreaseLiquidityWithReturnTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::decrease_liquidity_with_return_`)}isCollectFeeTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::collect`)}isCollectRewardTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::collect_reward`)}isBurnTransaction(){return!!this.getMoveCallTransaction(`${this.config.PackageId}::position_manager::burn`)}isPrixJoinTransaction(){return!!this.getMoveCallTransaction(`${zt.PackageId}::claim::join`)}isPrixClaimTransaction(){return!!this.getMoveCallTransaction(`${zt.PackageId}::claim::claim`)}isRemoveLiquidityTransaction(){return!!this.getMoveCallsTransaction([`${this.config.PackageId}::position_manager::decrease_liquidity`,`${this.config.PackageId}::position_manager::burn`])}isRemoveLiquidityWithReturnTransaction(){return!!this.getMoveCallsTransaction([`${this.config.PackageId}::position_manager::decrease_liquidity_with_return_`,`${this.config.PackageId}::position_manager::burn`])}isSwapExactBaseForQuoteTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::clob_v2::swap_exact_base_for_quote`)}isSwapExactQuoteForBaseTransaction(){return!!this.getMoveCallTransaction(`${Gt.PackageId}::clob_v2::swap_exact_quote_for_base`)}async decodeSwap(){let e=this.transactions.find(k=>k.$kind==="MoveCall"),t=0,n=`${e.MoveCall.package}::${e.MoveCall.module}::${e.MoveCall.function}`;console.log(n,"moveCallTarget"),this.swap2Layer.includes(n)&&(t=1);let o=df(t,n,this.swap1Layer,this.swap2Layer),i=o.map((k,D)=>{let P=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(D)),q=this.helper.decodeInputU128(this.helper.getInputsIndex(4+D+t)),V=this.turbosSdk.math.sqrtPriceX64ToTickIndex(new Pm.BN(q.toString()));return{pool:P,a2b:k,nextTickIndex:V}}),s=o[0]||t===1?e.MoveCall.typeArguments[0]:e.MoveCall.typeArguments[1],l=t===1?e.MoveCall.typeArguments[4]:o[0]?e.MoveCall.typeArguments[1]:e.MoveCall.typeArguments[0],d=this.helper.decodeInputAddress(this.helper.getInputsIndex(6+2*t)),b=this.helper.decodeInputU64(this.helper.getInputsIndex(7+2*t)),T=this.helper.decodeInputBool(this.helper.getInputsIndex(5+2*t)),C=this.helper.decodeInputU64(this.helper.getInputsIndex(2+t)),x=this.helper.decodeInputU64(this.helper.getInputsIndex(3+t));return{txType:Wt.TransactionType.Other,type:"Swap",intentionData:{routes:i,coinTypeA:s,coinTypeB:l,address:d,amountA:T?C:x,amountB:T?x:C,amountSpecifiedIsInput:T,slippage:"0.1",deadline:b}}}decodeAddLiquidity(){console.log(this.helper,"decodeAddLiquidity this.helper");let e=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),t=this.helper.decodeInputAddress(this.helper.getInputsIndex(12)),n=this.helper.decodeInputU64(this.helper.getInputsIndex(8)),o=this.helper.decodeInputU64(this.helper.getInputsIndex(9)),i=this.helper.decodeInputU32(this.helper.getInputsIndex(4)),s=this.helper.decodeInputBool(this.helper.getInputsIndex(5)),l=this.helper.decodeInputU32(this.helper.getInputsIndex(6)),d=this.helper.decodeInputBool(this.helper.getInputsIndex(7)),b=this.helper.decodeInputU64(this.helper.getInputsIndex(13));return{txType:Wt.TransactionType.Other,type:"AddLiquidity",intentionData:{pool:e,slippage:30,address:t,amountA:n,amountB:o,tickLower:s?-i:i,tickUpper:d?-l:l,deadline:b}}}decodeIncreaseLiquidity(e){console.log(this.helper,"decodeIncreaseLiquidity this.helper");let t=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),n=this.helper.decodeOwnedObjectId(this.helper.getInputsIndex(4)),o=this.helper.decodeInputU64(this.helper.getInputsIndex(5)),i=this.helper.decodeInputU64(this.helper.getInputsIndex(6)),s=this.helper.decodeInputU64(this.helper.getInputsIndex(9));return{txType:Wt.TransactionType.Other,type:"IncreaseLiquidity",intentionData:{pool:t,slippage:30,address:e,amountA:o,amountB:i,nft:n,deadline:s}}}decodeDecreaseLiquidity(e){console.log(this.helper,"decodeDecreaseLiquidity this.helper");let t=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),n=this.helper.decodeOwnedObjectId(this.helper.getInputsIndex(2)),o=this.helper.decodeInputU64(this.helper.getInputsIndex(3)),i=this.helper.decodeInputU64(this.helper.getInputsIndex(4)),s=this.helper.decodeInputU64(this.helper.getInputsIndex(5)),l=this.helper.decodeInputU64(this.helper.getInputsIndex(6));return{txType:Wt.TransactionType.Other,type:"DecreaseLiquidity",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:i,amountB:s,slippage:10,address:e,deadline:l}}}decodeDecreaseLiquidityWithReturn(e){console.log(this.helper,"decodeDecreaseLiquidityWithReturn this.helper");let t=this.helper.decodeSharedObjectId(0),n=this.helper.decodeOwnedObjectId(2),o=this.helper.decodeInputU64(3),i=this.helper.decodeInputU64(4),s=this.helper.decodeInputU64(5),l=this.helper.decodeInputU64(6);return{txType:Wt.TransactionType.Other,type:"DecreaseLiquidityWithReturn",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:i,amountB:s,slippage:10,address:e,deadline:l}}}decodeCollectFee(){console.log(this.helper,"decodeCollectFee this.helper");let e=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),t=this.helper.decodeOwnedObjectId(this.helper.getInputsIndex(2)),n=this.helper.decodeInputAddress(this.helper.getInputsIndex(5)),o=this.helper.decodeInputU64(this.helper.getInputsIndex(3)),i=this.helper.decodeInputU64(this.helper.getInputsIndex(4)),s=this.helper.decodeInputU64(this.helper.getInputsIndex(6));return{txType:Wt.TransactionType.Other,type:"CollectFee",intentionData:{pool:e,address:n,collectAmountA:o,collectAmountB:i,nft:t,deadline:s}}}decodeCollectReward(){console.log(this.helper,"decodeCollectReward this.helper");let e=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),t=this.helper.decodeOwnedObjectId(this.helper.getInputsIndex(2)),n=this.helper.decodeInputAddress(this.helper.getInputsIndex(6)),o=[0,0,0];this.collectRewardHelper.forEach(s=>{let l=s.decodeInputU64(s.getInputsIndex(4)),d=s.decodeInputU64(s.getInputsIndex(5));o[l]=d});let i=this.helper.decodeInputU64(7);return{txType:Wt.TransactionType.Other,type:"CollectReward",intentionData:{pool:e,address:n,rewardAmounts:o,nft:t,deadline:i}}}decodeBurn(){console.log(this.helper,"decodeBurn this.helper");let e=this.helper.decodeSharedObjectId(this.helper.getInputsIndex(0)),t=this.helper.decodeOwnedObjectId(this.helper.getInputsIndex(2));return{txType:Wt.TransactionType.Other,type:"Burn",intentionData:{pool:e,nft:t}}}decodeRemoveLiquidity(e){console.log(this.helper,"decodeRemoveLiquidity this.helper");let t=30,n=this.decreaseLiquidityHelper.decodeSharedObjectId(this.decreaseLiquidityHelper.getInputsIndex(0)),o=this.decreaseLiquidityHelper.decodeOwnedObjectId(this.decreaseLiquidityHelper.getInputsIndex(2)),i=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(3)),s=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(4)),l=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(5)),d=this.decreaseLiquidityHelper.decodeInputU64(this.decreaseLiquidityHelper.getInputsIndex(6)),b=[0,0,0];this.collectRewardHelper.forEach(x=>{let k=x.decodeInputU64(x.getInputsIndex(4)),D=x.decodeInputU64(x.getInputsIndex(5));b[k]=D});let T=this.collectFeeHelper.decodeInputU64(this.collectFeeHelper.getInputsIndex(3))||0,C=this.collectFeeHelper.decodeInputU64(this.collectFeeHelper.getInputsIndex(4))||0;return{txType:Wt.TransactionType.Other,type:"RemoveLiquidity",intentionData:{pool:n,decreaseLiquidity:i,nft:o,amountA:(s/(100-t)*100).toFixed(0),amountB:(l/(100-t)*100).toFixed(0),slippage:t,address:e,collectAmountA:T,collectAmountB:C,rewardAmounts:b,deadline:d}}}decodeRemoveLiquidityWithReturn(e){console.log(this.helper,"decodeRemoveLiquidityWithReturn this.helper");let t=this.decreaseLiquidityHelper.decodeSharedObjectId(0),n=this.decreaseLiquidityHelper.decodeOwnedObjectId(2),o=this.decreaseLiquidityHelper.decodeInputU64(3),i=this.decreaseLiquidityHelper.decodeInputU64(4),s=this.decreaseLiquidityHelper.decodeInputU64(5),l=this.decreaseLiquidityHelper.decodeInputU64(6),d=this.collectRewardHelper.map(C=>C.decodeInputU64(5)),b=this.collectFeeHelper.decodeInputU64(3)||0,T=this.collectFeeHelper.decodeInputU64(4)||0;return{txType:Wt.TransactionType.Other,type:"removeLiquidityWithReturn",intentionData:{pool:t,decreaseLiquidity:o,nft:n,amountA:i,amountB:s,slippage:10,address:e,collectAmountA:b,collectAmountB:T,rewardAmounts:d,deadline:l}}}decodePrixClaim(){return{txType:Wt.TransactionType.Other,type:"PrixClaim",intentionData:{}}}decodePrixJoin(){return{txType:Wt.TransactionType.Other,type:"PrixJoin",intentionData:{}}}decodeSwapExactBaseForQuote(){let e=this.swapExactBaseForQuoteHelper.decodeSharedObjectId(0),t=this.swapExactBaseForQuoteHelper.decodeInputU64(3),n=this.swapExactBaseForQuoteHelper.shortTypeArg(0),o=this.swapExactBaseForQuoteHelper.shortTypeArg(1);return{txType:Wt.TransactionType.Other,type:"SwapExactBaseForQuote",intentionData:{poolId:e,amountIn:t,token1:n,token2:o}}}decodeSwapExactQuoteForBase(){let e=this.swapExactQuoteForBaseHelper.decodeSharedObjectId(0),t=this.swapExactQuoteForBaseHelper.decodeInputU64(3),n=this.swapExactQuoteForBaseHelper.shortTypeArg(0),o=this.swapExactQuoteForBaseHelper.shortTypeArg(1);return{txType:Wt.TransactionType.Other,type:"SwapExactQuoteForBase",intentionData:{poolId:e,amountIn:t,token1:n,token2:o}}}get helper(){let e=this.transactions.find(t=>{if(t.$kind==="MoveCall"){let n=`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`;return n!=="0x2::coin::zero"&&n!=="0x0000000000000000000000000000000000000000000000000000000000000002::coin::zero"}return!1});return new Ae(e,this.txb)}get collectRewardHelper(){return this.transactions.filter(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${this.config.PackageId}::position_manager::collect_reward`:!1).map(t=>new Ae(t,this.txb))}get collectFeeHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${this.config.PackageId}::position_manager::collect`:!1);return new Ae(e,this.txb)}get decreaseLiquidityHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${this.config.PackageId}::position_manager::decrease_liquidity`:!1);return new Ae(e,this.txb)}get swapExactBaseForQuoteHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${Gt.PackageId}::clob_v2::swap_exact_base_for_quote`:!1);return new Ae(e,this.txb)}get swapExactQuoteForBaseHelper(){let e=this.transactions.find(t=>t.$kind==="MoveCall"?`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`===`${Gt.PackageId}::clob_v2::swap_exact_quote_for_base`:!1);return new Ae(e,this.txb)}},Ae=class{constructor(e,t){this.moveCall=e;this.txb=t}get inputs(){return this.txb.getData().inputs}getInputsIndex(e){return this.moveCall.MoveCall.arguments[e].Input}decodeSharedObjectId(e){return this.inputs[e].Object?.SharedObject?.objectId||this.inputs[e].UnresolvedObject.objectId}decodeOwnedObjectId(e){return this.inputs[e].Object?.ImmOrOwnedObject?.objectId||this.inputs[e].UnresolvedObject.objectId}decodeInputU128(e){return Number(je.bcs.u128().parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes))))}decodeInputU64(e){return Number(je.bcs.u64().parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes))))}decodeInputU32(e){return Number(je.bcs.u32().parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes))))}decodeInputU8(e){return Number(je.bcs.u8().parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes))))}decodeInputAddress(e){return je.bcs.Address.parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes)))}decodeInputBool(e){return je.bcs.bool().parse(Uint8Array.from((0,Le.fromBase64)(this.inputs[e].Pure.bytes)))}shortTypeArg(e){return this.moveCall.MoveCall.typeArguments[e]}txArg(e){return this.moveCall.MoveCall.arguments[e]}};var Rm=require("turbos-clmm-sdk");var _i=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Rm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:l,slippage:d,tickLower:b,tickUpper:T,deadline:C,txb:x}=this.data;return n.pool.addLiquidity({pool:o,slippage:d,address:i,amountA:s,amountB:l,tickLower:b,tickUpper:T,deadline:C,txb:x})}static fromData(t){return new a(t)}};var Bm=require("turbos-clmm-sdk");var Li=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Bm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,nft:i,txb:s}=this.data;return n.position.burn({pool:o,nft:i,txb:s})}static fromData(t){return new a(t)}};var Em=require("turbos-clmm-sdk");var ji=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Em.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,nft:s,collectAmountA:l,collectAmountB:d,deadline:b,txb:T}=this.data;return n.pool.collectFee({pool:o,address:i,collectAmountA:l,collectAmountB:d,nft:s,deadline:b,txb:T})}static fromData(t){return new a(t)}};var Wm=require("turbos-clmm-sdk");var Ui=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Wm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,nft:s,rewardAmounts:l,deadline:d,txb:b}=this.data;return n.pool.collectReward({pool:o,address:i,rewardAmounts:l,nft:s,deadline:d,txb:b})}static fromData(t){return new a(t)}};var Nm=require("turbos-clmm-sdk");var qi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Nm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{fee:o,address:i,tickLower:s,tickUpper:l,sqrtPrice:d,slippage:b,coinTypeA:T,coinTypeB:C,amountA:x,amountB:k,deadline:D,txb:P}=this.data;return n.pool.createPool({fee:o,amountA:x,amountB:k,address:i,tickLower:s,tickUpper:l,sqrtPrice:d,slippage:b,coinTypeA:T,coinTypeB:C,deadline:D,txb:P})}static fromData(t){return new a(t)}};var _m=require("turbos-clmm-sdk");var Fi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new _m.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:l,slippage:d,nft:b,decreaseLiquidity:T,deadline:C,txb:x}=this.data;return n.pool.decreaseLiquidity({pool:o,slippage:d,address:i,amountA:s,amountB:l,nft:b,decreaseLiquidity:T,deadline:C,txb:x})}static fromData(t){return new a(t)}};var Lm=require("turbos-clmm-sdk");var Ki=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Lm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:l,slippage:d,nft:b,decreaseLiquidity:T,deadline:C}=this.data,{txb:x,coinA:k,coinB:D}=await n.pool.decreaseLiquidityWithReturn({pool:o,slippage:d,address:i,amountA:s,amountB:l,nft:b,decreaseLiquidity:T,deadline:C});return x.transferObjects([k,D],this.data.address),x}static fromData(t){return new a(t)}};var jm=require("turbos-clmm-sdk");var Vi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new jm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{pool:o,address:i,amountA:s,amountB:l,slippage:d,nft:b,deadline:T,txb:C}=this.data;return n.pool.increaseLiquidity({pool:o,slippage:d,address:i,amountA:s,amountB:l,nft:b,deadline:T,txb:C})}static fromData(t){return new a(t)}};var Um=require("@mysten/sui/transactions"),qm=require("@mysten/sui/utils");var $i=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Um.Transaction;return n.moveCall({target:`${zt.PackageId}::claim::claim`,typeArguments:[zt.turbosCoinType],arguments:[n.object(zt.Claim),n.object(qm.SUI_CLOCK_OBJECT_ID)]}),n}static fromData(t){return new a(t)}};var Fm=require("@mysten/sui/transactions");var Hi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Fm.Transaction;return n.moveCall({target:`${zt.PackageId}::claim::join`,typeArguments:[zt.turbosCoinType],arguments:[n.object(zt.Claim)]}),n}static fromData(t){return new a(t)}};var Km=require("@mysten/sui/transactions"),Vm=require("turbos-clmm-sdk");var Xi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Vm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),o=new Km.Transaction;return o=await n.pool.collectFee({txb:o,...this.data}),o=await n.pool.collectReward({txb:o,...this.data}),o=await n.pool.decreaseLiquidity({txb:o,...this.data}),o=await n.position.burn({txb:o,nft:this.data.nft,pool:this.data.pool}),o}static fromData(t){return new a(t)}};var $m=require("turbos-clmm-sdk");var zi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new $m.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{txb:o,coinA:i,coinB:s}=await n.pool.removeLiquidityWithReturn({...this.data});return o.transferObjects([i,s],this.data.address),o}static fromData(t){return new a(t)}};var Hm=require("turbos-clmm-sdk");var Gi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(this.data,"this.data");let n=new Hm.TurbosSdk(t.network.replace("sui:",""),t.suiClient),{routes:o,coinTypeA:i,coinTypeB:s,address:l,amountA:d,amountB:b,slippage:T,amountSpecifiedIsInput:C,deadline:x,txb:k}=this.data;return n.trade.swap({routes:o,coinTypeA:i,coinTypeB:s,address:l,amountA:d,amountB:b,amountSpecifiedIsInput:C,slippage:T,deadline:x,txb:k})}static fromData(t){return new a(t)}};var Ym=require("turbos-clmm-sdk");var js=require("@mysten/sui/transactions"),Us=require("@mysten/sui/utils");var Xm=require("turbos-clmm-sdk");var qn=class{constructor(e){this.turbosSdk=e}async getCoinsData(e,t,n){let o=[],i;do i=await this.turbosSdk.provider.getCoins({owner:e,coinType:t,cursor:i?.nextCursor}),o.push(...i.data);while(i.hasNextPage);let s=[],l=0;return o.sort((d,b)=>Number(b.balance)-Number(d.balance)).some(d=>l>=n?!0:(l+=Number(d.balance),s.push(d),!1)),s}splitAndMergeCoin(e,t,n){if(!e||e.length<1)return[void 0,void 0];if(this.isSuiCoinAddress(e[0].coinType)){let[s]=n.splitCoins(n.gas,[n.pure.u64(t)]);return[s,void 0]}let o=n.object(e[0].coinObjectId);e.length>1&&n.mergeCoins(o,e.slice(1).map(s=>n.object(s.coinObjectId)));let[i]=n.splitCoins(o,[n.pure.u64(t)]);return[i,o]}isSuiCoinAddress(e){return e.toLocaleLowerCase()==="0x2::sui::sui"}async IsAccountCap(e){let t=await this.turbosSdk.provider.getOwnedObjects({owner:e,options:{showContent:!0,showType:!0,showOwner:!0},filter:{StructType:`${Gt.PackageId}::custodian_v2::AccountCap`}});return t.data[0]?.data?(0,Xm.unstable_getObjectId)(t.data[0].data):void 0}createAccount(e){let[t]=e.moveCall({typeArguments:[],target:`${Gt.PackageId}::clob_v2::create_account`,arguments:[]});return t}zero(e,t){return t.moveCall({typeArguments:[e],target:"0x2::coin::zero",arguments:[]})}};var zm=89,Gm=1e6,Qm=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,l=new js.Transaction,d=new qn(s),b=await d.getCoinsData(i,t,o),[T,C]=d.splitAndMergeCoin(b,o,l);if(!T)throw new Error(`Not enough balance: ${t}`);let x=await d.IsAccountCap(i),k=x?l.object(x):d.createAccount(l),[D,P,q]=l.moveCall({typeArguments:[e,t],target:`${Gt.PackageId}::clob_v2::swap_exact_quote_for_base`,arguments:[l.object(String(n)),l.pure.u64(zm),k,l.pure.u64(o),l.object((0,Us.normalizeSuiObjectId)("0x6")),T]});return C&&l.transferObjects([C],l.pure.address(i)),l.transferObjects([D],l.pure.address(i)),l.transferObjects([P],l.pure.address(i)),x||l.transferObjects([k],l.pure.address(i)),l.setSenderIfNotSet(i),l.setGasBudget(Gm),l},Jm=async a=>{let{token1:e,token2:t,poolId:n,amountIn:o,currentAddress:i,turbosSdk:s}=a,l=new js.Transaction,d=new qn(s),b=await d.getCoinsData(i,e,o),[T,C]=d.splitAndMergeCoin(b,o,l);if(!T)throw new Error(`Not enough balance: ${e}`);let x=await d.IsAccountCap(i),k=x?l.object(x):d.createAccount(l),D=d.zero(t,l),[P,q,V]=l.moveCall({typeArguments:[e,t],target:`${Gt.PackageId}::clob_v2::swap_exact_base_for_quote`,arguments:[l.object(String(n)),l.pure.u64(zm),k,l.pure.u64(o),T,D,l.object((0,Us.normalizeSuiObjectId)("0x6"))]});return C&&l.transferObjects([C],l.pure.address(i)),l.transferObjects([P],l.pure.address(i)),l.transferObjects([q],l.pure.address(i)),x||l.transferObjects([k],l.pure.address(i)),l.setSenderIfNotSet(i),l.setGasBudget(Gm),l};var Qi=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Ym.TurbosSdk(t.network.replace("sui:",""),t.suiClient);return await Jm({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};var Zm=require("turbos-clmm-sdk");var Ji=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let n=new Zm.TurbosSdk(t.network.replace("sui:",""),t.suiClient);return await Qm({...this.data,turbosSdk:n,currentAddress:t.account.address})}static fromData(t){return new a(t)}};var Yi=class{application="turbos";supportSDK="@mysten/sui";async deserialize(e){console.log(e,"input");let t=new ep.TurbosSdk(e.network.replace("sui:","")),n=await t.contract.getConfig(),{transaction:o,account:i}=e,l=await new Ni(o,t,n).decode(i.address);return{txType:tp.TransactionType.Other,txSubType:l.type,intentionData:l.intentionData}}async build(e){let{suiClient:t,account:n,network:o}=e;console.log(e.intentionData,"intentionData");let i;switch(e.txSubType){case"CreatePool":i=qi.fromData(e.intentionData);break;case"AddLiquidity":i=_i.fromData(e.intentionData);break;case"IncreaseLiquidity":i=Vi.fromData(e.intentionData);break;case"DecreaseLiquidity":i=Fi.fromData(e.intentionData);break;case"DecreaseLiquidityWithReturn":i=Ki.fromData(e.intentionData);break;case"RemoveLiquidity":i=Xi.fromData(e.intentionData);break;case"removeLiquidityWithReturn":i=zi.fromData(e.intentionData);break;case"CollectFee":i=ji.fromData(e.intentionData);break;case"CollectReward":i=Ui.fromData(e.intentionData);break;case"Burn":i=Li.fromData(e.intentionData);break;case"Swap":i=Gi.fromData(e.intentionData);break;case"PrixJoin":i=Hi.fromData(e.intentionData);break;case"PrixClaim":i=$i.fromData(e.intentionData);break;case"SwapExactBaseForQuote":i=Qi.fromData(e.intentionData);break;case"SwapExactQuoteForBase":i=Ji.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var ip=require("@msafe/sui3-utils");var Zi=require("@msafe/sui3-utils"),qs=require("@mysten/sui.js/bcs"),Me=require("@mysten/sui.js/utils");var ff={packageId:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",poolObjectId:"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf",metadataObjectId:"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",systemStateObjectId:"0x0000000000000000000000000000000000000000000000000000000000000005",certType:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",gasBudget:5e7},vt=ff;var tr=class{constructor(e){this.txb=e}decode(){if(console.log("txb",this.txb),this.isStakeTransaction())return this.decodeStake();if(this.isUnStakeTransaction())return this.decodeUnStake();if(this.isClaimTicketTransaction())return this.decodeClaimTicket();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(e){return this.transactions.find(t=>t.kind==="MoveCall"&&t.target===e)}isStakeTransaction(){return!!this.getMoveCallTransaction(`${vt.packageId}::native_pool::stake`)}isUnStakeTransaction(){return!!this.getMoveCallTransaction(`${vt.packageId}::native_pool::unstake`)}isClaimTicketTransaction(){return!!this.getMoveCallTransaction(`${vt.packageId}::native_pool::burn_ticket`)}decodeStake(){let e=this.transactions[0].amounts[0].value.toNumber();return{txType:Zi.TransactionType.Other,type:"Stake",intentionData:{amount:e}}}decodeUnStake(){let t=this.transactions.find(n=>n.kind==="SplitCoins").amounts[0].value.toNumber();return{txType:Zi.TransactionType.Other,type:"UnStake",intentionData:{amount:t}}}decodeClaimTicket(){let e=this.helper.decodeOwnedObjectId(2);return console.log(e),{txType:Zi.TransactionType.Other,type:"ClaimTicket",intentionData:{ticketId:e}}}get helper(){let e=this.transactions.find(t=>t.kind==="MoveCall"&&t.target.startsWith(vt.packageId));return new Fs(e,this.txb)}},Fs=class a{constructor(e,t){this.moveCall=e;this.txb=t}decodeSharedObjectId(e){let t=this.getInputParam(e);return a.getSharedObjectId(t)}decodeOwnedObjectId(e){let t=this.getInputParam(e);return a.getOwnedObjectId(t)}decodeInputU64(e){let t=this.decodePureArg(e,"u64");return Number(t)}decodeInputU8(e){let t=this.decodePureArg(e,"u8");return Number(t)}decodeInputAddress(e){let t=this.decodePureArg(e,"address");return(0,Me.normalizeSuiAddress)(t)}decodeInputString(e){return this.decodePureArg(e,"string")}decodeInputBool(e){return this.decodePureArg(e,"bool")}decodePureArg(e,t){let n=this.getInputParam(e);return a.getPureInputValue(n,t)}getInputParam(e){let t=this.moveCall.arguments[e];if(t.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[t.index]}static getPureInputValue(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value=="object"&&"Pure"in e.value){let n=e.value.Pure;return qs.bcs.de(t,new Uint8Array(n))}return e.value}static getOwnedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value=="object"){if(!("Object"in e.value)||!("ImmOrOwned"in e.value.Object))throw new Error("not ImmOrOwned");return(0,Me.normalizeSuiAddress)(e.value.Object.ImmOrOwned.objectId)}return(0,Me.normalizeSuiAddress)(e.value)}static getSharedObjectId(e){if(e.type!=="object")throw new Error(`not object argument: ${JSON.stringify(e)}`);if(typeof e.value!="object")return(0,Me.normalizeSuiAddress)(e.value);if(!("Object"in e.value)||!("Shared"in e.value.Object))throw new Error("not Shared");return(0,Me.normalizeSuiAddress)(e.value.Object.Shared.objectId)}static getPureInput(e,t){if(e.type!=="pure")throw new Error("not pure argument");if(typeof e.value!="object")return e.value;if(!("Pure"in e.value))throw new Error("Pure not in value");let n=e.value.Pure;return qs.bcs.de(t,new Uint8Array(n))}typeArg(e){return(0,Me.normalizeStructTag)(this.moveCall.typeArguments[e])}txArg(e){return this.moveCall.arguments[e]}};var np=require("@mysten/sui.js/transactions");var er=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(t);let n=new np.TransactionBlock,{ticketId:o}=this.data;return n.moveCall({target:`${vt.packageId}::native_pool::burn_ticket`,arguments:[n.object(vt.poolObjectId),n.object(vt.systemStateObjectId),n.object(o)]}),n}static fromData(t){return new a(t)}};var op=require("@mysten/sui.js/transactions");var nr=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(t);let n=new op.TransactionBlock,{amount:o}=this.data,[i]=n.splitCoins(n.gas,[n.pure(o)]);return n.moveCall({target:`${vt.packageId}::native_pool::stake`,arguments:[n.object(vt.poolObjectId),n.object(vt.metadataObjectId),n.object(vt.systemStateObjectId),i]}),n}static fromData(t){return new a(t)}};var ap=require("@mysten/sui.js/transactions");var or=class a extends _{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){console.log(t);let n=new ap.TransactionBlock,{amount:o}=this.data,i=(await t.suiClient.getAllCoins({owner:t.account.address,limit:100})).data,[s,...l]=i.filter(T=>T.coinType.split("::")[0]===vt.certType.split("::")[0]),d=n.object(s.coinObjectId);l.length&&n.mergeCoins(d,l.map(T=>n.object(T.coinObjectId)));let b=n.splitCoins(n.object(s.coinObjectId),[n.pure(o)]);return n.moveCall({target:`${vt.packageId}::native_pool::unstake`,arguments:[n.object(vt.poolObjectId),n.object(vt.metadataObjectId),n.object(vt.systemStateObjectId),b]}),n}static fromData(t){return new a(t)}};var ar=class{application="volo";supportSDK="@mysten/sui.js";async deserialize(e){let{transactionBlock:t}=e,o=new tr(t).decode();return{txType:ip.TransactionType.Other,txSubType:o.type,intentionData:o.intentionData}}async build(e){let{suiClient:t,account:n}=e,o;switch(e.txSubType){case"Stake":o=nr.fromData(e.intentionData);break;case"UnStake":o=or.fromData(e.intentionData);break;case"ClaimTicket":o=er.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var bp=require("@msafe/sui3-utils");var Ks=require("@cetusprotocol/common-sdk"),se=require("@msafe/sui3-utils"),ln=require("@mysten/bcs"),un=require("@mysten/sui/bcs");var ir=class{constructor(e,t){this.transaction=e;this.appContext=t}async decode(){if(this.isOpenPositionTx())return this.decodeOpenPositionTx();if(this.isClosePositionTx())return this.decodeClosePositionTx();if(this.isProvideLiquidityTx())return this.decodeProvideLiquidityTx();if(this.isRemoveLiquidityTx())return this.decodeRemoveLiquidityTx();if(this.isCollectRewardsAndFeeTx())return this.decodeCollectRewardsAndFeeTx();if(this.isCollectRewardsTx())return this.decodeCollectRewardsTx();if(this.isCollectFeeTx())return this.decodeCollectFeeTx();if(this.isAggregator7KSwapTx())return this.decodeAggregator7KSwapTx();throw new Error("Unknown transaction type")}decodeOpenPositionTx(){let e=this.getMoveCallCommand("open_position"),t=this.getMoveCallCommand("provide_liquidity_with_fixed_amount");return{txType:se.TransactionType.Other,type:"OpenPosition",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,1)),lowerTick:Number((0,Ks.asIntN)(BigInt(this.getU32(this.getInputIndex(e,2)))).toString()),upperTick:Number((0,Ks.asIntN)(BigInt(this.getU32(this.getInputIndex(e,3)))).toString()),tokenAmount:this.getU64(this.getInputIndex(t,6)),maxAmountTokenA:this.getU64(this.getInputIndex(t,7)),maxAmountTokenB:this.getU64(this.getInputIndex(t,8)),isTokenAFixed:this.getBoolean(this.getInputIndex(t,9))}}}decodeClosePositionTx(){let e=this.getMoveCallCommand("close_position"),t=this.getCollectRewardCallData();return{txType:se.TransactionType.Other,type:"ClosePosition",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,2)),position:this.getOwnedObjectID(this.getInputIndex(e,3)),transferTokensTo:this.getAddress(this.getInputIndex(e,4)),collectRewardTokens:t.map(n=>n.rewardCoinType),collectFeeTokens:this.getTypeArguments(e)}}}decodeProvideLiquidityTx(){let e=this.getMoveCallCommand("provide_liquidity_with_fixed_amount");return{txType:se.TransactionType.Other,type:"ProvideLiquidity",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,2)),position:this.getOwnedObjectID(this.getInputIndex(e,3)),tokenAmount:this.getU64(this.getInputIndex(e,6)),maxAmountTokenA:this.getU64(this.getInputIndex(e,7)),maxAmountTokenB:this.getU64(this.getInputIndex(e,8)),isTokenAFixed:this.getBoolean(this.getInputIndex(e,9))}}}decodeRemoveLiquidityTx(){let e=this.getMoveCallCommand("remove_liquidity");return{txType:se.TransactionType.Other,type:"RemoveLiquidity",intentionData:{pool:this.getSharedObjectID(this.getInputIndex(e,2)),position:this.getOwnedObjectID(this.getInputIndex(e,3)),liquidity:this.getU128(this.getInputIndex(e,4)),maxAmountTokenA:this.getU64(this.getInputIndex(e,5)),maxAmountTokenB:this.getU64(this.getInputIndex(e,6)),transferTokensTo:this.getAddress(this.getInputIndex(e,7)),...this.collectTokens()}}}decodeCollectRewardsTx(){let e=this.getCollectRewardCallData();return{txType:se.TransactionType.Other,type:"CollectRewards",intentionData:{pool:e[0].pool,position:e[0].position,collectRewardTokens:e.map(t=>t.rewardCoinType)}}}decodeCollectFeeTx(){return{txType:se.TransactionType.Other,type:"CollectFee",intentionData:this.getFeeCallData()}}decodeCollectRewardsAndFeeTx(){let e=this.getFeeCallData();return{txType:se.TransactionType.Other,type:"CollectRewardsAndFee",intentionData:{pool:e.pool,position:e.position,...this.collectTokens()}}}getFeeCallData(){let e=this.getMoveCallCommand("collect_fee");return{pool:this.getSharedObjectID(this.getInputIndex(e,2)),position:this.getOwnedObjectID(this.getInputIndex(e,3)),collectFeeTokens:this.getTypeArguments(e)}}getCollectRewardCallData(){let e=[];return this.commands.forEach(t=>{t.$kind==="MoveCall"&&t.MoveCall.function==="collect_reward"&&e.push({pool:this.getSharedObjectID(this.getInputIndex(t,2)),position:this.getOwnedObjectID(this.getInputIndex(t,3)),rewardCoinType:this.getTypeArguments(t)[2]})}),e}async decodeAggregator7KSwapTx(){let{appContext:e}=this;return console.log("appContext",e),{txType:se.TransactionType.Other,type:"Aggregator7KSwap",intentionData:{tokenIn:e.txParams.tokenIn,tokenOut:e.txParams.tokenOut,amountIn:String(e.txParams.amountIn),maxSlippage:String(e.txParams.maxSlippage)}}}collectTokens(){let e=this.getFeeCallData(),t=this.getCollectRewardCallData();return{collectFeeTokens:e.collectFeeTokens,collectRewardTokens:t.map(n=>n.rewardCoinType)}}get commands(){return this.transaction.getData().commands}get inputs(){return this.transaction.getData().inputs}isOpenPositionTx(){return!!this.getMoveCallCommand("open_position")}isProvideLiquidityTx(){return!!this.getMoveCallCommand("provide_liquidity_with_fixed_amount")}isRemoveLiquidityTx(){return!!this.getMoveCallCommand("remove_liquidity")}isCollectRewardsTx(){return!!this.getMoveCallCommand("collect_reward")}isCollectFeeTx(){return!!this.getMoveCallCommand("collect_fee")}isCollectRewardsAndFeeTx(){return this.isCollectRewardsTx()&&this.isCollectFeeTx()}isClosePositionTx(){return!!this.getMoveCallCommand("close_position")}isAggregator7KSwapTx(){return!!this.commands.find(e=>e.$kind==="MoveCall"&&e.MoveCall.function.toLowerCase().includes("settle"))}getMoveCallCommand(e){return this.commands.find(t=>t.$kind==="MoveCall"&&t.MoveCall.function===e)}getSharedObjectID(e){return this.inputs[e].Object.SharedObject.objectId}getOwnedObjectID(e){return this.inputs[e].Object.ImmOrOwnedObject.objectId}getU32(e){return String(un.bcs.u32().parse(Uint8Array.from((0,ln.fromBase64)(this.inputs[e].Pure.bytes))))}getU64(e){return un.bcs.u64().parse(Uint8Array.from((0,ln.fromBase64)(this.inputs[e].Pure.bytes)))}getU128(e){return un.bcs.u128().parse(Uint8Array.from((0,ln.fromBase64)(this.inputs[e].Pure.bytes)))}getBoolean(e){return un.bcs.bool().parse(Uint8Array.from((0,ln.fromBase64)(this.inputs[e].Pure.bytes)))}getAddress(e){return un.bcs.Address.parse(Uint8Array.from((0,ln.fromBase64)(this.inputs[e].Pure.bytes)))}getTypeArguments(e){return e.MoveCall.typeArguments||[]}getInputIndex(e,t){return e.MoveCall.arguments[t].Input}};var up=require("@msafe/sui3-utils");var rr=require("@bluefin-exchange/bluefin7k-aggregator-sdk"),oe=require("@firefly-exchange/library-sui"),lp=require("turbos-clmm-sdk");var sp=require("@firefly-exchange/library-sui"),cp=require("@firefly-exchange/library-sui/dist/src/spot"),rp={rpc:"https://fullnode.mainnet.sui.io/",objects:{GlobalConfig:"0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",BasePackage:"0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267",CurrentPackage:"0x67b34b728c4e28e704dcfecf7c5cf55c7fc593b6c65c20d1836d97c209c1928a"}},le=(a,e)=>{if(a!=="sui:mainnet")throw new Error("Bluefin spot protocol is only available on sui::mainnet");let t=new sp.SuiClient({url:rp.rpc});return new cp.OnChainCalls(t,rp.objects,{address:e.address,isUIWallet:!1})};var Ot=class{static async OpenPosition(e,t,n){let o=le(n,t),i=await o.queryChain.getPool(e.pool),s=this.prototype.buildLiqInput(i,{...e,slippage:0});return await o.openPositionWithFixedAmount(i,e.lowerTick,e.upperTick,s,{returnTx:!0,sender:t.address})}static async provideLiquidity(e,t,n){let o=le(n,t),i=await o.queryChain.getPool(e.pool),s=this.prototype.buildLiqInput(i,e);return await o.provideLiquidityWithFixedAmount(i,e.position,s,{returnTx:!0,sender:t.address})}static async removeLiquidity(e,t,n){let o=le(n,t),i=await o.queryChain.getPool(e.pool);return await o.removeLiquidity(i,e.position,{liquidityAmount:new oe.BN(e.liquidity),tokenMaxA:new oe.BN(e.maxAmountTokenA),tokenMaxB:new oe.BN(e.maxAmountTokenB)},{returnTx:!0,sender:t.address})}static async closePosition(e,t,n){let o=le(n,t),i=await o.queryChain.getPool(e.pool);return await o.closePosition(i,e.position,{returnTx:!0,sender:t.address})}static async collectRewards(e,t,n){let o=le(n,t),i=await o.queryChain.getPool(e.pool);return await o.collectRewards(i,e.position,{rewardCoinsType:e.collectRewardTokens,returnTx:!0,sender:t.address})}static async collectFee(e,t,n){let o=le(n,t),i=await o.queryChain.getPool(e.pool);return await o.collectFee(i,e.position,{returnTx:!0,sender:t.address})}static async collectRewardsAndFee(e,t,n){let o=le(n,t),i=await o.queryChain.getPool(e.pool);return console.log(e.position),await o.collectFeeAndRewards(i,e.position,{returnTx:!0,sender:t.address})}static async aggregator7KSwap(e,t,n){let o=le(n,t),i=await(0,rr.getQuote)({tokenIn:e.tokenIn.address,tokenOut:e.tokenOut.address,amountIn:new lp.Decimal(e.amountIn).mul(10**e.tokenIn.decimals).toString()}),s=await(0,rr.buildTx)({quoteResponse:i,accountAddress:t.address,slippage:e.maxSlippage,commission:{partner:"0x956d6ea2da156a037952964badc51f997cc5581c86a0e05f74049e6effab9347",commissionBps:0}});return s.tx.setSender(t.address),s.tx}buildLiqInput(e,t){return{...oe.ClmmPoolUtil.estLiquidityAndCoinAmountFromOneAmounts(t.lowerTick,t.upperTick,new oe.BN(t.tokenAmount),t.isTokenAFixed,!0,0,new oe.BN(e.current_sqrt_price)),tokenMaxA:new oe.BN(t.maxAmountTokenA),tokenMaxB:new oe.BN(t.maxAmountTokenB)}}};var sr=class a extends w{constructor(t){super(t);this.data=t}txType=up.TransactionType.Other;txSubType="Aggregator7KSwap";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.aggregator7KSwap(this.data,n,o)}static fromData(t){return new a(t)}};var mp=require("@msafe/sui3-utils");var cr=class a extends w{constructor(t){super(t);this.data=t}txType=mp.TransactionType.Other;txSubType="ClosePosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.closePosition(this.data,n,o)}static fromData(t){return new a(t)}};var pp=require("@msafe/sui3-utils");var lr=class a extends w{constructor(t){super(t);this.data=t}txType=pp.TransactionType.Other;txSubType="CollectFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.collectFee(this.data,n,o)}static fromData(t){return new a(t)}};var dp=require("@msafe/sui3-utils");var ur=class a extends w{constructor(t){super(t);this.data=t}txType=dp.TransactionType.Other;txSubType="CollectRewards";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.collectRewards(this.data,n,o)}static fromData(t){return new a(t)}};var fp=require("@msafe/sui3-utils");var mr=class a extends w{constructor(t){super(t);this.data=t}txType=fp.TransactionType.Other;txSubType="CollectRewardsAndFee";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.collectRewardsAndFee(this.data,n,o)}static fromData(t){return new a(t)}};var hp=require("@msafe/sui3-utils");var pr=class a extends w{constructor(t){super(t);this.data=t}txType=hp.TransactionType.Other;txSubType="OpenPosition";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.OpenPosition(this.data,n,o)}static fromData(t){return new a(t)}};var gp=require("@msafe/sui3-utils");var dr=class a extends w{constructor(t){super(t);this.data=t}txType=gp.TransactionType.Other;txSubType="ProvideLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.provideLiquidity(this.data,n,o)}static fromData(t){return new a(t)}};var yp=require("@msafe/sui3-utils");var fr=class a extends w{constructor(t){super(t);this.data=t}txType=yp.TransactionType.Other;txSubType="RemoveLiquidity";async build(t){let{account:n,network:o}=t;return console.log(this.data),Ot.removeLiquidity(this.data,n,o)}static fromData(t){return new a(t)}};var hr=class{application="bluefin";supportSDK="@mysten/sui";async deserialize(e){console.log("Bluefin helper deserialize input: ",e);let{transaction:t,appContext:n}=e,i=await new ir(t,n).decode();return{txType:bp.TransactionType.Other,txSubType:i.type,intentionData:{appContext:e.appContext,...i.intentionData}}}async build(e){let{suiClient:t,account:n,network:o}=e;console.log(e.txSubType);let i;switch(e.txSubType){case"OpenPosition":i=pr.fromData(e.intentionData);break;case"ProvideLiquidity":i=dr.fromData(e.intentionData);break;case"RemoveLiquidity":i=fr.fromData(e.intentionData);break;case"ClosePosition":i=cr.fromData(e.intentionData);break;case"CollectFee":i=lr.fromData(e.intentionData);break;case"CollectRewards":i=ur.fromData(e.intentionData);break;case"CollectRewardsAndFee":i=mr.fromData(e.intentionData);break;case"Aggregator7KSwap":i=sr.fromData(e.intentionData);break;default:throw new Error("not implemented")}return i.build({suiClient:t,account:n,network:o})}};var nd=require("@msafe/sui3-utils");var Ep=require("@mmt-finance/clmm-sdk"),Wp=require("@mysten/sui/transactions");var qe=require("@mmt-finance/clmm-sdk/dist/utils/math/tickMath"),xp=Ut(require("bignumber.js")),R=Ut(Tp());var gf="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Qt=a=>a!=="0x2::sui::SUI"?a:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",yf=async({suiClient:a,address:e,type:t})=>{let n,o=[],i=0;do{try{let s=await a.getCoins({owner:e,coinType:t,cursor:n,limit:50});o=o.concat(s.data),n=s.nextCursor,(!s.hasNextPage||i===8)&&(n=null)}catch(s){console.log(s),n=null}i++}while(n!==null);return o},bf=(a,e)=>{let t=[],n=BigInt(0);for(let o of e)n<a&&!t.includes(o.objectId)&&(t.push(o.objectId),n+=BigInt(o.balance)),o.balance===BigInt(0)&&!t.includes(o.objectId)&&t.push(o.objectId);if(n>=a)return t;throw new Error("Insufficient balance")},Sf=(a,e,t,n)=>{if(a===gf){let[o]=n.splitCoins(n.gas,[n.pure.u64(t)]);return o}else{let o=bf(t,e);o.length>1&&n.mergeCoins(n.object(o[0]),o.slice(1).map(s=>n.object(s)));let[i]=n.splitCoins(n.object(o[0]),[n.pure.u64(t)]);return i}};async function Ip(a,e,t,n,o){let i=await yf({suiClient:a.rpcClient,address:e,type:t});return Sf(Qt(t),i.map(l=>({balance:BigInt(l.balance),objectId:l.coinObjectId})),n,o)}var Ue=(a,e,t,n,o)=>{let i={objectId:n.poolId,tokenXType:n.tokenXType,tokenYType:n.tokenYType};n?.rewarders&&n?.rewarders.length>0&&a.Pool.collectAllRewards(o,i,n.rewarders.map(s=>({coin_type:s.coinType,flow_rate:s.flowRate,reward_amount:s.rewardAmount,rewards_allocated:s.rewardsAllocated,hasEnded:s.hasEnded})),t.objectId,e),a.Pool.collectFee(o,{objectId:n.poolId,tokenXType:n.tokenXType,tokenYType:n.tokenYType,isStable:n.isStable,tickSpacing:n.tickSpacing},t.objectId,e)};async function wp({sdk:a,address:e,positionId:t,pool:n,txb:o,targetCoinType:i,slippage:s}){let l={objectId:n.poolId,tokenXType:n.tokenXType,tokenYType:n.tokenYType},d=n.rewarders.map(T=>T.coinType);d.length>0&&(console.log("claimRewardsAsTargetCoin input",{pool:l,positionId:t,rewarderCoinTypes:d,targetCoinType:i,slippage:s,toAddress:e}),await a.Pool.claimRewardsAs({txb:o,pool:l,positionId:t,rewarderCoinTypes:d,targetCoinType:i,slippage:s,toAddress:e}));let b=await a.Pool.getAllPools();return await a.Pool.claimFeeAs({txb:o,pool:l,positionId:t,targetCoinType:i,slippage:s,toAddress:e,pools:b}),o}function E(a,e,t){let n=a.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}function Tf(a){let e;return(a&1)!==0?e=new R.default("79232123823359799118286999567"):e=new R.default("79228162514264337593543950336"),(a&2)!==0&&(e=E(e.mul(new R.default("79236085330515764027303304731")),96,256)),(a&4)!==0&&(e=E(e.mul(new R.default("79244008939048815603706035061")),96,256)),(a&8)!==0&&(e=E(e.mul(new R.default("79259858533276714757314932305")),96,256)),(a&16)!==0&&(e=E(e.mul(new R.default("79291567232598584799939703904")),96,256)),(a&32)!==0&&(e=E(e.mul(new R.default("79355022692464371645785046466")),96,256)),(a&64)!==0&&(e=E(e.mul(new R.default("79482085999252804386437311141")),96,256)),(a&128)!==0&&(e=E(e.mul(new R.default("79736823300114093921829183326")),96,256)),(a&256)!==0&&(e=E(e.mul(new R.default("80248749790819932309965073892")),96,256)),(a&512)!==0&&(e=E(e.mul(new R.default("81282483887344747381513967011")),96,256)),(a&1024)!==0&&(e=E(e.mul(new R.default("83390072131320151908154831281")),96,256)),(a&2048)!==0&&(e=E(e.mul(new R.default("87770609709833776024991924138")),96,256)),(a&4096)!==0&&(e=E(e.mul(new R.default("97234110755111693312479820773")),96,256)),(a&8192)!==0&&(e=E(e.mul(new R.default("119332217159966728226237229890")),96,256)),(a&16384)!==0&&(e=E(e.mul(new R.default("179736315981702064433883588727")),96,256)),(a&32768)!==0&&(e=E(e.mul(new R.default("407748233172238350107850275304")),96,256)),(a&65536)!==0&&(e=E(e.mul(new R.default("2098478828474011932436660412517")),96,256)),(a&131072)!==0&&(e=E(e.mul(new R.default("55581415166113811149459800483533")),96,256)),(a&262144)!==0&&(e=E(e.mul(new R.default("38992368544603139932233054999993551")),96,256)),E(e,32,256)}function If(a){let e=Math.abs(a),t;return(e&1)!==0?t=new R.default("18445821805675392311"):t=new R.default("18446744073709551616"),(e&2)!==0&&(t=E(t.mul(new R.default("18444899583751176498")),64,256)),(e&4)!==0&&(t=E(t.mul(new R.default("18443055278223354162")),64,256)),(e&8)!==0&&(t=E(t.mul(new R.default("18439367220385604838")),64,256)),(e&16)!==0&&(t=E(t.mul(new R.default("18431993317065449817")),64,256)),(e&32)!==0&&(t=E(t.mul(new R.default("18417254355718160513")),64,256)),(e&64)!==0&&(t=E(t.mul(new R.default("18387811781193591352")),64,256)),(e&128)!==0&&(t=E(t.mul(new R.default("18329067761203520168")),64,256)),(e&256)!==0&&(t=E(t.mul(new R.default("18212142134806087854")),64,256)),(e&512)!==0&&(t=E(t.mul(new R.default("17980523815641551639")),64,256)),(e&1024)!==0&&(t=E(t.mul(new R.default("17526086738831147013")),64,256)),(e&2048)!==0&&(t=E(t.mul(new R.default("16651378430235024244")),64,256)),(e&4096)!==0&&(t=E(t.mul(new R.default("15030750278693429944")),64,256)),(e&8192)!==0&&(t=E(t.mul(new R.default("12247334978882834399")),64,256)),(e&16384)!==0&&(t=E(t.mul(new R.default("8131365268884726200")),64,256)),(e&32768)!==0&&(t=E(t.mul(new R.default("3584323654723342297")),64,256)),(e&65536)!==0&&(t=E(t.mul(new R.default("696457651847595233")),64,256)),(e&131072)!==0&&(t=E(t.mul(new R.default("26294789957452057")),64,256)),(e&262144)!==0&&(t=E(t.mul(new R.default("37481735321082")),64,256)),t}var Cp=(a,e,t)=>{let n=(0,qe.convertI32ToSigned)(t?a+a%(e??1):a-a%(e??1));return n>0?new R.default(Tf(n)):new R.default(If(n))};function kp(a,e){if(!/^(\d+)(\.\d+)?$/.test(a))return BigInt(0);let[t,n=""]=a.split("."),o=(n+"0".repeat(e)).slice(0,e),s=(t+o).replace(/^0+/,"")||"0";return BigInt(s)}async function Oe({address:a,coinType:e,coinAmount:t,coinDecimals:n,tx:o,mmt:i}){let s=kp(t,n),l;return Number(t)?l=await Ip(i,a,Qt(e),s,o):[l]=o.moveCall({target:"0x2::coin::zero",typeArguments:[e],arguments:[]}),l}function Dp({mmt:a,tx:e,poolModel:t,selectedLowTick:n,selectedHighTick:o}){let i=Cp((0,qe.convertI32ToSigned)(n),t.tickSpacing),s=Cp((0,qe.convertI32ToSigned)(o),t.tickSpacing);return a.Position.openPosition(e,t,i.toString(),s.toString())}var wf=(a,e)=>{let n=1e4-Math.floor(e*100);return a*BigInt(n)/BigInt(1e4)};function gr(a,e,t){let n=kp(a,e);return Number(a)===0?BigInt(0):wf(n,t)}async function Fn({poolId:a,currentSqrtPrice:e,tokenX:t,tokenY:n,slippagePercentage:o,isTokenX:i,suiClient:s}){let d=(await s.getObject({id:a,options:{showContent:!0}}))?.data?.content?.fields?.sqrt_price??e,b=qe.TickMath.sqrtPriceX64ToPrice(new R.default(d?.toString()),t.decimals,n.decimals),T=i?(100-o)/100:(100+o)/100,C=qe.TickMath.priceToSqrtPriceX64(b.mul(T),t.decimals,n.decimals);return BigInt(C.toString())}var vp=async(a,e,t,n,o,i,s,l,d,b)=>{let T=await Oe({mmt:a,address:t,coinType:i.tokenX.coinType,coinAmount:n,coinDecimals:i.tokenX.decimals,tx:e}),C=await Oe({mmt:a,address:t,coinType:i.tokenY.coinType,coinAmount:o,coinDecimals:i.tokenY.decimals,tx:e}),x={objectId:s,tokenXType:i.tokenXType,tokenYType:i.tokenYType,tickSpacing:i.tickSpacing},k=Dp({mmt:a,tx:e,poolModel:x,selectedLowTick:l,selectedHighTick:d}),D=gr(n,i.tokenX.decimals,b),P=gr(o,i.tokenY.decimals,b);a.Pool.addLiquidity(e,x,k,T,C,D,P,t),e.transferObjects([k],e.pure.address(t))},Ap=async(a,e,t,n,o,i,s,l,d,b,T)=>{try{let C=await Oe({mmt:a,address:n,coinType:i?s.tokenX.coinType:s.tokenY.coinType,coinAmount:o,coinDecimals:i?s.tokenX.decimals:s.tokenY.decimals,tx:e}),x={objectId:s.poolId,tokenXType:Qt(s.tokenX.coinType),tokenYType:Qt(s.tokenY.coinType),tickSpacing:s.tickSpacing},k=Dp({mmt:a,tx:e,poolModel:x,selectedLowTick:l,selectedHighTick:d}),D=await Fn({suiClient:t,poolId:s.poolId,currentSqrtPrice:s.currentSqrtPrice,tokenX:s.tokenX,tokenY:s.tokenY,slippagePercentage:b,isTokenX:i});await a.Pool.addLiquiditySingleSidedV2({txb:e,pool:x,position:k,inputCoin:C,isXtoY:i,limitSqrtPrice:D,slippagePercentage:T,transferToAddress:n,useMvr:!0}),e.transferObjects([k],e.pure.address(n))}catch(C){console.error(C)}},Mp=async(a,e,t,n,o,i,s,l)=>{let d=await Oe({mmt:a,address:t,coinType:i.tokenX.coinType,coinAmount:n,coinDecimals:i.tokenX.decimals,tx:e}),b=await Oe({mmt:a,address:t,coinType:i.tokenY.coinType,coinAmount:o,coinDecimals:i.tokenY.decimals,tx:e}),T={objectId:i.poolId,tokenXType:i.tokenXType,tokenYType:i.tokenYType,tickSpacing:i.tickSpacing},C=gr(n,i.tokenX.decimals,l),x=gr(o,i.tokenY.decimals,l);a.Pool.addLiquidity(e,T,s,d,b,C,x,t)},Op=async(a,e,t,n,o,i,s,l,d)=>{try{let b=await Oe({mmt:a,address:t,coinType:o?i.tokenX.coinType:i.tokenY.coinType,coinAmount:n,coinDecimals:o?i.tokenX.decimals:i.tokenY.decimals,tx:e}),T={objectId:i.poolId,tokenXType:i.tokenX.coinType,tokenYType:i.tokenY.coinType,tickSpacing:i.tickSpacing},C=await Fn({suiClient:a.rpcClient,poolId:i.poolId,currentSqrtPrice:i.currentSqrtPrice,tokenX:i.tokenX,tokenY:i.tokenY,slippagePercentage:l,isTokenX:o});await a.Pool.addLiquiditySingleSidedV2({txb:e,pool:T,position:s,inputCoin:b,isXtoY:o,limitSqrtPrice:C,slippagePercentage:d,transferToAddress:t})}catch(b){throw console.error(b),b}},Pp=(a,e)=>BigInt(e===100?a:new xp.default(a).multipliedBy(e/100).toFixed(0)),Rp=async(a,e,t,n,o,i)=>{let s=Pp(t.liquidity,o),l=n.tokenX.coinType,d=n.tokenY.coinType,b={objectId:n?.poolId,tokenXType:l,tokenYType:d};a.Pool.removeLiquidity(i,b,t.objectId,s,BigInt(0),BigInt(0),e),Ue(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)},Bp=async({sdk:a,address:e,position:t,pool:n,withdrawPercentage:o,txb:i,targetCoinType:s,slippage:l})=>{let d=Pp(t.liquidity,o),b=Qt(n.tokenX.coinType),T=Qt(n.tokenY.coinType),C=Qt(s)===T,x={objectId:n?.poolId,tokenXType:b,tokenYType:T},{removeLpCoinA:k,removeLpCoinB:D}=a.Pool.removeLiquidity(i,x,t.objectId,d,BigInt(0),BigInt(0)),P=await Fn({suiClient:a.rpcClient,poolId:n.poolId,currentSqrtPrice:n.currentSqrtPrice,tokenX:n.tokenX,tokenY:n.tokenY,isTokenX:C,slippagePercentage:l}),q=C?k:D,V=i.moveCall({target:"0x2::coin::value",arguments:[q],typeArguments:[C?b:T]});i.transferObjects([C?D:k],e),a.Pool.swapV2({txb:i,transferToAddress:e,pool:x,limitSqrtPrice:P,amount:V,inputCoin:q,isXtoY:C}),Ue(a,e,t,n,i),o===100&&a.Position.closePosition(i,t.objectId)};var yr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Ep.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:l,selectedLowTick:d,selectedHighTick:b,slippage:T}=n,C=new Wp.Transaction;return await vp(t,C,o,i,s,l,l.poolId,d,b,T),C}static fromData(t){return new a(t)}};var Np=require("@mmt-finance/clmm-sdk"),_p=require("@mysten/sui/transactions");var br=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Np.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:i,isTokenX:s,pool:l,selectedLowTick:d,selectedHighTick:b,swapSlippage:T,addLiquiditySlippage:C}=n,x=new _p.Transaction;return await Ap(t,x,t.rpcClient,o,i,s,l,d,b,T,C),x}static fromData(t){return new a(t)}};var Lp=require("@mmt-finance/clmm-sdk"),jp=require("@mysten/sui/transactions");var Sr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Lp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,positions:i,pools:s}=n,l=new jp.Transaction;for(let d of i){let b=s.find(T=>T.poolId===d.poolId);b&&Ue(t,o,d,b,l)}return l}static fromData(t){return new a(t)}};var Up=require("@mmt-finance/clmm-sdk"),qp=require("@mysten/sui/transactions");var Tr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Up.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,o=new qp.Transaction;return await Promise.all(n.claimParams.map(i=>wp({...i,sdk:t,txb:o}))),o}static fromData(t){return new a(t)}};var Fp=require("@mmt-finance/clmm-sdk"),Kp=require("@mysten/sui/transactions");var Ir=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Fp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,position:i,pool:s}=n,l=new Kp.Transaction;return Ue(t,o,i,s,l),l}static fromData(t){return new a(t)}};var Vp=require("@mmt-finance/clmm-sdk"),$p=require("@mysten/sui/transactions");var wr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Vp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amountA:i,amountB:s,pool:l,positionObjectId:d,slippage:b}=n,T=new $p.Transaction;return await Mp(t,T,o,i,s,l,d,b),T}static fromData(t){return new a(t)}};var Hp=require("@mmt-finance/clmm-sdk"),Xp=require("@mysten/sui/transactions");var Cr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=Hp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{address:o,amount:i,isTokenX:s,pool:l,positionObjectId:d,swapSlippage:b,addLiquiditySlippage:T}=n,C=new Xp.Transaction;return await Op(t,C,o,i,s,l,d,b,T),C}static fromData(t){return new a(t)}};var zp=require("@mmt-finance/clmm-sdk"),Gp=require("@mysten/sui/transactions");var xr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=zp.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{pool:o,position:i,address:s,withdrawPercentage:l,zapOutOn:d,targetCoinType:b,slippage:T}=n,C=new Gp.Transaction;return d?await Bp({sdk:t,address:s,position:i,pool:o,withdrawPercentage:l,txb:C,targetCoinType:b,slippage:T}):await Rp(t,s,i,o,l,C),C}static fromData(t){return new a(t)}};var Hs=require("@mysten/sui/transactions"),Xs=require("@suilend/springsui-sdk"),$s={id:"0x0431232199873db77a92aa645cd43521437e9cc5c6fff07fd03edb88afe0b25a",type:"0x2b6602099970374cf58a2a1b9d96f005fccceb81e92eb059873baf420eb6c717::x_sui::X_SUI",weightHookId:"0x9e35c13dbb0bc437e8ad5a95ec463622f58763e060552ae8d100db77f4904601"},Qp=async(a,e,t)=>{let n=await Xs.LstClient.initialize(a,$s),o=new Hs.Transaction,[i]=o.splitCoins(o.gas,[BigInt(t)]),s=n.mint(o,i);return o.transferObjects([s],e),o},Jp=async(a,e,t)=>{let n=await Xs.LstClient.initialize(a,$s),o=await a.getCoins({owner:e,coinType:$s.type,limit:1e3});if(o.data.length===0)throw new Error("No lst coins found");let i=new Hs.Transaction,s=o.data[0];o.data.length>1&&i.mergeCoins(s.coinObjectId,o.data.slice(1).map(b=>b.coinObjectId));let[l]=i.splitCoins(s.coinObjectId,[BigInt(t)]),d=n.redeem(i,l);return i.transferObjects([d],e),i};var kr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{params:n}=this.data,{address:o,amount:i}=n;return await Qp(t.suiClient,o,i)}static fromData(t){return new a(t)}};var td=require("@mmt-finance/clmm-sdk"),ed=require("@mysten/sui/transactions");var Yp=require("@mmt-finance/clmm-sdk/dist/utils/poolUtils");var Zp=async(a,e,t,n,o,i,s)=>{let l=await Oe({mmt:a,tx:i,address:o,coinType:t.coinType,coinAmount:n,coinDecimals:t.decimals}),d=i.moveCall({target:"0x2::coin::value",typeArguments:[t.coinType],arguments:[l]}),b=t.coinType;for(let T=0;T<e.length;T+=1){let{poolId:C,tokenX:x,tokenY:k,isStable:D,currentSqrtPrice:P}=e[T],{id:q,isReverse:V}=Yp.mappedMmtV3Pool[C]||{id:C,isReverse:!1},Et=Qt(x.coinType)===Qt(b);Et=V?!Et:Et;let Nt=V?k.coinType:x.coinType,Pt=V?x.coinType:k.coinType,mn=await Fn({poolId:q,tokenX:x,tokenY:k,slippagePercentage:s,isTokenX:Et,suiClient:a.rpcClient,currentSqrtPrice:P}),_t=a.Pool.swap(i,{objectId:q,tokenXType:Nt,tokenYType:Pt,isStable:D},d,l,Et,void 0,mn,!1);i.transferObjects([l],i.pure.address(o)),l=_t,b=Et?Pt:Nt,d=i.moveCall({target:"0x2::coin::value",typeArguments:[b],arguments:[l]})}i.transferObjects([l],i.pure.address(o))};var Dr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(){let t=td.MmtSDK.NEW({network:"mainnet"}),{params:n}=this.data,{route:o,tokenIn:i,amountIn:s,address:l,slippage:d}=n,b=new ed.Transaction;return await Zp(t,o,i,s,l,b,d),b}static fromData(t){return new a(t)}};var vr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{params:n}=this.data,{address:o,amount:i}=n;return await Jp(t.suiClient,o,i)}static fromData(t){return new a(t)}};var Ar=class{application="mmt-dex";supportSDK="@mysten/sui";async deserialize(e){let{appContext:t}=e;return{txType:nd.TransactionType.Other,txSubType:t.action,intentionData:t}}async build(e){let t;switch(e.txSubType){case"Swap":t=Dr.fromData(e.intentionData);break;case"AddLiquidity":t=yr.fromData(e.intentionData);break;case"AddLiquiditySingleSide":t=br.fromData(e.intentionData);break;case"ClaimRewards":t=Ir.fromData(e.intentionData);break;case"ClaimAllRewards":t=Sr.fromData(e.intentionData);break;case"ClaimRewardsAs":t=Tr.fromData(e.intentionData);break;case"RemoveLiquidity":t=xr.fromData(e.intentionData);break;case"StakeXSui":t=kr.fromData(e.intentionData);break;case"UnstakeXSui":t=vr.fromData(e.intentionData);break;case"ManageLiquidity":t=wr.fromData(e.intentionData);break;case"ManageLiquiditySingleSide":t=Cr.fromData(e.intentionData);break;default:throw new Error(`not implemented ${e.txSubType}`)}return t.build({suiClient:e.suiClient})}};var zs=require("@msafe/sui3-utils");var od=require("@mysten/sui/transactions"),ad=require("@nemoprotocol/vaults-sdk");var Mr=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,i=ad.Vaults.createSDK({client:n}),s=new od.Transaction;return await i.deposit(this.data,o.address,s),s}static fromData(t){return new a(t)}};var id=require("@mysten/sui/transactions"),rd=require("@nemoprotocol/vaults-sdk");var Or=class a extends w{constructor(t){super(t);this.data=t}txType;txSubType;async build(t){let{suiClient:n,account:o}=t,i=rd.Vaults.createSDK({client:n}),s=new id.Transaction;return await i.withdraw(this.data,o.address,s),s}static fromData(t){return new a(t)}};var Pr=class{application="nemo";supportSDK="@mysten/sui";async deserialize(e){let t=e.transaction.blockData.transactions.find(o=>o.kind==="MoveCall"&&o.target.toString().toLowerCase().includes("deposit::deposit_non_entry")),n=e.transaction.blockData.transactions.find(o=>o.kind==="MoveCall"&&o.target.toString().toLowerCase().includes("withdraw::withdraw"));if(t)return{txType:zs.TransactionType.Other,txSubType:"VaultDeposit",intentionData:e.appContext};if(n)return{txType:zs.TransactionType.Other,txSubType:"VaultWithdraw",intentionData:e.appContext}}async build(e){let{suiClient:t,account:n}=e;console.log(e.txSubType);let o;switch(e.txSubType){case"VaultDeposit":o=Mr.fromData(e.intentionData);break;case"VaultWithdraw":o=Or.fromData(e.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:t,account:n})}};var Cf=Pa.fromHelpers([new ga,new Da,new da,new va,new $o,new Yi,new Ar,new pi,new ar,new yo,new wi,new Pi,new Jn,new hr,new Wi,new Pr]);
2
2
  //# sourceMappingURL=index.js.map